diff --git a/couchpotato/core/plugins/renamer/main.py b/couchpotato/core/plugins/renamer/main.py index 2cc3e82..49e92aaa 100644 --- a/couchpotato/core/plugins/renamer/main.py +++ b/couchpotato/core/plugins/renamer/main.py @@ -280,10 +280,7 @@ class Renamer(Plugin): log.info('Removing release %s' % release) # Add this release to the library - if not group['destination_dir'] is destination: - fireEventAsync('scanner.to_library', folder = group['destination_dir']) - else: - log.error('Single destination folder not fully supported yet.') + fireEvent('scanner.files', folder = destination, files = rename_files) # Search for trailers etc fireEventAsync('renamer.after', group) diff --git a/couchpotato/core/plugins/scanner/main.py b/couchpotato/core/plugins/scanner/main.py index c2d4a77..843e8b6 100644 --- a/couchpotato/core/plugins/scanner/main.py +++ b/couchpotato/core/plugins/scanner/main.py @@ -72,10 +72,19 @@ class Scanner(Plugin): addEvent('scanner.create_file_identifier', self.createStringIdentifier) addEvent('scanner.scan', self.scan) - addEvent('scanner.to_library', self.scanToLibrary) + addEvent('scanner.files', self.scanToFilesLibrary) + addEvent('scanner.folder', self.scanToFolderLibrary) addEvent('scanner.name_year', self.getReleaseNameYear) - def scanToLibrary(self, folder = None, files = []): + def scanToFilesLibrary(self, folder = None, files = None): + + groups = self.scan(folder = folder, files = files) + + for group in groups.itervalues(): + if group['library']: + fireEvent('release.add', group = group) + + def scanToFolderLibrary(self, folder = None): if not os.path.isdir(folder): return @@ -115,7 +124,7 @@ class Scanner(Plugin): db.remove() - def scan(self, folder = None): + def scan(self, folder = None, files = []): if not folder or not os.path.isdir(folder): log.error('Folder doesn\'t exists: %s' % folder) @@ -124,30 +133,35 @@ class Scanner(Plugin): # Get movie "master" files movie_files = {} leftovers = [] - for root, dirs, files in os.walk(folder): - for filename in files: - file_path = os.path.join(root, filename) + # Scan all files of the folder if no files are set + if len(files) == 0: + files = [] + for root, dirs, walk_files in os.walk(folder): + for filename in walk_files: + files.append(os.path.join(root, filename)) - # Remove ignored files - if not self.keepFile(file_path): - continue + for file_path in files: - is_dvd_file = self.isDVDFile(file_path) - if os.path.getsize(file_path) > self.minimal_filesize['media'] or is_dvd_file: # Minimal 300MB files or is DVD file + # Remove ignored files + if not self.keepFile(file_path): + continue - identifier = self.createStringIdentifier(file_path, folder, exclude_filename = is_dvd_file) + is_dvd_file = self.isDVDFile(file_path) + if os.path.getsize(file_path) > self.minimal_filesize['media'] or is_dvd_file: # Minimal 300MB files or is DVD file - if not movie_files.get(identifier): - movie_files[identifier] = { - 'unsorted_files': [], - 'identifiers': [], - 'is_dvd': is_dvd_file, - } + identifier = self.createStringIdentifier(file_path, folder, exclude_filename = is_dvd_file) - movie_files[identifier]['unsorted_files'].append(file_path) - else: - leftovers.append(file_path) + if not movie_files.get(identifier): + movie_files[identifier] = { + 'unsorted_files': [], + 'identifiers': [], + 'is_dvd': is_dvd_file, + } + + movie_files[identifier]['unsorted_files'].append(file_path) + else: + leftovers.append(file_path) # Sort reverse, this prevents "Iron man 2" from getting grouped with "Iron man" as the "Iron Man 2" # files will be grouped first.