From 693aa932245ce7b807e70c92a339d8daea8a1f3c Mon Sep 17 00:00:00 2001 From: Reinhard Pointner Date: Sat, 3 Jan 2015 21:16:13 +0000 Subject: [PATCH] * avoid odd behaviour when lookup is called with an empty list of files --- source/net/filebot/web/AcoustIDClient.java | 24 +++++++++++-------- source/net/filebot/web/ID3Lookup.java | 3 ++- .../web/MusicIdentificationService.java | 16 +++++-------- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/source/net/filebot/web/AcoustIDClient.java b/source/net/filebot/web/AcoustIDClient.java index 5cb44f89..7e63e042 100644 --- a/source/net/filebot/web/AcoustIDClient.java +++ b/source/net/filebot/web/AcoustIDClient.java @@ -10,6 +10,7 @@ import java.lang.ProcessBuilder.Redirect; import java.net.URL; import java.nio.charset.Charset; import java.util.ArrayList; +import java.util.Collection; import java.util.Comparator; import java.util.HashMap; import java.util.LinkedHashMap; @@ -54,21 +55,24 @@ public class AcoustIDClient implements MusicIdentificationService { } @Override - public Map lookup(Iterable files) throws Exception { + public Map lookup(Collection files) throws Exception { Map results = new LinkedHashMap(); - for (Map fp : fpcalc(files)) { - File file = new File(fp.get("FILE")); - int duration = Integer.parseInt(fp.get("DURATION")); - String fingerprint = fp.get("FINGERPRINT"); + if (files.size() > 0) { + for (Map fp : fpcalc(files)) { + File file = new File(fp.get("FILE")); + int duration = Integer.parseInt(fp.get("DURATION")); + String fingerprint = fp.get("FINGERPRINT"); - if (duration > 10 && fingerprint != null) { - String response = lookup(duration, fingerprint); - if (response != null && response.length() > 0) { - results.put(file, parseResult(lookup(duration, fingerprint), duration)); + if (duration > 10 && fingerprint != null) { + String response = lookup(duration, fingerprint); + if (response != null && response.length() > 0) { + results.put(file, parseResult(lookup(duration, fingerprint), duration)); + } } } } + return results; } @@ -210,7 +214,7 @@ public class AcoustIDClient implements MusicIdentificationService { return System.getProperty("net.filebot.AcoustID.fpcalc", "fpcalc"); } - public List> fpcalc(Iterable files) throws IOException, InterruptedException { + public List> fpcalc(Collection files) throws IOException, InterruptedException { List command = new ArrayList(); command.add(getChromaprintCommand()); for (File f : files) { diff --git a/source/net/filebot/web/ID3Lookup.java b/source/net/filebot/web/ID3Lookup.java index 3ac6f164..1a6f7df4 100644 --- a/source/net/filebot/web/ID3Lookup.java +++ b/source/net/filebot/web/ID3Lookup.java @@ -2,6 +2,7 @@ package net.filebot.web; import java.io.File; import java.io.IOException; +import java.util.Collection; import java.util.LinkedHashMap; import java.util.Map; import java.util.Scanner; @@ -27,7 +28,7 @@ public class ID3Lookup implements MusicIdentificationService { } @Override - public Map lookup(Iterable files) throws Exception { + public Map lookup(Collection files) throws Exception { Map info = new LinkedHashMap(); MediaInfo mediaInfo = new MediaInfo(); diff --git a/source/net/filebot/web/MusicIdentificationService.java b/source/net/filebot/web/MusicIdentificationService.java index 679a1673..ee5e5b1b 100644 --- a/source/net/filebot/web/MusicIdentificationService.java +++ b/source/net/filebot/web/MusicIdentificationService.java @@ -1,21 +1,17 @@ - package net.filebot.web; - import java.io.File; +import java.util.Collection; import java.util.Map; import javax.swing.Icon; - public interface MusicIdentificationService { - + String getName(); - - + Icon getIcon(); - - - Map lookup(Iterable files) throws Exception; - + + Map lookup(Collection files) throws Exception; + }