* fix corner-case
@see http://www.filebot.net/forums/viewtopic.php?f=8&t=1425
This commit is contained in:
parent
751cf116e9
commit
24cd64ec03
|
@ -196,8 +196,9 @@ public class CmdlineOperations implements CmdlineInterface {
|
||||||
// filter episodes
|
// filter episodes
|
||||||
episodes = applyExpressionFilter(episodes, filter);
|
episodes = applyExpressionFilter(episodes, filter);
|
||||||
|
|
||||||
matches.addAll(matchEpisodes(filter(batch, VIDEO_FILES), episodes, strict));
|
for (List<File> filesPerType : mapByMediaExtension(filter(batch, VIDEO_FILES, SUBTITLE_FILES)).values()) {
|
||||||
matches.addAll(matchEpisodes(filter(batch, SUBTITLE_FILES), episodes, strict));
|
matches.addAll(matchEpisodes(filesPerType, episodes, strict));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -972,6 +972,37 @@ public class MediaDetection {
|
||||||
return mediaFolders;
|
return mediaFolders;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Map<String, List<File>> mapByMediaExtension(Iterable<File> files) {
|
||||||
|
Map<String, List<File>> map = new LinkedHashMap<String, List<File>>();
|
||||||
|
|
||||||
|
for (File file : files) {
|
||||||
|
String key = getExtension(file);
|
||||||
|
|
||||||
|
// allow extended extensions for subtitles files, for example name.eng.srt => map by en.srt
|
||||||
|
if (key != null && SUBTITLE_FILES.accept(file)) {
|
||||||
|
Locale locale = releaseInfo.getLanguageSuffix(getName(file));
|
||||||
|
if (locale != null) {
|
||||||
|
key = locale.getLanguage() + '.' + key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// normalize to lower-case
|
||||||
|
if (key != null) {
|
||||||
|
key = key.toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
List<File> valueList = map.get(key);
|
||||||
|
if (valueList == null) {
|
||||||
|
valueList = new ArrayList<File>();
|
||||||
|
map.put(key, valueList);
|
||||||
|
}
|
||||||
|
|
||||||
|
valueList.add(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
public static Map<String, List<File>> mapBySeriesName(Collection<File> files, boolean useSeriesIndex, boolean useAnimeIndex, Locale locale) throws Exception {
|
public static Map<String, List<File>> mapBySeriesName(Collection<File> files, boolean useSeriesIndex, boolean useAnimeIndex, Locale locale) throws Exception {
|
||||||
Map<String, List<File>> result = new TreeMap<String, List<File>>(String.CASE_INSENSITIVE_ORDER);
|
Map<String, List<File>> result = new TreeMap<String, List<File>>(String.CASE_INSENSITIVE_ORDER);
|
||||||
|
|
||||||
|
|
|
@ -299,7 +299,7 @@ class EpisodeListMatcher implements AutoCompleteMatcher {
|
||||||
List<Match<File, ?>> matches = new ArrayList<Match<File, ?>>();
|
List<Match<File, ?>> matches = new ArrayList<Match<File, ?>>();
|
||||||
|
|
||||||
// group by subtitles first and then by files in general
|
// group by subtitles first and then by files in general
|
||||||
for (List<File> filesPerType : mapByExtension(files).values()) {
|
for (List<File> filesPerType : mapByMediaExtension(files).values()) {
|
||||||
EpisodeMatcher matcher = new EpisodeMatcher(filesPerType, episodes, false);
|
EpisodeMatcher matcher = new EpisodeMatcher(filesPerType, episodes, false);
|
||||||
for (Match<File, Object> it : matcher.match()) {
|
for (Match<File, Object> it : matcher.match()) {
|
||||||
matches.add(new Match<File, Episode>(it.getValue(), ((Episode) it.getCandidate()).clone()));
|
matches.add(new Match<File, Episode>(it.getValue(), ((Episode) it.getCandidate()).clone()));
|
||||||
|
|
Loading…
Reference in New Issue