diff options
| author | Cody Logan <cody@lokken.dev> | 2023-10-30 13:48:03 -0700 |
|---|---|---|
| committer | Cody Logan <cody@lokken.dev> | 2023-10-30 13:48:03 -0700 |
| commit | 27376c3f3ec667fd83c3603652f11d4125b90e5c (patch) | |
| tree | 18a9a025a8b81d718f541c7c7f1ec321569abc33 /src/wikiget/dl.py | |
| parent | d5c8d30f8f17158bb3bc3be1af8959734ead2de4 (diff) | |
| download | wikiget-27376c3f3ec667fd83c3603652f11d4125b90e5c.tar.gz wikiget-27376c3f3ec667fd83c3603652f11d4125b90e5c.zip | |
Check for existing files earlier to avoid unnecessary API calls
Diffstat (limited to 'src/wikiget/dl.py')
| -rw-r--r-- | src/wikiget/dl.py | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/wikiget/dl.py b/src/wikiget/dl.py index f210182..2fd7388 100644 --- a/src/wikiget/dl.py +++ b/src/wikiget/dl.py @@ -38,6 +38,12 @@ logger = logging.getLogger(__name__) def prep_download(dl: str, args: Namespace) -> File: file = get_dest(dl, args) + + # check if the destination file already exists; don't overwrite unless the user says + if os.path.isfile(file.dest) and not args.force: + msg = f"[{file.dest}] File already exists; skipping download (use -f to force)" + raise FileExistsError(msg) + site = connect_to_site(file.site, args) file.image = query_api(file.name, site) return file @@ -65,6 +71,10 @@ def batch_download(args: Namespace) -> int: logger.warning(f"{e} (line {line_num})") errors += 1 continue + except FileExistsError as e: + logger.warning(e) + errors += 1 + continue except (ConnectionError, HTTPError, InvalidResponse, LoginError, APIError): logger.warning( f"Unable to download '{line}' (line {line_num}) due to an error" @@ -101,11 +111,7 @@ def download(f: File, args: Namespace) -> int: adapter.info(filename_log) adapter.info(f"{file_url}") - if os.path.isfile(dest) and not args.force: - # TODO: check for this before the download process starts - adapter.warning("File already exists; skipping download (use -f to force)") - errors += 1 - elif args.dry_run: + if args.dry_run: adapter.warning("Dry run; download skipped") else: try: |
