From 87ffd27e85845c3efa90e6564e00d575ab247255 Mon Sep 17 00:00:00 2001 From: Reinhard Pointner Date: Mon, 25 May 2015 15:14:00 +0000 Subject: [PATCH] * refactor & simplify --- .../net/filebot/subtitle/SubtitleMetrics.java | 4 ---- .../filebot/subtitle/SubtitleUtilities.java | 19 +++++++++++-------- .../ui/subtitle/SubtitleAutoMatchDialog.java | 3 +-- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/source/net/filebot/subtitle/SubtitleMetrics.java b/source/net/filebot/subtitle/SubtitleMetrics.java index 7b6407fd..a56e18b6 100644 --- a/source/net/filebot/subtitle/SubtitleMetrics.java +++ b/source/net/filebot/subtitle/SubtitleMetrics.java @@ -180,10 +180,6 @@ public enum SubtitleMetrics implements SimilarityMetric { } public static SimilarityMetric verificationMetric() { - return EpisodeMetrics.verificationMetric(); - } - - public static SimilarityMetric sanityMetric() { return new MetricCascade(AbsoluteSeasonEpisode, AirDate, new MetricAvg(NameSubstringSequence, Name), getMovieMatchMetric(), OriginalFileName); } diff --git a/source/net/filebot/subtitle/SubtitleUtilities.java b/source/net/filebot/subtitle/SubtitleUtilities.java index cc999e80..e9f65137 100644 --- a/source/net/filebot/subtitle/SubtitleUtilities.java +++ b/source/net/filebot/subtitle/SubtitleUtilities.java @@ -185,13 +185,8 @@ public final class SubtitleUtilities { // first match everything as best as possible, then filter possibly bad matches Matcher matcher = new Matcher(files, subtitles, false, metrics); - SimilarityMetric sanity = SubtitleMetrics.sanityMetric(); - float minSanitySimilarity = 0.1f; - for (Match it : matcher.match()) { - if (sanity.getSimilarity(it.getValue(), it.getCandidate()) >= minSanitySimilarity) { - subtitleByVideo.put(it.getValue(), it.getCandidate()); - } + subtitleByVideo.put(it.getValue(), it.getCandidate()); } return subtitleByVideo; @@ -237,8 +232,16 @@ public final class SubtitleUtilities { } try { - return matchSubtitles(singleton(file), subtitles).entrySet().iterator().next().getValue(); - } catch (NoSuchElementException e) { + // add other possible matches to the options + SimilarityMetric sanity = SubtitleMetrics.verificationMetric(); + float minMatchSimilarity = strict ? 0.8f : 0.2f; + + // first match everything as best as possible, then filter possibly bad matches + for (Entry it : matchSubtitles(singleton(file), subtitles).entrySet()) { + if (sanity.getSimilarity(it.getKey(), it.getValue()) >= minMatchSimilarity) { + return it.getValue(); + } + } return null; } catch (InterruptedException e) { throw new RuntimeException(e); diff --git a/source/net/filebot/ui/subtitle/SubtitleAutoMatchDialog.java b/source/net/filebot/ui/subtitle/SubtitleAutoMatchDialog.java index 11692624..b2600767 100644 --- a/source/net/filebot/ui/subtitle/SubtitleAutoMatchDialog.java +++ b/source/net/filebot/ui/subtitle/SubtitleAutoMatchDialog.java @@ -945,8 +945,7 @@ class SubtitleAutoMatchDialog extends JDialog { @Override public float getMatchProbabilty(File videoFile, SubtitleDescriptor descriptor) { - SimilarityMetric metric = SubtitleMetrics.sanityMetric(); - return 0.9f * metric.getSimilarity(videoFile, descriptor); + return SubtitleMetrics.verificationMetric().getSimilarity(videoFile, descriptor); } }