From e44c0bb56ab0564c328d4ac074d308272afcd49d Mon Sep 17 00:00:00 2001 From: Labrys of Knossos Date: Sun, 6 Jan 2019 10:40:05 -0500 Subject: [PATCH] Refactor path functions from utils to utils.paths --- core/utils/__init__.py | 45 ++++++++++++------------------------------ core/utils/paths.py | 24 ++++++++++++++++++++++ 2 files changed, 37 insertions(+), 32 deletions(-) diff --git a/core/utils/__init__.py b/core/utils/__init__.py index 8ab397b7..2dcaaa9a 100644 --- a/core/utils/__init__.py +++ b/core/utils/__init__.py @@ -4,8 +4,6 @@ from __future__ import print_function, unicode_literals import os import re -import shutil -import stat import beets import guessit @@ -41,12 +39,13 @@ from core.utils.parsers import ( parse_vuze, ) from core.utils.paths import ( + clean_directory, flatten_dir, get_dir_size, make_dir, onerror, - remove_dir, remote_dir, + remove_dir, remove_empty_folders, remove_read_only, ) @@ -163,6 +162,17 @@ def flatten(output_destination): return flatten_dir(output_destination, list_media_files(output_destination)) +def clean_dir(path, section, subsection): + cfg = dict(core.CFG[section][subsection]) + min_size = int(cfg.get('minSize', 0)) + delete_ignored = int(cfg.get('delete_ignored', 0)) + try: + files = list_media_files(path, min_size=min_size, delete_ignored=delete_ignored) + except Exception: + files = [] + return clean_directory(path, files) + + def get_dirs(section, subsection, link='hard'): to_return = [] @@ -269,35 +279,6 @@ def get_dirs(section, subsection, link='hard'): return list(set(to_return)) -def clean_dir(path, section, subsection): - cfg = dict(core.CFG[section][subsection]) - if not os.path.exists(path): - logger.info('Directory {0} has been processed and removed ...'.format(path), 'CLEANDIR') - return - if core.FORCE_CLEAN and not core.FAILED: - logger.info('Doing Forceful Clean of {0}'.format(path), 'CLEANDIR') - remove_dir(path) - return - min_size = int(cfg.get('minSize', 0)) - delete_ignored = int(cfg.get('delete_ignored', 0)) - try: - num_files = len(list_media_files(path, min_size=min_size, delete_ignored=delete_ignored)) - except Exception: - num_files = 0 - - if num_files > 0: - logger.info( - 'Directory {0} still contains {1} unprocessed file(s), skipping ...'.format(path, num_files), - 'CLEANDIRS') - return - - logger.info('Directory {0} has been processed, removing ...'.format(path), 'CLEANDIRS') - try: - shutil.rmtree(path, onerror=onerror) - except Exception: - logger.error('Unable to delete directory {0}'.format(path)) - - def find_imdbid(dir_name, input_name, omdb_api_key): imdbid = None diff --git a/core/utils/paths.py b/core/utils/paths.py index 948287b7..5576206f 100644 --- a/core/utils/paths.py +++ b/core/utils/paths.py @@ -125,3 +125,27 @@ def flatten_dir(destination, files): logger.error('Could not flatten {0}'.format(outputFile), 'FLATTEN') remove_empty_folders(destination) # Cleanup empty directories + + +def clean_directory(path, files): + if not os.path.exists(path): + logger.info('Directory {0} has been processed and removed ...'.format(path), 'CLEANDIR') + return + + if core.FORCE_CLEAN and not core.FAILED: + logger.info('Doing Forceful Clean of {0}'.format(path), 'CLEANDIR') + remove_dir(path) + return + + if files: + logger.info( + 'Directory {0} still contains {1} unprocessed file(s), skipping ...'.format(path, len(files)), + 'CLEANDIRS', + ) + return + + logger.info('Directory {0} has been processed, removing ...'.format(path), 'CLEANDIRS') + try: + shutil.rmtree(path, onerror=onerror) + except Exception: + logger.error('Unable to delete directory {0}'.format(path))