* avoid Joe.720p style patterns being recognized as Joe.S7E20 like series patterns
This commit is contained in:
parent
2dee2c49a0
commit
a634abdb85
|
@ -28,6 +28,15 @@ public class SmartSeasonEpisodeMatcher extends SeasonEpisodeMatcher {
|
||||||
return super.match(clean(name));
|
return super.match(clean(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SxE> match(File file) {
|
||||||
|
return super.match(new File(clean(file.getPath())));
|
||||||
|
}
|
||||||
|
|
||||||
|
public String head(String name) {
|
||||||
|
return super.head(clean(name));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected List<String> tokenizeTail(File file) {
|
protected List<String> tokenizeTail(File file) {
|
||||||
List<String> tail = super.tokenizeTail(file);
|
List<String> tail = super.tokenizeTail(file);
|
||||||
|
|
|
@ -217,6 +217,14 @@ public class SeasonEpisodeMatcher {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String head(String name) {
|
||||||
|
int seasonEpisodePosition = find(name, 0);
|
||||||
|
if (seasonEpisodePosition > 0) {
|
||||||
|
return name.substring(0, seasonEpisodePosition).trim();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public static class SxE {
|
public static class SxE {
|
||||||
|
|
||||||
public static final int UNDEFINED = -1;
|
public static final int UNDEFINED = -1;
|
||||||
|
|
|
@ -24,6 +24,7 @@ import java.util.TreeMap;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import net.filebot.media.SmartSeasonEpisodeMatcher;
|
||||||
import net.filebot.similarity.SeasonEpisodeMatcher.SxE;
|
import net.filebot.similarity.SeasonEpisodeMatcher.SxE;
|
||||||
import net.filebot.util.FileUtilities;
|
import net.filebot.util.FileUtilities;
|
||||||
|
|
||||||
|
@ -41,7 +42,7 @@ public class SeriesNameMatcher {
|
||||||
}
|
}
|
||||||
|
|
||||||
public SeriesNameMatcher(Locale locale, boolean strict) {
|
public SeriesNameMatcher(Locale locale, boolean strict) {
|
||||||
seasonEpisodeMatcher = new SeasonEpisodeMatcher(SeasonEpisodeMatcher.DEFAULT_SANITY, strict);
|
seasonEpisodeMatcher = new SmartSeasonEpisodeMatcher(SeasonEpisodeMatcher.DEFAULT_SANITY, strict);
|
||||||
dateMatcher = new DateMatcher();
|
dateMatcher = new DateMatcher();
|
||||||
nameSimilarityMetric = new NameSimilarityMetric();
|
nameSimilarityMetric = new NameSimilarityMetric();
|
||||||
|
|
||||||
|
@ -86,9 +87,9 @@ public class SeriesNameMatcher {
|
||||||
// focus chars before the SxE / Date pattern when matching by common word sequence
|
// focus chars before the SxE / Date pattern when matching by common word sequence
|
||||||
String[] focus = Arrays.copyOf(names, names.length);
|
String[] focus = Arrays.copyOf(names, names.length);
|
||||||
for (int i = 0; i < focus.length; i++) {
|
for (int i = 0; i < focus.length; i++) {
|
||||||
int sxePos = seasonEpisodeMatcher.find(focus[i], 0);
|
String beforeSxE = seasonEpisodeMatcher.head(focus[i]);
|
||||||
if (sxePos >= 0) {
|
if (beforeSxE != null && beforeSxE.length() > 0) {
|
||||||
focus[i] = focus[i].substring(0, sxePos);
|
focus[i] = beforeSxE;
|
||||||
} else {
|
} else {
|
||||||
int datePos = dateMatcher.find(focus[i], 0);
|
int datePos = dateMatcher.find(focus[i], 0);
|
||||||
if (datePos >= 0) {
|
if (datePos >= 0) {
|
||||||
|
@ -189,10 +190,10 @@ public class SeriesNameMatcher {
|
||||||
* @return a substring of the given name that ends before the first occurrence of a season episode pattern, or null if there is no such pattern
|
* @return a substring of the given name that ends before the first occurrence of a season episode pattern, or null if there is no such pattern
|
||||||
*/
|
*/
|
||||||
public String matchByEpisodeIdentifier(String name) {
|
public String matchByEpisodeIdentifier(String name) {
|
||||||
int seasonEpisodePosition = seasonEpisodeMatcher.find(name, 0);
|
|
||||||
if (seasonEpisodePosition > 0) {
|
|
||||||
// series name ends at the first season episode pattern
|
// series name ends at the first season episode pattern
|
||||||
return normalizePunctuation(name.substring(0, seasonEpisodePosition));
|
String seriesName = seasonEpisodeMatcher.head(name);
|
||||||
|
if (seriesName != null && seriesName.length() > 0) {
|
||||||
|
return normalizePunctuation(seriesName);
|
||||||
}
|
}
|
||||||
|
|
||||||
int datePosition = dateMatcher.find(name, 0);
|
int datePosition = dateMatcher.find(name, 0);
|
||||||
|
|
Loading…
Reference in New Issue