From 560598d8a0441473b90bc3cd73876b32607e8ea5 Mon Sep 17 00:00:00 2001 From: "Pedro M. Silva" Date: Wed, 19 Apr 2023 10:58:38 +0100 Subject: [PATCH] Add `--cookies` option for authenticating requests (#114) * Add `--cookies` option for authenticating requests * Allow character "=" in command line option values --- yark/archiver/config.py | 11 ++++++++++- yark/cli.py | 13 ++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/yark/archiver/config.py b/yark/archiver/config.py index 8a482cb..c1bd95d 100644 --- a/yark/archiver/config.py +++ b/yark/archiver/config.py @@ -46,6 +46,7 @@ class Config: comments: bool = False format: Optional[str] = None proxy: Optional[str] = None + cookies: Optional[str] = None bind_host: Optional[str] = None bind_port: int = 7667 headless: bool = False @@ -99,6 +100,10 @@ def settings_dl(self, path: Path) -> YtDlpSettings: if self.proxy is not None: settings["proxy"] = self.proxy + # Cookies file to allow, for example, archiving private playlists + if self.cookies is not None: + settings["cookiefile"] = self.cookies + # Return return settings @@ -118,6 +123,10 @@ def settings_md(self) -> YtDlpSettings: if self.proxy is not None: settings["proxy"] = self.proxy + # Cookies file to allow, for example, archiving private playlists + if self.cookies is not None: + settings["cookiefile"] = self.cookies + # Return return settings @@ -140,4 +149,4 @@ def open_webbrowser(self, archive_name: Optional[str]): """Opens the webbrowser to optional archive_name or to the main page if not specified""" url = self.browser_url(archive_name) - webbrowser.open(url) \ No newline at end of file + webbrowser.open(url) diff --git a/yark/cli.py b/yark/cli.py index d3b531a..4424f20 100644 --- a/yark/cli.py +++ b/yark/cli.py @@ -98,7 +98,7 @@ def _cli() -> None: if len(args) > 2: def parse_value(config_arg: str) -> str: - return config_arg.split("=")[1] + return config_arg.split("=", 1)[1] def parse_maximum_int(config_arg: str) -> int: """Tries to parse a maximum integer input""" @@ -146,6 +146,9 @@ def parse_maximum_int(config_arg: str) -> int: elif config_arg.startswith("--proxy="): config.proxy = parse_value(config_arg) + elif config_arg.startswith("--cookies="): + config.cookies = parse_value(config_arg) + # Unknown argument else: print(HELP, file=sys.stderr) @@ -215,9 +218,9 @@ def launch(config: Config, archive_name: Optional[str]) -> None: msg = f"Starting archive at {url} address" if archive_name is not None: msg += f" for {archive_name} archive" - + print(msg) - + app = viewer() threading.Thread(target=lambda: app.run(port=config.bind_port, host=config.bind_host)).run() @@ -271,8 +274,8 @@ def parse_port_int(config_arg: str) -> int: # If config_idx is 1 (first parameter could be name of archive) if config_idx == 1: archive_name = config_arg - - # If config_idx is not 1 + + # If config_idx is not 1 # (not the first parameter, wasn't parsed earlier, must be an invalid parameter) else: print(HELP, file=sys.stderr)