diff --git a/source/net/sourceforge/filebot/subtitle/SubtitleUtilities.java b/source/net/sourceforge/filebot/subtitle/SubtitleUtilities.java index 5620f4e3..ca3ebb7e 100644 --- a/source/net/sourceforge/filebot/subtitle/SubtitleUtilities.java +++ b/source/net/sourceforge/filebot/subtitle/SubtitleUtilities.java @@ -25,7 +25,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import net.sourceforge.filebot.similarity.EpisodeMetrics; import net.sourceforge.filebot.similarity.Match; import net.sourceforge.filebot.similarity.Matcher; import net.sourceforge.filebot.similarity.MetricAvg; @@ -49,12 +48,21 @@ public final class SubtitleUtilities { // optimize for generic media <-> subtitle matching SimilarityMetric[] metrics = new SimilarityMetric[] { EpisodeFunnel, EpisodeBalancer, SubstringSequence, new MetricCascade(SubstringSequence, Name), Numeric, new NameSimilarityMetric() }; + // subtitle verification metric specifically excluding SxE mismatches + SimilarityMetric absoluteSeasonEpisode = new SimilarityMetric() { + + @Override + public float getSimilarity(Object o1, Object o2) { + return SeasonEpisode.getSimilarity(o1, o2) < 1 ? -1 : 1; + } + }; + SimilarityMetric sanity = new MetricCascade(FileSize, FileName, absoluteSeasonEpisode, AirDate, Title, Name); + // first match everything as best as possible, then filter possibly bad matches Matcher matcher = new Matcher(files, subtitles, false, metrics); - SimilarityMetric sanity = EpisodeMetrics.verificationMetric(); for (Match it : matcher.match()) { - if (sanity.getSimilarity(it.getValue(), it.getCandidate()) >= (strict ? 0.9f : 0.5f)) { + if (sanity.getSimilarity(it.getValue(), it.getCandidate()) >= (strict ? 0.9f : 0.6f)) { subtitleByVideo.put(it.getValue(), it.getCandidate()); } } diff --git a/source/net/sourceforge/filebot/ui/subtitle/SubtitleAutoMatchDialog.java b/source/net/sourceforge/filebot/ui/subtitle/SubtitleAutoMatchDialog.java index 44c341ca..43c4b777 100644 --- a/source/net/sourceforge/filebot/ui/subtitle/SubtitleAutoMatchDialog.java +++ b/source/net/sourceforge/filebot/ui/subtitle/SubtitleAutoMatchDialog.java @@ -794,7 +794,7 @@ class SubtitleAutoMatchDialog extends JDialog { throw e; } catch (Exception e) { // log and ignore - Logger.getLogger(SubtitleAutoMatchDialog.class.getName()).log(Level.WARNING, e.getMessage(), e); + Logger.getLogger(SubtitleAutoMatchDialog.class.getName()).log(Level.WARNING, e.getMessage()); } } @@ -997,7 +997,7 @@ class SubtitleAutoMatchDialog extends JDialog { // still no luck... na women ye mei banfa if (subtitles.isEmpty()) { - throw new Exception("Unable to lookup subtitles:" + querySet); + throw new Exception("Unable to lookup subtitles: " + querySet); } }