sane-tag-music: handle multiple CLI paths by iterating a layer above

This commit is contained in:
2024-07-12 04:27:12 +00:00
parent d85ffa8539
commit c16f2473e5

View File

@@ -854,7 +854,11 @@ class Gatherer:
self.derive_tags = derive_tags self.derive_tags = derive_tags
def files(self) -> list[tuple[MediaFile, Tags]]: def files(self) -> list[tuple[MediaFile, Tags]]:
files = self.walk_files(self.roots) for root in self.roots:
yield from self.files_from(root)
def files_from(self, root: str) -> list[tuple[MediaFile, Tags]]:
files = self.walk_files(root)
if self.derive_tags: if self.derive_tags:
files = list(files) files = list(files)
@@ -872,17 +876,16 @@ class Gatherer:
if self.media_type is None or f.is_type(self.media_type): if self.media_type is None or f.is_type(self.media_type):
yield f, tags yield f, tags
def walk_paths(self, *roots: str) -> None: def walk_paths(self, root: str) -> None:
for root in roots: if os.path.isdir(root):
if os.path.isdir(root): for dir_, subdirs, files_ in os.walk(root):
for dir_, subdirs, files_ in os.walk(root): for f in files_:
for f in files_: yield os.path.join(dir_, f)
yield os.path.join(dir_, f) else:
else: yield root
yield root
def walk_files(self, paths: list[str]): def walk_files(self, root: str):
for path_ in self.walk_paths(*paths): for path_ in self.walk_paths(root):
file_ = MediaFile.new(path_) file_ = MediaFile.new(path_)
yield file_, Tags() yield file_, Tags()