From 486c4687d9f370c47d6fa3987219c9454b0e8c75 Mon Sep 17 00:00:00 2001 From: Wesley Kerfoot Date: Sat, 7 Mar 2020 11:00:15 -0500 Subject: [PATCH] use cache_dir for downloading chromedriver --- deletefb/tools/chrome_driver.py | 29 ++++++++++++++++++++--------- deletefb/version.py | 6 ++++++ 2 files changed, 26 insertions(+), 9 deletions(-) create mode 100644 deletefb/version.py diff --git a/deletefb/tools/chrome_driver.py b/deletefb/tools/chrome_driver.py index 1f6081d..d19f0f6 100644 --- a/deletefb/tools/chrome_driver.py +++ b/deletefb/tools/chrome_driver.py @@ -5,12 +5,22 @@ from selenium import webdriver from shutil import which from subprocess import check_output from urllib.request import urlretrieve +from appdirs import AppDirs +from ..version import version import os, sys, stat, platform import progressbar import re import zipfile import requests +import pathlib + +cache_dir = AppDirs("DeleteFB", version=version).user_cache_dir + +try: + pathlib.Path(cache_dir).mkdir(parents=True, exist_ok=True) +except FileExistsError: + pass def extract_zip(filename): """ @@ -25,10 +35,10 @@ def extract_zip(filename): sys.exit(1) # Save the name of the new file - new_file_name = _file.namelist()[0] + new_file_name = f"{cache_dir}/{_file.namelist()[0]}" # Extract the file and make it executable - _file.extractall() + _file.extractall(path=cache_dir) driver_stat = os.stat(new_file_name) os.chmod(new_file_name, driver_stat.st_mode | stat.S_IEXEC) @@ -55,7 +65,6 @@ def get_chrome_version(chrome_binary_path=None): driver_locations = [which(loc) for loc in ["google-chrome", "google-chrome-stable", "chromium", "chrome.exe"]] for location in driver_locations: - print(location) if location: return parse_version(check_output([location, "--version"]).strip()) return None @@ -94,17 +103,19 @@ def get_webdriver(chrome_binary_path): Ensure a webdriver is available If Not, Download it. """ - cwd = os.listdir(os.getcwd()) + webdriver_regex = re.compile('chromedriver') - web_driver = list(filter(webdriver_regex.match, cwd)) + + web_driver = list(filter(webdriver_regex.match, cache_dir)) + if web_driver: # check if a extracted copy already exists - if not os.path.isfile('chromedriver'): + if not os.path.isfile(f"{cache_dir}/chromedriver"): # Extract file extract_zip(web_driver[0]) - return "{0}/chromedriver".format(os.getcwd()) + return "{0}/chromedriver".format(cache_dir) else: # Download it according to the current machine @@ -133,13 +144,13 @@ def get_webdriver(chrome_binary_path): pbar.finish() puts(colored.yellow("Downloading Chrome Webdriver")) - file_name = chrome_webdriver.split('/')[-1] + file_name = f"{cache_dir}/{chrome_webdriver.split('/')[-1]}" response = urlretrieve(chrome_webdriver, file_name, show_progress) if int(response[1].get("Content-Length")) == total_size: puts(colored.green("Completed downloading the Chrome Driver.")) - return "{0}/{1}".format(os.getcwd(), extract_zip(file_name)) + return extract_zip(file_name) else: puts(colored.red("An error Occurred While trying to download the driver.")) diff --git a/deletefb/version.py b/deletefb/version.py new file mode 100644 index 0000000..edbe5b0 --- /dev/null +++ b/deletefb/version.py @@ -0,0 +1,6 @@ +import pkg_resources # part of setuptools + +try: + version = pkg_resources.require("delete-facebook-posts")[0].version +except pkg_resources.DistributionNotFound: + version = "source"