From e68555defa0a17b099dbc176fb95eea54f0f0ca4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Mon, 9 Jun 2025 19:13:38 +0200 Subject: [PATCH] [common] improve cookie-related logging messages --- gallery_dl/extractor/common.py | 17 ++++++++++------- test/test_cookies.py | 23 ++++++++++++++--------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/gallery_dl/extractor/common.py b/gallery_dl/extractor/common.py index 5111b6df..5ef2f2f3 100644 --- a/gallery_dl/extractor/common.py +++ b/gallery_dl/extractor/common.py @@ -516,9 +516,11 @@ class Extractor(): with open(path) as fp: cookies = util.cookiestxt_load(fp) except Exception as exc: - self.log.warning("cookies: %s", exc) + self.log.warning("cookies: Failed to load '%s' (%s: %s)", + cookies_source, exc.__class__.__name__, exc) else: - self.log.debug("Loading cookies from '%s'", cookies_source) + self.log.debug("cookies: Loading cookies from '%s'", + cookies_source) set_cookie = self.cookies.set_cookie for cookie in cookies: set_cookie(cookie) @@ -538,16 +540,16 @@ class Extractor(): else: _browser_cookies[key] = cookies else: - self.log.debug("Using cached cookies from %s", key) + self.log.debug("cookies: Using cached cookies from %s", key) set_cookie = self.cookies.set_cookie for cookie in cookies: set_cookie(cookie) else: - self.log.warning( - "Expected 'dict', 'list', or 'str' value for 'cookies' " - "option, got '%s' (%s)", + self.log.error( + "cookies: Expected 'dict', 'list', or 'str' value for " + "'cookies' option, got '%s' instead (%r)", cookies_source.__class__.__name__, cookies_source) def cookies_store(self): @@ -569,7 +571,8 @@ class Extractor(): util.cookiestxt_store(fp, self.cookies) os.replace(path_tmp, path) except OSError as exc: - self.log.warning("cookies: %s", exc) + self.log.error("cookies: Failed to write to '%s' " + "(%s: %s)", path, exc.__class__.__name__, exc) def cookies_update(self, cookies, domain=""): """Update the session's cookiejar with 'cookies'""" diff --git a/test/test_cookies.py b/test/test_cookies.py index 9ba562cc..829436d7 100644 --- a/test/test_cookies.py +++ b/test/test_cookies.py @@ -14,6 +14,7 @@ from unittest import mock import time import logging +import datetime import tempfile from os.path import join @@ -70,8 +71,7 @@ class TestCookiejar(unittest.TestCase): self.assertEqual(len(cookies), 0) self.assertEqual(mock_warning.call_count, 1) - self.assertEqual(mock_warning.call_args[0][0], "cookies: %s") - self.assertIsInstance(mock_warning.call_args[0][1], exc) + self.assertIsInstance(mock_warning.call_args[0][-1], exc) class TestCookiedict(unittest.TestCase): @@ -205,27 +205,32 @@ class TestCookieUtils(unittest.TestCase): now = int(time.time()) log = logging.getLogger("generic") - extr.cookies.set("a", "1", expires=now-100) + extr.cookies.set("a", "1", expires=now-100, domain=".example.org") with mock.patch.object(log, "warning") as mw: self.assertFalse(extr.cookies_check(("a",))) self.assertEqual(mw.call_count, 1) - self.assertEqual(mw.call_args[0], ("Cookie '%s' has expired", "a")) + self.assertEqual(mw.call_args[0], ( + "cookies: %s/%s expired at %s", "example.org", "a", + datetime.datetime.fromtimestamp(now-100))) - extr.cookies.set("a", "1", expires=now+100) + extr.cookies.set("a", "1", expires=now+100, domain=".example.org") with mock.patch.object(log, "warning") as mw: self.assertTrue(extr.cookies_check(("a",))) self.assertEqual(mw.call_count, 1) self.assertEqual(mw.call_args[0], ( - "Cookie '%s' will expire in less than %s hour%s", "a", 1, "")) + "cookies: %s/%s will expire in less than %s hour%s", + "example.org", "a", 1, "")) - extr.cookies.set("a", "1", expires=now+100+7200) + extr.cookies.set("a", "1", expires=now+100+7200, domain=".example.org") with mock.patch.object(log, "warning") as mw: self.assertTrue(extr.cookies_check(("a",))) self.assertEqual(mw.call_count, 1) self.assertEqual(mw.call_args[0], ( - "Cookie '%s' will expire in less than %s hour%s", "a", 3, "s")) + "cookies: %s/%s will expire in less than %s hour%s", + "example.org", "a", 3, "s")) - extr.cookies.set("a", "1", expires=now+100+24*3600) + extr.cookies.set( + "a", "1", expires=now+100+24*3600, domain=".example.org") with mock.patch.object(log, "warning") as mw: self.assertTrue(extr.cookies_check(("a",))) self.assertEqual(mw.call_count, 0)