* update patters to make 1x01-1x02 take precendence over 1x01-02 pattern
This commit is contained in:
parent
b365bf48c3
commit
56424aafe1
|
@ -26,7 +26,7 @@ public class SeasonEpisodeMatcher {
|
|||
|
||||
public SeasonEpisodeMatcher(SeasonEpisodeFilter sanity, boolean strict) {
|
||||
// define variables
|
||||
SeasonEpisodePattern Season_00_Episode_00, S00E00, SxE, Dot101, EP0, Num101_TOKEN, E1of2, Num101_SUBSTRING;
|
||||
SeasonEpisodePattern Season_00_Episode_00, S00E00, SxE1_SxE2, SxE, Dot101, EP0, Num101_TOKEN, E1of2, Num101_SUBSTRING;
|
||||
|
||||
// match patterns like Season 01 Episode 02, ...
|
||||
Season_00_Episode_00 = new SeasonEpisodePattern(null, "(?<!\\p{Alnum})(?i:season|series)[^\\p{Alnum}]{0,3}(\\d{1,4})[^\\p{Alnum}]{0,3}(?i:episode)[^\\p{Alnum}]{0,3}(\\d{1,4})[^\\p{Alnum}]{0,3}(?!\\p{Digit})");
|
||||
|
@ -45,6 +45,20 @@ public class SeasonEpisodeMatcher {
|
|||
}
|
||||
};
|
||||
|
||||
// match patterns 1x01-1x02, ...
|
||||
SxE1_SxE2 = new SeasonEpisodePattern(sanity, "(?<!\\p{Alnum})(\\d{1,2}x\\d{2}([-._ ]\\d{1,2}x\\d{2})+)(?!\\p{Digit})") {
|
||||
|
||||
@Override
|
||||
protected Collection<SxE> process(MatchResult match) {
|
||||
List<SxE> matches = new ArrayList<SxE>(2);
|
||||
String[] num = match.group(0).split("\\D+");
|
||||
for (int i = 0; i < num.length; i += 2) {
|
||||
matches.add(new SxE(num[i], num[i + 1])); // SxE-SxE-SxE
|
||||
}
|
||||
return matches;
|
||||
}
|
||||
};
|
||||
|
||||
// match patterns like 1x01, 1.02, ..., 1x01a, 10x01, 10.02, ... 1x01-02-03-04, 1x01x02x03x04 ...
|
||||
SxE = new SeasonEpisodePattern(sanity, "(?<!\\p{Alnum})(\\d{1,2})[xe](((?<=[^._ ])\\d{2,3}(\\D|$))+)") {
|
||||
|
||||
|
@ -129,9 +143,9 @@ public class SeasonEpisodeMatcher {
|
|||
|
||||
// only use S00E00 and SxE pattern in strict mode
|
||||
if (strict) {
|
||||
patterns = new SeasonEpisodeParser[] { Season_00_Episode_00, S00E00, SxE, Dot101 };
|
||||
patterns = new SeasonEpisodeParser[] { Season_00_Episode_00, S00E00, SxE1_SxE2, SxE, Dot101 };
|
||||
} else {
|
||||
patterns = new SeasonEpisodeParser[] { Season_00_Episode_00, S00E00, SxE, Dot101, new SeasonEpisodeUnion(EP0, Num101_TOKEN, E1of2), Num101_SUBSTRING };
|
||||
patterns = new SeasonEpisodeParser[] { Season_00_Episode_00, S00E00, SxE1_SxE2, SxE, Dot101, new SeasonEpisodeUnion(EP0, Num101_TOKEN, E1of2), Num101_SUBSTRING };
|
||||
}
|
||||
|
||||
// season folder pattern for complementing partial sxe info from filename
|
||||
|
|
|
@ -26,8 +26,11 @@ public class SeasonEpisodeMatcherTest {
|
|||
assertEquals(asList(new SxE(null, 01), new SxE(1, 01), new SxE(null, 101)), matcher.match("alias.101.Part1"));
|
||||
assertEquals(asList(new SxE(null, 01)), matcher.match("Documentaries.1of6"));
|
||||
|
||||
// multiple values
|
||||
assertEquals(new SxE(1, 2), matcher.match("Test.42.s01e01.s01e02.300").get(1));
|
||||
// multi-episode numbers
|
||||
assertEquals("[1x01, 1x02]", matcher.match("Test.42.s01e01.s01e02.300").toString());
|
||||
assertEquals("[1x01, 1x02]", matcher.match("1x01-02").toString());
|
||||
assertEquals("[3x11, 3x12, 3x13, 3x14]", matcher.match("03x11-03x12-03x13-03x14").toString());
|
||||
assertEquals("[9x09, 9x10]", matcher.match("09x09-09x10").toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Reference in New Issue