diff --git a/src/download/select_links.py b/src/download/select_links.py index 7f29144..78855f8 100644 --- a/src/download/select_links.py +++ b/src/download/select_links.py @@ -2,6 +2,7 @@ """fzf-based selectors for comic and gallery links.""" from __future__ import annotations +import argparse import re import subprocess @@ -27,24 +28,44 @@ def _select_links(urls: list[str]) -> list[str]: return [ln for ln in proc.stdout.splitlines() if ln.strip()] -def _run_download(selected: list[str]) -> None: +def _run_download(selected: list[str], extra_args: list[str]) -> None: if not selected: return - subprocess.run(["download", "-u", USER, "-i", *selected], check=False) + subprocess.run(["download", "-u", USER, *extra_args, "-i", *selected], check=False) + + +def _parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(add_help=False) + parser.add_argument("-s", "--no_skip", dest="flag_skip", action="store_false") + parser.add_argument("-a", "--no-archive", dest="flag_archive", action="store_false") + return parser.parse_args() + + +def _extra_args_from_flags(args: argparse.Namespace) -> list[str]: + extra = [] + if args.flag_skip is False: + extra.append("-s") + if args.flag_archive is False: + extra.append("-a") + return extra def comic_main() -> None: + args = _parse_args() + extra_args = _extra_args_from_flags(args) with db.connect() as conn: rows = db.get_links(conn, users=[USER], include_disabled=False, include_banned=False) urls = [row["url_original"] for row in rows if RGX_COMIC.search(row["url_original"])] - _run_download(_select_links(urls)) + _run_download(_select_links(urls), extra_args) def gallery_main() -> None: + args = _parse_args() + extra_args = _extra_args_from_flags(args) with db.connect() as conn: rows = db.get_links(conn, users=[USER], include_disabled=False, include_banned=False) urls = [row["url_original"] for row in rows if not RGX_COMIC.search(row["url_original"])] - _run_download(_select_links(urls)) + _run_download(_select_links(urls), extra_args) if __name__ == "__main__":