diff options
| author | 2025-08-16 07:00:33 -0400 | |
|---|---|---|
| committer | 2025-08-16 07:00:33 -0400 | |
| commit | 3d18761f620a294ea6c5bff13c5994b93b29f3ed (patch) | |
| tree | 092fa6f8128bc187512be532801670417f215986 /gallery_dl/extractor/common.py | |
| parent | a6e995c093de8aae2e91a0787281bb34c0b871eb (diff) | |
New upstream version 1.30.3.upstream/1.30.3
Diffstat (limited to 'gallery_dl/extractor/common.py')
| -rw-r--r-- | gallery_dl/extractor/common.py | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/gallery_dl/extractor/common.py b/gallery_dl/extractor/common.py index d46152b..1ee54de 100644 --- a/gallery_dl/extractor/common.py +++ b/gallery_dl/extractor/common.py @@ -142,9 +142,9 @@ class Extractor(): return values - def request(self, url, method="GET", session=None, - retries=None, retry_codes=None, encoding=None, - fatal=True, notfound=None, **kwargs): + def request(self, url, method="GET", session=None, fatal=True, + retries=None, retry_codes=None, interval=True, + encoding=None, notfound=None, **kwargs): if session is None: session = self.session if retries is None: @@ -170,7 +170,7 @@ class Extractor(): response = challenge = None tries = 1 - if self._interval: + if self._interval and interval: seconds = (self._interval() - (time.time() - Extractor.request_timestamp)) if seconds > 0.0: @@ -464,7 +464,9 @@ class Extractor(): if custom_ua is None or custom_ua == "auto": pass elif custom_ua == "browser": - headers["User-Agent"] = _browser_useragent() + headers["User-Agent"] = _browser_useragent(None) + elif custom_ua[0] == "@": + headers["User-Agent"] = _browser_useragent(custom_ua[1:]) elif self.useragent is Extractor.useragent and not self.browser or \ custom_ua is not config.get(("extractor",), "user-agent"): headers["User-Agent"] = custom_ua @@ -539,6 +541,10 @@ class Extractor(): try: with open(path) as fp: cookies = util.cookiestxt_load(fp) + except ValueError as exc: + self.log.warning("cookies: Invalid Netscape cookies.txt file " + "'%s' (%s: %s)", + cookies_source, exc.__class__.__name__, exc) except Exception as exc: self.log.warning("cookies: Failed to load '%s' (%s: %s)", cookies_source, exc.__class__.__name__, exc) @@ -1042,19 +1048,31 @@ def _build_requests_adapter( return adapter -@cache.cache(maxage=86400) -def _browser_useragent(): +@cache.cache(maxage=86400, keyarg=0) +def _browser_useragent(browser): """Get User-Agent header from default browser""" import webbrowser - import socket + try: + open = webbrowser.get(browser).open + except webbrowser.Error: + if not browser: + raise + import shutil + if not (browser := shutil.which(browser)): + raise + + def open(url): + util.Popen((browser, url), + start_new_session=False if util.WINDOWS else True) + import socket server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server.bind(("127.0.0.1", 0)) server.listen(1) host, port = server.getsockname() - webbrowser.open(f"http://{host}:{port}/user-agent") + open(f"http://{host}:{port}/user-agent") client = server.accept()[0] server.close() |
