diff --git a/couchpotato/core/plugins/base.py b/couchpotato/core/plugins/base.py index 8a4cada..39b17a8 100644 --- a/couchpotato/core/plugins/base.py +++ b/couchpotato/core/plugins/base.py @@ -146,21 +146,17 @@ class Plugin(object): folder = sp(folder) for item in os.listdir(folder): - full_folder = os.path.join(folder, item) + full_folder = sp(os.path.join(folder, item)) if not only_clean or (item in only_clean and os.path.isdir(full_folder)): - for root, dirs, files in os.walk(full_folder): + for subfolder, dirs, files in os.walk(full_folder, topdown = False): - 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: - if show_error: - log.info2('Couldn\'t remove directory %s: %s', (full_path, traceback.format_exc())) + try: + os.rmdir(subfolder) + except: + if show_error: + log.info2('Couldn\'t remove directory %s: %s', (subfolder, traceback.format_exc())) try: os.rmdir(folder) diff --git a/couchpotato/core/plugins/renamer.py b/couchpotato/core/plugins/renamer.py index 34ac555..3c506a4 100755 --- a/couchpotato/core/plugins/renamer.py +++ b/couchpotato/core/plugins/renamer.py @@ -555,9 +555,9 @@ class Renamer(Plugin): os.remove(src) parent_dir = os.path.dirname(src) - if delete_folders.count(parent_dir) == 0 and os.path.isdir(parent_dir) and \ + if parent_dir not in delete_folders and os.path.isdir(parent_dir) and \ not isSubFolder(destination, parent_dir) and not isSubFolder(media_folder, parent_dir) and \ - not isSubFolder(parent_dir, base_folder): + isSubFolder(parent_dir, base_folder): delete_folders.append(parent_dir) @@ -566,6 +566,7 @@ class Renamer(Plugin): self.tagRelease(group = group, tag = 'failed_remove') # Delete leftover folder from older releases + delete_folders = sorted(delete_folders, key = len, reverse = True) for delete_folder in delete_folders: try: self.deleteEmptyFolder(delete_folder, show_error = False) @@ -620,8 +621,9 @@ class Renamer(Plugin): group_folder = sp(os.path.join(base_folder, os.path.relpath(group['parentdir'], base_folder).split(os.path.sep)[0])) try: - log.info('Deleting folder: %s', group_folder) - self.deleteEmptyFolder(group_folder) + if self.conf('cleanup') or self.conf('move_leftover'): + log.info('Deleting folder: %s', group_folder) + self.deleteEmptyFolder(group_folder) except: log.error('Failed removing %s: %s', (group_folder, traceback.format_exc()))