aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp/cookies.py
diff options
context:
space:
mode:
Diffstat (limited to 'yt_dlp/cookies.py')
-rw-r--r--yt_dlp/cookies.py28
1 files changed, 14 insertions, 14 deletions
diff --git a/yt_dlp/cookies.py b/yt_dlp/cookies.py
index c5fb5ab68..9100f46ac 100644
--- a/yt_dlp/cookies.py
+++ b/yt_dlp/cookies.py
@@ -128,9 +128,14 @@ def _extract_firefox_cookies(profile, container, logger):
else:
search_root = os.path.join(_firefox_browser_dir(), profile)
+ cookie_database_path = _find_most_recently_used_file(search_root, 'cookies.sqlite', logger)
+ if cookie_database_path is None:
+ raise FileNotFoundError(f'could not find firefox cookies database in {search_root}')
+ logger.debug(f'Extracting cookies from: "{cookie_database_path}"')
+
container_id = None
- if container is not None:
- containers_path = os.path.join(search_root, 'containers.json')
+ if container not in (None, 'none'):
+ containers_path = os.path.join(os.path.dirname(cookie_database_path), 'containers.json')
if not os.path.isfile(containers_path) or not os.access(containers_path, os.R_OK):
raise FileNotFoundError(f'could not read containers.json in {search_root}')
with open(containers_path, 'r') as containers:
@@ -142,26 +147,21 @@ def _extract_firefox_cookies(profile, container, logger):
if not isinstance(container_id, int):
raise ValueError(f'could not find firefox container "{container}" in containers.json')
- cookie_database_path = _find_most_recently_used_file(search_root, 'cookies.sqlite', logger)
- if cookie_database_path is None:
- raise FileNotFoundError(f'could not find firefox cookies database in {search_root}')
- logger.debug(f'Extracting cookies from: "{cookie_database_path}"')
-
with tempfile.TemporaryDirectory(prefix='yt_dlp') as tmpdir:
cursor = None
try:
cursor = _open_database_copy(cookie_database_path, tmpdir)
- origin_attributes = ''
if isinstance(container_id, int):
- origin_attributes = f'^userContextId={container_id}'
logger.debug(
f'Only loading cookies from firefox container "{container}", ID {container_id}')
- try:
cursor.execute(
- 'SELECT host, name, value, path, expiry, isSecure FROM moz_cookies WHERE originAttributes=?',
- (origin_attributes, ))
- except sqlite3.OperationalError:
- logger.debug('Database exception, loading all cookies')
+ 'SELECT host, name, value, path, expiry, isSecure FROM moz_cookies WHERE originAttributes LIKE ? OR originAttributes LIKE ?',
+ (f'%userContextId={container_id}', f'%userContextId={container_id}&%'))
+ elif container == 'none':
+ logger.debug('Only loading cookies not belonging to any container')
+ cursor.execute(
+ 'SELECT host, name, value, path, expiry, isSecure FROM moz_cookies WHERE NOT INSTR(originAttributes,"userContextId=")')
+ else:
cursor.execute('SELECT host, name, value, path, expiry, isSecure FROM moz_cookies')
jar = YoutubeDLCookieJar()
with _create_progress_bar(logger) as progress_bar: