diff --git a/source/net/sourceforge/filebot/cli/CmdlineOperations.java b/source/net/sourceforge/filebot/cli/CmdlineOperations.java index d6e52101..c0245709 100644 --- a/source/net/sourceforge/filebot/cli/CmdlineOperations.java +++ b/source/net/sourceforge/filebot/cli/CmdlineOperations.java @@ -810,8 +810,11 @@ public class CmdlineOperations implements CmdlineInterface { for (Entry> it : service.getSubtitleList(videoFiles.toArray(new File[0]), language.getName()).entrySet()) { if (it.getValue() != null && it.getValue().size() > 0) { - CLILogger.finest(format("Matched [%s] to [%s] via filehash", it.getKey().getName(), it.getValue().get(0).getName())); - subtitleByVideo.put(it.getKey(), it.getValue().get(0)); + // guess best hash match (default order is open bad due to invalid hash links) + Entry bestMatch = matchSubtitles(singleton(it.getKey()), it.getValue(), false).entrySet().iterator().next(); + + CLILogger.finest(format("Matched [%s] to [%s] via filehash", bestMatch.getKey().getName(), bestMatch.getValue().getName())); + subtitleByVideo.put(bestMatch.getKey(), bestMatch.getValue()); } } diff --git a/source/net/sourceforge/filebot/ui/subtitle/SubtitleAutoMatchDialog.java b/source/net/sourceforge/filebot/ui/subtitle/SubtitleAutoMatchDialog.java index d7c6cef0..cc85cd76 100644 --- a/source/net/sourceforge/filebot/ui/subtitle/SubtitleAutoMatchDialog.java +++ b/source/net/sourceforge/filebot/ui/subtitle/SubtitleAutoMatchDialog.java @@ -1,5 +1,6 @@ package net.sourceforge.filebot.ui.subtitle; +import static java.util.Collections.*; import static javax.swing.BorderFactory.*; import static javax.swing.JOptionPane.*; import static net.sourceforge.filebot.media.MediaDetection.*; @@ -23,10 +24,12 @@ import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; +import java.util.LinkedHashSet; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; import java.util.TreeSet; import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutorService; @@ -716,13 +719,20 @@ class SubtitleAutoMatchDialog extends JDialog { try { Map> subtitleSet = new HashMap>(); for (final Entry> result : service.lookupSubtitles(remainingVideos, languageName, parent).entrySet()) { - List subtitles = new ArrayList(); + Set subtitlesByRelevance = new LinkedHashSet(); + + // guess best hash match (default order is open bad due to invalid hash links) + if (result.getValue().size() > 0) { + Entry bestMatch = matchSubtitles(singleton(result.getKey()), result.getValue(), false).entrySet().iterator().next(); + subtitlesByRelevance.add(bestMatch.getValue()); + } + subtitlesByRelevance.addAll(result.getValue()); // associate subtitles with services - for (SubtitleDescriptor subtitleDescriptor : result.getValue()) { - subtitles.add(new SubtitleDescriptorBean(result.getKey(), subtitleDescriptor, service)); + List subtitles = new ArrayList(); + for (SubtitleDescriptor it : subtitlesByRelevance) { + subtitles.add(new SubtitleDescriptorBean(result.getKey(), it, service)); } - subtitleSet.put(result.getKey(), subtitles); } diff --git a/website/data/query-blacklist.txt b/website/data/query-blacklist.txt index 1e05ad50..f336cdb5 100644 --- a/website/data/query-blacklist.txt +++ b/website/data/query-blacklist.txt @@ -38,9 +38,11 @@ ^extract$ ^extracted$ ^Family$ +^file[s]?$ ^Film[s]? ^Filme$ ^Finished +^folder$ ^good$ ^HD[0-9]$ ^hdd[0-9]$ @@ -48,6 +50,7 @@ ^Horror$ ^HVDVD_TS$ ^I$ +^ignore.folder$ ^II$ ^III$ ^In.Progress$