From 3af848a1621271ff72b500dc453a300b6ba82678 Mon Sep 17 00:00:00 2001 From: Cedric Leporcq Date: Sun, 27 Jun 2021 07:18:35 +0200 Subject: [PATCH] Change get_all_files behaviour --- elodie.py | 4 ++-- elodie/filesystem.py | 21 ++++++++++++--------- elodie/media/audio.py | 10 +++++++++- elodie/media/media.py | 10 ++-------- elodie/media/video.py | 9 ++++++++- elodie/tools/add_original_name.py | 2 +- 6 files changed, 34 insertions(+), 22 deletions(-) diff --git a/elodie.py b/elodie.py index 4229987..98b1487 100755 --- a/elodie.py +++ b/elodie.py @@ -131,7 +131,7 @@ def _import(destination, source, file, album_from_folder, trash, for path in paths: path = os.path.expanduser(path) if os.path.isdir(path): - files.update(FILESYSTEM.get_all_files(path, None, exclude_regex_list)) + files.update(FILESYSTEM.get_all_files(path, False, exclude_regex_list)) else: if not FILESYSTEM.should_exclude(path, exclude_regex_list, True): files.add(path) @@ -267,7 +267,7 @@ def _update(album, location, time, title, paths, debug): for path in paths: path = os.path.expanduser(path) if os.path.isdir(path): - files.update(FILESYSTEM.get_all_files(path, None)) + files.update(FILESYSTEM.get_all_files(path, False)) else: files.add(path) diff --git a/elodie/filesystem.py b/elodie/filesystem.py index d334a23..7cd824a 100644 --- a/elodie/filesystem.py +++ b/elodie/filesystem.py @@ -84,31 +84,34 @@ class FileSystem(object): return False - def get_all_files(self, path, extensions=None, exclude_regex_list=set()): + def get_all_files(self, path, extensions=False, exclude_regex_list=set()): """Recursively get all files which match a path and extension. :param str path string: Path to start recursive file listing :param tuple(str) extensions: File extensions to include (whitelist) :returns: generator """ - # If extensions is None then we get all supported extensions - if not extensions: - extensions = set() - subclasses = media.get_all_subclasses() - for cls in subclasses: - extensions.update(cls.extensions) + # If extensions is None then we get all files + # if not extensions: + # extensions = set() + # subclasses = media.get_all_subclasses() + # for cls in subclasses: + # extensions.update(cls.extensions) # Create a list of compiled regular expressions to match against the file path compiled_regex_list = [re.compile(regex) for regex in exclude_regex_list] for dirname, dirnames, filenames in os.walk(path): + if dirname == os.path.join(path, '.elodie'): + continue for filename in filenames: # If file extension is in `extensions` # And if file path is not in exclude regexes # Then append to the list filename_path = os.path.join(dirname, filename) if ( - os.path.splitext(filename)[1][1:].lower() in extensions and - not self.should_exclude(filename_path, compiled_regex_list, False) + extensions == False + or os.path.splitext(filename)[1][1:].lower() in extensions + and not self.should_exclude(filename_path, compiled_regex_list, False) ): yield filename_path diff --git a/elodie/media/audio.py b/elodie/media/audio.py index 6b26a30..17684e2 100644 --- a/elodie/media/audio.py +++ b/elodie/media/audio.py @@ -6,6 +6,7 @@ class. .. moduleauthor:: Jaisen Mathai """ +import os from .media import Media @@ -25,4 +26,11 @@ class Audio(Media): super().__init__(source) def is_valid(self): - return super().is_valid() + """Check the file extension against valid file extensions. + + The list of valid file extensions come from self.extensions. + + :returns: bool + """ + source = self.source + return os.path.splitext(source)[1][1:].lower() in self.extensions diff --git a/elodie/media/media.py b/elodie/media/media.py index b24fc54..330acfa 100644 --- a/elodie/media/media.py +++ b/elodie/media/media.py @@ -168,14 +168,8 @@ class Media(): def is_valid(self): - """Check the file extension against valid file extensions. - - The list of valid file extensions come from self.extensions. - - :returns: bool - """ - source = self.source - return os.path.splitext(source)[1][1:].lower() in self.extensions + # Disable extension check + return True def set_album_from_folder(self, path): diff --git a/elodie/media/video.py b/elodie/media/video.py index fde22f5..448b2fe 100644 --- a/elodie/media/video.py +++ b/elodie/media/video.py @@ -33,4 +33,11 @@ class Video(Media): def is_valid(self): - return super().is_valid() + """Check the file extension against valid file extensions. + + The list of valid file extensions come from self.extensions. + + :returns: bool + """ + source = self.source + return os.path.splitext(source)[1][1:].lower() in self.extensions diff --git a/elodie/tools/add_original_name.py b/elodie/tools/add_original_name.py index 0a52dc8..6486560 100644 --- a/elodie/tools/add_original_name.py +++ b/elodie/tools/add_original_name.py @@ -25,7 +25,7 @@ def main(argv): for path in paths: path = os.path.expanduser(path) if os.path.isdir(path): - for source in filesystem.get_all_files(path, None): + for source in filesystem.get_all_files(path, False): status = add_original_name(source, subclasses) result.append((_decode(source), status)) else: