[cookies] Handle sqlite ImportError gracefully (#554)

Closes #544
Authored by: mbway
This commit is contained in:
Matt Broadway 2021-07-23 15:26:19 +01:00 committed by GitHub
parent f45e6c1126
commit 767b02a99b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2,7 +2,6 @@
import json import json
import os import os
import shutil import shutil
import sqlite3
import struct import struct
import subprocess import subprocess
import sys import sys
@ -23,6 +22,15 @@
YoutubeDLCookieJar, YoutubeDLCookieJar,
) )
try:
import sqlite3
SQLITE_AVAILABLE = True
except ImportError:
# although sqlite3 is part of the standard library, it is possible to compile python without
# sqlite support. See: https://github.com/yt-dlp/yt-dlp/issues/544
SQLITE_AVAILABLE = False
try: try:
from Crypto.Cipher import AES from Crypto.Cipher import AES
CRYPTO_AVAILABLE = True CRYPTO_AVAILABLE = True
@ -90,6 +98,10 @@ def extract_cookies_from_browser(browser_name, profile=None, logger=YDLLogger())
def _extract_firefox_cookies(profile, logger): def _extract_firefox_cookies(profile, logger):
logger.info('Extracting cookies from firefox') logger.info('Extracting cookies from firefox')
if not SQLITE_AVAILABLE:
logger.warning('Cannot extract cookies from firefox without sqlite3 support. '
'Please use a python interpreter compiled with sqlite3 support')
return YoutubeDLCookieJar()
if profile is None: if profile is None:
search_root = _firefox_browser_dir() search_root = _firefox_browser_dir()
@ -195,6 +207,12 @@ def _get_chromium_based_browser_settings(browser_name):
def _extract_chrome_cookies(browser_name, profile, logger): def _extract_chrome_cookies(browser_name, profile, logger):
logger.info('Extracting cookies from {}'.format(browser_name)) logger.info('Extracting cookies from {}'.format(browser_name))
if not SQLITE_AVAILABLE:
logger.warning(('Cannot extract cookies from {} without sqlite3 support. '
'Please use a python interpreter compiled with sqlite3 support').format(browser_name))
return YoutubeDLCookieJar()
config = _get_chromium_based_browser_settings(browser_name) config = _get_chromium_based_browser_settings(browser_name)
if profile is None: if profile is None: