from pathlib import Path from .file import File, Track, Art, MiscFile from abc import ABC, abstractmethod from log import Log, LogCat class Directory(ABC): def __init__(self, path: Path, log: Log, logcat: str): self.path = path self.log = LogCat(log.queue, logcat) self.contents = self.populate(log) def __iter__(self): return self.contents.__iter__() @property def name(self): return self.path.name def by_name(self): return [e.name for e in self.contents] @abstractmethod def populate(self, log: Log) -> list: raise NotImplementedError @staticmethod def create_file(file: Path) -> File: suffix = file.suffix if suffix in ['.flac']: return Track(file) elif suffix in ['.jpg', '.jpeg', '.png']: return Art(file) else: return MiscFile(file)