From 69f837bbf69c309a3c759c779665d7b146fc1072 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 22 Mar 2019 21:37:02 -0400 Subject: [PATCH] simplify chrome_user_data_dir default --- archivebox/config.py | 34 +++++++++++++++++++++++++++------- archivebox/util.py | 24 ------------------------ 2 files changed, 27 insertions(+), 31 deletions(-) diff --git a/archivebox/config.py b/archivebox/config.py index 02b335cd..749a0e26 100644 --- a/archivebox/config.py +++ b/archivebox/config.py @@ -74,23 +74,21 @@ USE_CHROME = FETCH_PDF or FETCH_SCREENSHOT or FETCH_DOM USE_WGET = FETCH_WGET or FETCH_WGET_REQUISITES or FETCH_WARC if not CHROME_BINARY: - common_chrome_executable_names = ( + # Precedence: Chromium, Chrome, Beta, Canary, Unstable, Dev + default_executable_paths = ( 'chromium-browser', 'chromium', '/Applications/Chromium.app/Contents/MacOS/Chromium', - 'google-chrome', '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', 'google-chrome-stable', - 'google-chrome-beta', - 'google-chrome-unstable', - 'google-chrome-dev', 'google-chrome-canary', '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary', - + 'google-chrome-unstable', + 'google-chrome-dev', ) - for name in common_chrome_executable_names: + for name in default_executable_paths: full_path_exists = shutil.which(name) if full_path_exists: CHROME_BINARY = name @@ -98,6 +96,28 @@ if not CHROME_BINARY: else: CHROME_BINARY = 'chromium-browser' +if not CHROME_USER_DATA_DIR: + # Precedence: Chromium, Chrome, Beta, Canary, Unstable, Dev + default_profile_paths = ( + '~/.config/chromium', + '~/Library/Application Support/Chromium', + '~/AppData/Local/Chromium/User Data', + '~/.config/google-chrome', + '~/Library/Application Support/Google/Chrome', + '~/AppData/Local/Google/Chrome/User Data', + '~/.config/google-chrome-stable', + '~/.config/google-chrome-beta', + '~/Library/Application Support/Google/Chrome Canary', + '~/AppData/Local/Google/Chrome SxS/User Data', + '~/.config/google-chrome-unstable', + '~/.config/google-chrome-dev', + ) + for path in default_profile_paths: + full_path = os.path.expanduser(path) + if os.path.exists(full_path): + CHROME_USER_DATA_DIR = full_path + break + # print('[i] Using Chrome binary: {}'.format(shutil.which(CHROME_BINARY) or CHROME_BINARY)) ### Terminal Configuration diff --git a/archivebox/util.py b/archivebox/util.py index 7bc43ee4..70b57336 100644 --- a/archivebox/util.py +++ b/archivebox/util.py @@ -596,16 +596,12 @@ def chmod_file(path, cwd='.', permissions=OUTPUT_PERMISSIONS, timeout=30): raise Exception('Failed to chmod {}/{}'.format(cwd, path)) -CACHED_USER_DATA_DIR = CHROME_USER_DATA_DIR - def chrome_args(binary=CHROME_BINARY, user_data_dir=CHROME_USER_DATA_DIR, headless=CHROME_HEADLESS, sandbox=CHROME_SANDBOX, check_ssl_validity=CHECK_SSL_VALIDITY, user_agent=CHROME_USER_AGENT, resolution=RESOLUTION, timeout=TIMEOUT): """helper to build up a chrome shell command with arguments""" - global CACHED_USER_DATA_DIR - user_data_dir = user_data_dir or CACHED_USER_DATA_DIR cmd_args = [binary] if headless: @@ -627,27 +623,7 @@ def chrome_args(binary=CHROME_BINARY, user_data_dir=CHROME_USER_DATA_DIR, if timeout: cmd_args += ('--timeout={}'.format((timeout) * 1000),) - # Find chrome user data directory - default_profile_paths = ( - '~/.config/chromium', - '~/Library/Application Support/Chromium', - '~/AppData/Local/Chromium/User Data', - '~/.config/google-chrome', - '~/Library/Application Support/Google/Chrome', - '~/AppData/Local/Google/Chrome/User Data', - '~/.config/google-chrome-beta', - '~/.config/google-chrome-unstable', - '~/Library/Application Support/Google/Chrome Canary', - '~/AppData/Local/Google/Chrome SxS/User Data', - ) if user_data_dir: cmd_args.append('--user-data-dir={}'.format(user_data_dir)) - else: - for path in default_profile_paths: - full_path = os.path.expanduser(path) - if os.path.exists(full_path): - CACHED_USER_DATA_DIR = full_path - cmd_args.append('--user-data-dir={}'.format(full_path)) - break return cmd_args