* find probable show using name similarity in auto-matching
This commit is contained in:
parent
a9f5570dbe
commit
b7f0529d88
@ -34,6 +34,8 @@ import net.miginfocom.swing.MigLayout;
|
|||||||
import net.sourceforge.filebot.ResourceManager;
|
import net.sourceforge.filebot.ResourceManager;
|
||||||
import net.sourceforge.filebot.Settings;
|
import net.sourceforge.filebot.Settings;
|
||||||
import net.sourceforge.filebot.similarity.Match;
|
import net.sourceforge.filebot.similarity.Match;
|
||||||
|
import net.sourceforge.filebot.similarity.NameSimilarityMetric;
|
||||||
|
import net.sourceforge.filebot.similarity.SimilarityMetric;
|
||||||
import net.sourceforge.filebot.ui.FileBotPanel;
|
import net.sourceforge.filebot.ui.FileBotPanel;
|
||||||
import net.sourceforge.filebot.ui.SelectDialog;
|
import net.sourceforge.filebot.ui.SelectDialog;
|
||||||
import net.sourceforge.filebot.web.AnidbClient;
|
import net.sourceforge.filebot.web.AnidbClient;
|
||||||
@ -227,22 +229,25 @@ public class RenamePanel extends FileBotPanel {
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected SearchResult selectSearchResult(String query, final Collection<SearchResult> searchResults) throws Exception {
|
protected SearchResult selectSearchResult(final String query, final Collection<SearchResult> searchResults) throws Exception {
|
||||||
if (searchResults.size() == 1) {
|
if (searchResults.size() == 1) {
|
||||||
return searchResults.iterator().next();
|
return searchResults.iterator().next();
|
||||||
}
|
}
|
||||||
|
|
||||||
List<SearchResult> exactMatches = new LinkedList<SearchResult>();
|
List<SearchResult> probableMatches = new LinkedList<SearchResult>();
|
||||||
|
|
||||||
// find exact matches
|
// use name similarity metric
|
||||||
|
SimilarityMetric metric = new NameSimilarityMetric();
|
||||||
|
|
||||||
|
// find probable matches using name similarity > 0.9
|
||||||
for (SearchResult result : searchResults) {
|
for (SearchResult result : searchResults) {
|
||||||
if (result.getName().toLowerCase().startsWith(query.toLowerCase())) {
|
if (metric.getSimilarity(query, result.getName()) > 0.9) {
|
||||||
exactMatches.add(result);
|
probableMatches.add(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (exactMatches.size() == 1) {
|
if (probableMatches.size() == 1) {
|
||||||
return exactMatches.get(0);
|
return probableMatches.get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// show selection dialog on EDT
|
// show selection dialog on EDT
|
||||||
@ -253,6 +258,8 @@ public class RenamePanel extends FileBotPanel {
|
|||||||
// multiple results have been found, user must select one
|
// multiple results have been found, user must select one
|
||||||
SelectDialog<SearchResult> selectDialog = new SelectDialog<SearchResult>(SwingUtilities.getWindowAncestor(RenamePanel.this), searchResults);
|
SelectDialog<SearchResult> selectDialog = new SelectDialog<SearchResult>(SwingUtilities.getWindowAncestor(RenamePanel.this), searchResults);
|
||||||
|
|
||||||
|
selectDialog.getHeaderLabel().setText(String.format("Shows matching '%s':", query));
|
||||||
|
|
||||||
selectDialog.setVisible(true);
|
selectDialog.setVisible(true);
|
||||||
|
|
||||||
// selected value or null if the dialog was canceled by the user
|
// selected value or null if the dialog was canceled by the user
|
||||||
|
Loading…
Reference in New Issue
Block a user