diff --git a/couchpotato/core/plugins/renamer/main.py b/couchpotato/core/plugins/renamer/main.py index 6541c18..e8d7018 100644 --- a/couchpotato/core/plugins/renamer/main.py +++ b/couchpotato/core/plugins/renamer/main.py @@ -67,6 +67,8 @@ class Renamer(Plugin): nfo_name = self.conf('nfo_name') separator = self.conf('separator') + db = get_session() + for group_identifier in groups: group = groups[group_identifier] @@ -125,7 +127,7 @@ class Renamer(Plugin): # Move nfo depending on settings if file_type is 'nfo' and not self.conf('rename_nfo'): log.debug('Skipping, renaming of %s disabled' % file_type) - if self.conf('clean_up'): + if self.conf('cleanup'): for current_file in group['files'][file_type]: remove_files.append(current_file) continue @@ -225,7 +227,6 @@ class Renamer(Plugin): cd += 1 # Before renaming, remove the lower quality files - db = get_session() library = db.query(Library).filter_by(identifier = group['library']['identifier']).first() done_status = fireEvent('status.get', 'done', single = True) @@ -310,11 +311,26 @@ class Renamer(Plugin): if isinstance(src, File): src = src.path - log.info('(fake) Removing "%s"' % src) + log.info('Removing "%s"' % src) + try: + os.remove(src) + except: + log.error('Failed removing %s: %s', (src, traceback.format_exc())) # Remove matching releases for release in remove_releases: - log.info('(fake) Removing release %s' % release.identifier) + log.debug('Removing release %s' % release.identifier) + try: + db.delete(release) + except: + log.error('Failed removing %s: %s', (release.identifier, traceback.format_exc())) + + if group['dirname'] and group['parentdir']: + try: + log.info('Deleting folder: %s' % group['parentdir']) + self.deleteEmptyFolder(group['parentdir']) + except: + log.error('Failed removing %s: %s', (group['parentdir'], traceback.format_exc())) # Search for trailers etc fireEventAsync('renamer.after', group) @@ -380,3 +396,20 @@ class Renamer(Plugin): def replaceDoubles(self, string): return string.replace(' ', ' ').replace(' .', '.') + + def deleteEmptyFolder(self, folder): + + for root, dirs, files in os.walk(folder): + + for dir_name in dirs: + full_path = os.path.join(root, dir_name) + if len(os.listdir(full_path)) == 0: + try: + os.rmdir(full_path) + except: + log.error('Couldn\'t remove empty directory %s: %s' % (full_path, traceback.format_exc())) + + try: + os.rmdir(folder) + except: + log.error('Couldn\'t remove empty directory %s: %s' % (folder, traceback.format_exc()))