Fine-tune release group matching and cleanup
This commit is contained in:
parent
91ed090da1
commit
d88fd57e9f
|
@ -95,19 +95,19 @@ public class ReleaseInfo {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getReleaseGroup(String... strings) throws Exception {
|
public String getReleaseGroup(String... name) throws Exception {
|
||||||
// check file and folder for release group names
|
// check file and folder for release group names
|
||||||
String[] groups = releaseGroup.get();
|
String[] groups = releaseGroup.get();
|
||||||
|
|
||||||
// try case-sensitive match
|
// try case-sensitive match
|
||||||
String match = matchLast(getReleaseGroupPattern(true), groups, strings);
|
String match = matchLast(getReleaseGroupPattern(true), groups, name);
|
||||||
|
|
||||||
if (match != null) {
|
if (match != null) {
|
||||||
return match;
|
return match;
|
||||||
}
|
}
|
||||||
|
|
||||||
// try case-insensitive match
|
// try case-insensitive match
|
||||||
return matchLast(getReleaseGroupPattern(false), groups, strings);
|
return matchLast(getReleaseGroupPattern(false), groups, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Pattern languageTag;
|
private Pattern languageTag;
|
||||||
|
@ -177,8 +177,8 @@ public class ReleaseInfo {
|
||||||
Pattern resolution = getResolutionPattern();
|
Pattern resolution = getResolutionPattern();
|
||||||
Pattern queryBlacklist = getBlacklistPattern();
|
Pattern queryBlacklist = getBlacklistPattern();
|
||||||
|
|
||||||
stopwords[b] = new Pattern[] { languageTag, videoSource, videoTags, videoFormat, resolution, stereoscopic3d, languageSuffix };
|
stopwords[b] = new Pattern[] { languageSuffix, languageTag, videoSource, videoTags, videoFormat, resolution, stereoscopic3d };
|
||||||
blacklist[b] = new Pattern[] { releaseGroupTrim, queryBlacklist, languageTag, clutterBracket, releaseGroup, videoSource, videoTags, videoFormat, resolution, stereoscopic3d, languageSuffix };
|
blacklist[b] = new Pattern[] { languageSuffix, releaseGroupTrim, queryBlacklist, languageTag, clutterBracket, releaseGroup, videoSource, videoTags, videoFormat, resolution, stereoscopic3d };
|
||||||
}
|
}
|
||||||
|
|
||||||
return items.stream().map(it -> {
|
return items.stream().map(it -> {
|
||||||
|
@ -324,8 +324,13 @@ public class ReleaseInfo {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Pattern getReleaseGroupPattern(boolean strict) throws Exception {
|
public Pattern getReleaseGroupPattern(boolean strict) throws Exception {
|
||||||
// pattern matching any release group name enclosed in separators
|
// match 1..N group patterns
|
||||||
return compile("((?<!\\p{Alnum})" + or(releaseGroup.get()) + "(?!\\p{Alnum}|[^\\p{Alnum}](19|20)\\d{2})($|[\\p{Punct}]))+", strict ? 0 : CASE_INSENSITIVE | UNICODE_CHARACTER_CLASS);
|
String group = "((?<!\\p{Alnum})" + or(releaseGroup.get()) + "(?!\\p{Alnum})[\\p{Punct}]??)+";
|
||||||
|
|
||||||
|
// group pattern at beginning or ending of the string
|
||||||
|
String[] groupHeadTail = { "(?<=^[^\\p{Alnum}]*)" + group, group + "(?=[\\p{Alpha}\\p{Punct}]*$)" };
|
||||||
|
|
||||||
|
return compile(or(groupHeadTail), strict ? 0 : CASE_INSENSITIVE | UNICODE_CHARACTER_CLASS);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Pattern getReleaseGroupTrimPattern() throws Exception {
|
public Pattern getReleaseGroupTrimPattern() throws Exception {
|
||||||
|
|
|
@ -21,6 +21,17 @@ public class ReleaseInfoTest {
|
||||||
assertEquals("aXXo", info.getReleaseGroup("Jurassic.Park[1993]DvDrip-aXXo"));
|
assertEquals("aXXo", info.getReleaseGroup("Jurassic.Park[1993]DvDrip-aXXo"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getReleaseGroupWithSubs() throws Exception {
|
||||||
|
assertEquals("aXXo", info.getReleaseGroup("Jurassic.Park[1993]DvDrip-aXXo.eng-forced"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getReleaseGroupFalseNegative() throws Exception {
|
||||||
|
assertEquals(null, info.getReleaseGroup("The.aXXo.Movie.2005"));
|
||||||
|
assertEquals(null, info.getReleaseGroup("The aXXo Movie"));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getClutterBracketPattern() throws Exception {
|
public void getClutterBracketPattern() throws Exception {
|
||||||
assertEquals("John [2016] (ENG)", clean(info.getClutterBracketPattern(true), "John [2016] [Action, Drama] (ENG)"));
|
assertEquals("John [2016] (ENG)", clean(info.getClutterBracketPattern(true), "John [2016] [Action, Drama] (ENG)"));
|
||||||
|
|
Loading…
Reference in New Issue