mirror of
https://github.com/mitb-archive/filebot
synced 2024-08-13 17:03:45 -04:00
* make {model} available in --filter expressions to include/exclude each metadata based on the entirety of metadata being matched against
This commit is contained in:
parent
cd2ea07c15
commit
e14cbb2bcc
@ -60,6 +60,7 @@ import net.filebot.similarity.SimilarityComparator;
|
||||
import net.filebot.similarity.SimilarityMetric;
|
||||
import net.filebot.subtitle.SubtitleFormat;
|
||||
import net.filebot.subtitle.SubtitleNaming;
|
||||
import net.filebot.util.EntryList;
|
||||
import net.filebot.util.FileUtilities;
|
||||
import net.filebot.util.FileUtilities.ParentFilter;
|
||||
import net.filebot.vfs.FileInfo;
|
||||
@ -890,9 +891,10 @@ public class CmdlineOperations implements CmdlineInterface {
|
||||
}
|
||||
|
||||
CLILogger.fine(String.format("Apply Filter: {%s}", filter.getExpression()));
|
||||
Map<File, Object> context = new EntryList<File, Object>(null, input);
|
||||
List<T> output = new ArrayList<T>(input.size());
|
||||
for (T it : input) {
|
||||
if (filter.matches(new MediaBindingBean(it, null, null))) {
|
||||
if (filter.matches(new MediaBindingBean(it, null, context))) {
|
||||
CLILogger.finest(String.format("Include [%s]", it));
|
||||
output.add(it);
|
||||
}
|
||||
|
65
source/net/filebot/util/EntryList.java
Normal file
65
source/net/filebot/util/EntryList.java
Normal file
@ -0,0 +1,65 @@
|
||||
package net.filebot.util;
|
||||
|
||||
import static java.util.Collections.*;
|
||||
|
||||
import java.util.AbstractList;
|
||||
import java.util.AbstractMap;
|
||||
import java.util.AbstractSet;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class EntryList<K, V> extends AbstractMap<K, V> {
|
||||
|
||||
private final List<Entry<K, V>> entryList = new ArrayList<Entry<K, V>>();
|
||||
|
||||
public EntryList(Iterable<? extends K> keys, Iterable<? extends V> values) {
|
||||
Iterator<? extends K> keySeq = keys != null ? keys.iterator() : emptyIterator();
|
||||
Iterator<? extends V> valueSeq = values != null ? values.iterator() : emptyIterator();
|
||||
|
||||
while (keySeq.hasNext() || valueSeq.hasNext()) {
|
||||
K key = keySeq.hasNext() ? keySeq.next() : null;
|
||||
V value = valueSeq.hasNext() ? valueSeq.next() : null;
|
||||
entryList.add(new SimpleImmutableEntry<K, V>(key, value));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<Entry<K, V>> entrySet() {
|
||||
return new AbstractSet<Entry<K, V>>() {
|
||||
|
||||
@Override
|
||||
public Iterator<Entry<K, V>> iterator() {
|
||||
return entryList.iterator();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int size() {
|
||||
return entryList.size();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<V> values() {
|
||||
return new AbstractList<V>() {
|
||||
|
||||
@Override
|
||||
public V get(int index) {
|
||||
return entryList.get(index).getValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int size() {
|
||||
return entryList.size();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public int size() {
|
||||
return entryList.size();
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user