* allow AcoustID override mode that'll only use acoustid data as backup but prefer id3 tag if possible
This commit is contained in:
parent
768fcd3075
commit
f3e5ab574b
|
@ -7,13 +7,16 @@ import static net.sourceforge.tuned.FileUtilities.*;
|
|||
|
||||
import java.awt.Component;
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import net.sourceforge.filebot.similarity.Match;
|
||||
import net.sourceforge.filebot.web.AudioTrack;
|
||||
import net.sourceforge.filebot.web.ID3Lookup;
|
||||
import net.sourceforge.filebot.web.MusicIdentificationService;
|
||||
import net.sourceforge.filebot.web.SortOrder;
|
||||
|
||||
|
@ -31,11 +34,28 @@ class AudioFingerprintMatcher implements AutoCompleteMatcher {
|
|||
@Override
|
||||
public List<Match<File, ?>> match(List<File> files, SortOrder order, Locale locale, boolean autodetection, Component parent) throws Exception {
|
||||
List<Match<File, ?>> matches = new ArrayList<Match<File, ?>>();
|
||||
List<File> audioFiles = filter(files, AUDIO_FILES);
|
||||
|
||||
// check audio files against acoustid
|
||||
for (Entry<File, AudioTrack> it : service.lookup(filter(files, AUDIO_FILES)).entrySet()) {
|
||||
for (Entry<File, AudioTrack> it : service.lookup(audioFiles).entrySet()) {
|
||||
if (it.getKey().exists() && it.getValue() != null) {
|
||||
matches.add(new Match<File, AudioTrack>(it.getKey(), it.getValue().clone()));
|
||||
AudioTrack track = it.getValue().clone();
|
||||
|
||||
// use AcoustID as default but prefer with ID3 data if available
|
||||
if (!autodetection) {
|
||||
AudioTrack id3 = new ID3Lookup().lookup(Collections.singleton(it.getKey())).get(it.getKey());
|
||||
for (Field field : AudioTrack.class.getDeclaredFields()) {
|
||||
if (!field.isAccessible()) {
|
||||
field.setAccessible(true);
|
||||
}
|
||||
Object id3value = field.get(id3);
|
||||
if (id3value != null && !id3value.toString().isEmpty()) {
|
||||
field.set(track, id3value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
matches.add(new Match<File, AudioTrack>(it.getKey(), track));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue