Change get_all_files behaviour

This commit is contained in:
Cédric Leporcq 2021-06-27 07:18:35 +02:00
parent cb8a4cd24e
commit 3af848a162
6 changed files with 34 additions and 22 deletions

View File

@ -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)

View File

@ -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

View File

@ -6,6 +6,7 @@ class.
.. moduleauthor:: Jaisen Mathai <jaisen@jmathai.com>
"""
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

View File

@ -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):

View File

@ -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

View File

@ -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: