* fix 001 => 0xSpecial 1 false match issues
@see http://www.filebot.net/forums/viewtopic.php?f=5&t=1399
This commit is contained in:
parent
e6ce233d10
commit
deb37c8ffd
|
@ -1,7 +1,6 @@
|
||||||
package net.sourceforge.filebot.similarity;
|
package net.sourceforge.filebot.similarity;
|
||||||
|
|
||||||
import static java.lang.Math.*;
|
import static java.lang.Math.*;
|
||||||
import static java.util.Arrays.*;
|
|
||||||
import static java.util.Collections.*;
|
import static java.util.Collections.*;
|
||||||
import static java.util.regex.Pattern.*;
|
import static java.util.regex.Pattern.*;
|
||||||
import static net.sourceforge.filebot.Settings.*;
|
import static net.sourceforge.filebot.Settings.*;
|
||||||
|
@ -62,15 +61,22 @@ public enum EpisodeMetrics implements SimilarityMetric {
|
||||||
if (object instanceof Episode) {
|
if (object instanceof Episode) {
|
||||||
Episode episode = (Episode) object;
|
Episode episode = (Episode) object;
|
||||||
|
|
||||||
if (episode.getSpecial() != null) {
|
|
||||||
return singleton(new SxE(0, episode.getSpecial()));
|
|
||||||
}
|
|
||||||
|
|
||||||
// get SxE from episode, both SxE for season/episode numbering and SxE for absolute episode numbering
|
// get SxE from episode, both SxE for season/episode numbering and SxE for absolute episode numbering
|
||||||
SxE sxe = new SxE(episode.getSeason(), episode.getEpisode());
|
Set<SxE> sxe = new HashSet<SxE>(2);
|
||||||
SxE abs = new SxE(null, episode.getAbsolute());
|
|
||||||
|
|
||||||
result = (abs.episode < 0 || sxe.equals(abs)) ? singleton(sxe) : asList(sxe, abs);
|
// default SxE numbering
|
||||||
|
if (episode.getEpisode() != null) {
|
||||||
|
sxe.add(new SxE(episode.getSeason(), episode.getEpisode()));
|
||||||
|
}
|
||||||
|
// absolute numbering
|
||||||
|
if (episode.getAbsolute() != null) {
|
||||||
|
sxe.add(new SxE(null, episode.getAbsolute()));
|
||||||
|
}
|
||||||
|
// 0xSpecial numbering
|
||||||
|
if (episode.getSpecial() != null) {
|
||||||
|
sxe.add(new SxE(0, episode.getSpecial()));
|
||||||
|
}
|
||||||
|
result = sxe;
|
||||||
} else {
|
} else {
|
||||||
result = super.parse(object);
|
result = super.parse(object);
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,12 +90,14 @@ public class SeasonEpisodeMatcher {
|
||||||
protected Collection<SxE> process(MatchResult match) {
|
protected Collection<SxE> process(MatchResult match) {
|
||||||
Set<SxE> sxe = new LinkedHashSet<SxE>(2);
|
Set<SxE> sxe = new LinkedHashSet<SxE>(2);
|
||||||
|
|
||||||
// interpret match as season and episode
|
// interpret match as season and episode, but ignore 001 => 0x01 Season 0 matches
|
||||||
|
if (match.group(1).length() > 0 && Integer.parseInt(match.group(1)) > 0) {
|
||||||
for (int i = 2; i <= match.groupCount(); i++) {
|
for (int i = 2; i <= match.groupCount(); i++) {
|
||||||
if (match.group(i) != null) {
|
if (match.group(i) != null) {
|
||||||
sxe.add(new SxE(match.group(1), match.group(i)));
|
sxe.add(new SxE(match.group(1), match.group(i)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// interpret match both ways, as SxE match as well as episode number only match if it's not an double episode
|
// interpret match both ways, as SxE match as well as episode number only match if it's not an double episode
|
||||||
if (sxe.size() < 2) {
|
if (sxe.size() < 2) {
|
||||||
|
|
Loading…
Reference in New Issue