diff --git a/PFERD/organizer.py b/PFERD/organizer.py index fe5052b..698c8ae 100644 --- a/PFERD/organizer.py +++ b/PFERD/organizer.py @@ -72,7 +72,10 @@ class FileAcceptException(Exception): class Organizer(Location): """A helper for managing downloaded files.""" - def __init__(self, path: Path, conflict_resolver: FileConflictResolver = resolve_prompt_user): + def __init__(self, path: Path, conflict_resolver: FileConflictResolver = resolve_prompt_user, default: bool = False, force_default: bool = False): + self._default = default + self._force_default = force_default + """Create a new organizer for a given path.""" super().__init__(path) self._known_files: Set[Path] = set() @@ -201,7 +204,7 @@ class Organizer(Location): def _delete_file_if_confirmed(self, path: Path) -> None: prompt = f"Do you want to delete {path}" - if self._resolve_conflict(prompt, path, ConflictType.FILE_DELETED, default=False): + if (self._force_default and self._default) or (not self._force_default and self._resolve_conflict(prompt, path, ConflictType.FILE_DELETED, default=self._default)): self.download_summary.add_deleted_file(path) path.unlink() else: diff --git a/PFERD/pferd.py b/PFERD/pferd.py index 1bb6f78..25c24e9 100644 --- a/PFERD/pferd.py +++ b/PFERD/pferd.py @@ -42,13 +42,17 @@ class Pferd(Location): self, base_dir: Path, tmp_dir: Path = Path(".tmp"), - test_run: bool = False + test_run: bool = False, + default: bool = False, + force_default: bool = False ): super().__init__(Path(base_dir)) self._download_summary = DownloadSummary() self._tmp_dir = TmpDir(self.resolve(tmp_dir)) self._test_run = test_run + self._default = default + self._force_default = force_default @staticmethod def enable_logging() -> None: @@ -90,7 +94,7 @@ class Pferd(Location): cookie_jar = CookieJar(to_path(cookies) if cookies else None) session = cookie_jar.create_session() tmp_dir = self._tmp_dir.new_subdir() - organizer = Organizer(self.resolve(to_path(target)), file_conflict_resolver) + organizer = Organizer(self.resolve(to_path(target)), file_conflict_resolver, default=self._default, force_default=self._force_default) crawler = IliasCrawler(base_url, session, authenticator, dir_filter) downloader = IliasDownloader(tmp_dir, organizer, session, @@ -353,7 +357,7 @@ class Pferd(Location): if isinstance(target, Organizer): organizer = target else: - organizer = Organizer(self.resolve(to_path(target)), file_conflict_resolver) + organizer = Organizer(self.resolve(to_path(target)), file_conflict_resolver, default=self._default, force_default=self._force_default) PRETTY.starting_synchronizer(organizer.path, "IPD", url) @@ -416,7 +420,7 @@ class Pferd(Location): if isinstance(target, Organizer): organizer = target else: - organizer = Organizer(self.resolve(to_path(target)), file_conflict_resolver) + organizer = Organizer(self.resolve(to_path(target)), file_conflict_resolver, default=self._default, force_default=self._force_default) PRETTY.starting_synchronizer(organizer.path, "DIVA", playlist_id)