* don't just use nfo files from the selected fileset for matching but all nfo files that are available
This commit is contained in:
parent
dc3415eb35
commit
5379c39be3
@ -34,6 +34,7 @@ import java.util.Map.Entry;
|
|||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.SortedSet;
|
import java.util.SortedSet;
|
||||||
|
import java.util.TreeMap;
|
||||||
import java.util.TreeSet;
|
import java.util.TreeSet;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
@ -297,8 +298,8 @@ public class CmdlineOperations implements CmdlineInterface {
|
|||||||
List<File> fileset = filter(files, NON_CLUTTER_FILES);
|
List<File> fileset = filter(files, NON_CLUTTER_FILES);
|
||||||
|
|
||||||
// handle movie files
|
// handle movie files
|
||||||
List<File> movieFiles = filter(fileset, VIDEO_FILES);
|
Set<File> movieFiles = new TreeSet<File>(filter(fileset, VIDEO_FILES));
|
||||||
List<File> nfoFiles = filter(fileset, MediaTypes.getDefaultFilter("application/nfo"));
|
Set<File> nfoFiles = new TreeSet<File>(filter(fileset, MediaTypes.getDefaultFilter("application/nfo")));
|
||||||
|
|
||||||
List<File> orphanedFiles = new ArrayList<File>(filter(fileset, FILES));
|
List<File> orphanedFiles = new ArrayList<File>(filter(fileset, FILES));
|
||||||
orphanedFiles.removeAll(movieFiles);
|
orphanedFiles.removeAll(movieFiles);
|
||||||
@ -322,7 +323,7 @@ public class CmdlineOperations implements CmdlineInterface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// match movie hashes online
|
// match movie hashes online
|
||||||
final Map<File, Movie> movieByFile = new HashMap<File, Movie>();
|
final Map<File, Movie> movieByFile = new TreeMap<File, Movie>();
|
||||||
if (query == null) {
|
if (query == null) {
|
||||||
if (movieFiles.size() > 0) {
|
if (movieFiles.size() > 0) {
|
||||||
try {
|
try {
|
||||||
@ -334,17 +335,26 @@ public class CmdlineOperations implements CmdlineInterface {
|
|||||||
CLILogger.fine(format("%s: Hash lookup not supported", service.getName()));
|
CLILogger.fine(format("%s: Hash lookup not supported", service.getName()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (File nfo : nfoFiles) {
|
|
||||||
|
// collect useful nfo files even if they are not part of the selected fileset
|
||||||
|
Set<File> effectiveNfoFileSet = new TreeSet<File>(nfoFiles);
|
||||||
|
for (File dir : mapByFolder(movieFiles).keySet()) {
|
||||||
|
addAll(effectiveNfoFileSet, dir.listFiles(MediaTypes.getDefaultFilter("application/nfo")));
|
||||||
|
}
|
||||||
|
for (File nfo : effectiveNfoFileSet) {
|
||||||
try {
|
try {
|
||||||
Movie movie = grepMovie(nfo, service, locale);
|
Movie movie = grepMovie(nfo, service, locale);
|
||||||
movieByFile.put(nfo, movie);
|
|
||||||
|
if (nfoFiles.contains(nfo)) {
|
||||||
|
movieByFile.put(nfo, movie);
|
||||||
|
}
|
||||||
|
|
||||||
// match movie info to movie files that match the nfo file name
|
// match movie info to movie files that match the nfo file name
|
||||||
SortedSet<File> siblingMovieFiles = new TreeSet<File>(filter(movieFiles, new ParentFilter(nfo.getParentFile())));
|
SortedSet<File> siblingMovieFiles = new TreeSet<File>(filter(movieFiles, new ParentFilter(nfo.getParentFile())));
|
||||||
String baseName = stripReleaseInfo(getName(nfo));
|
String baseName = stripReleaseInfo(getName(nfo).toLowerCase());
|
||||||
|
|
||||||
for (File movieFile : siblingMovieFiles) {
|
for (File movieFile : siblingMovieFiles) {
|
||||||
if (baseName.equalsIgnoreCase(stripReleaseInfo(getName(movieFile)))) {
|
if (stripReleaseInfo(getName(movieFile)).toLowerCase().startsWith(baseName)) {
|
||||||
movieByFile.put(movieFile, movie);
|
movieByFile.put(movieFile, movie);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,7 @@ import java.util.Locale;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.SortedSet;
|
import java.util.SortedSet;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
import java.util.TreeSet;
|
import java.util.TreeSet;
|
||||||
@ -73,8 +74,8 @@ class MovieHashMatcher implements AutoCompleteMatcher {
|
|||||||
List<File> fileset = filter(files, NON_CLUTTER_FILES);
|
List<File> fileset = filter(files, NON_CLUTTER_FILES);
|
||||||
|
|
||||||
// handle movie files
|
// handle movie files
|
||||||
List<File> movieFiles = filter(fileset, VIDEO_FILES);
|
Set<File> movieFiles = new TreeSet<File>(filter(fileset, VIDEO_FILES));
|
||||||
List<File> nfoFiles = filter(fileset, MediaTypes.getDefaultFilter("application/nfo"));
|
Set<File> nfoFiles = new TreeSet<File>(filter(fileset, MediaTypes.getDefaultFilter("application/nfo")));
|
||||||
|
|
||||||
List<File> orphanedFiles = new ArrayList<File>(filter(fileset, FILES));
|
List<File> orphanedFiles = new ArrayList<File>(filter(fileset, FILES));
|
||||||
orphanedFiles.removeAll(movieFiles);
|
orphanedFiles.removeAll(movieFiles);
|
||||||
@ -107,10 +108,19 @@ class MovieHashMatcher implements AutoCompleteMatcher {
|
|||||||
// ignore
|
// ignore
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (File nfo : nfoFiles) {
|
|
||||||
|
// collect useful nfo files even if they are not part of the selected fileset
|
||||||
|
Set<File> effectiveNfoFileSet = new TreeSet<File>(nfoFiles);
|
||||||
|
for (File dir : mapByFolder(movieFiles).keySet()) {
|
||||||
|
addAll(effectiveNfoFileSet, dir.listFiles(MediaTypes.getDefaultFilter("application/nfo")));
|
||||||
|
}
|
||||||
|
for (File nfo : effectiveNfoFileSet) {
|
||||||
try {
|
try {
|
||||||
Movie movie = grepMovie(nfo, service, locale);
|
Movie movie = grepMovie(nfo, service, locale);
|
||||||
movieByFile.put(nfo, movie);
|
|
||||||
|
if (nfoFiles.contains(nfo)) {
|
||||||
|
movieByFile.put(nfo, movie);
|
||||||
|
}
|
||||||
|
|
||||||
// match movie info to movie files that match the nfo file name
|
// match movie info to movie files that match the nfo file name
|
||||||
SortedSet<File> siblingMovieFiles = new TreeSet<File>(filter(movieFiles, new ParentFilter(nfo.getParentFile())));
|
SortedSet<File> siblingMovieFiles = new TreeSet<File>(filter(movieFiles, new ParentFilter(nfo.getParentFile())));
|
||||||
|
Loading…
Reference in New Issue
Block a user