Browse Source

rewrite of chromedriver download

- Always pick the latest version of chromedriver
 - rewrited using requests instead of the old urllib package
pull/114/head
Alfred Sawaya 5 years ago
parent
commit
8e3c15aa58
  1. 51
      deletefb/tools/chrome_driver.py
  2. 1
      requirements.txt

51
deletefb/tools/chrome_driver.py

@ -2,17 +2,18 @@ from ..exceptions import UnknownOSException
from .common import NO_CHROME_DRIVER from .common import NO_CHROME_DRIVER
from clint.textui import puts, colored from clint.textui import puts, colored
from selenium import webdriver from selenium import webdriver
from urllib.request import urlretrieve
import os, sys, stat, platform import os, sys, stat, platform
import progressbar import progressbar
import re import re
import zipfile import zipfile
import requests
chrome_drivers = { chrome_drivers = {
"Windows" : "https://chromedriver.storage.googleapis.com/80.0.3987.16/chromedriver_win32.zip", "Windows" : "https://chromedriver.storage.googleapis.com/{0}/chromedriver_win32.zip",
"Darwin" : "https://chromedriver.storage.googleapis.com/80.0.3987.16/chromedriver_mac64.zip", "Darwin" : "https://chromedriver.storage.googleapis.com/{0}/chromedriver_mac64.zip",
"Linux" : "https://chromedriver.storage.googleapis.com/80.0.3987.16/chromedriver_linux64.zip" "Linux" : "https://chromedriver.storage.googleapis.com/{0}/chromedriver_linux64.zip"
} }
def extract_zip(filename): def extract_zip(filename):
@ -69,36 +70,32 @@ def get_webdriver():
if not chrome_webdriver: if not chrome_webdriver:
raise UnknownOSException("Unknown Operating system platform") raise UnknownOSException("Unknown Operating system platform")
global total_size file_name = chrome_webdriver.split('/')[-1]
try:
def show_progress(*res): r = requests.get('https://chromedriver.storage.googleapis.com/LATEST_RELEASE')
global total_size r.raise_for_status()
pbar = None latest_release = r.text
downloaded = 0 puts(colored.yellow("Downloading Chrome Webdriver {0}".format(latest_release)))
block_num, block_size, total_size = res
with open(file_name, 'wb') as f:
if not pbar: r = requests.get(chrome_webdriver.format(latest_release), stream=True)
r.raise_for_status()
total_size = int(r.headers['Content-Length'])
pbar = progressbar.ProgressBar(maxval=total_size) pbar = progressbar.ProgressBar(maxval=total_size)
pbar.start() pbar.start()
downloaded += block_num * block_size for chunk in r.iter_content(16384):
pbar.update(f.write(chunk))
if downloaded < total_size:
pbar.update(downloaded)
else:
pbar.finish() pbar.finish()
puts(colored.yellow("Downloading Chrome Webdriver"))
file_name = chrome_webdriver.split('/')[-1]
response = urlretrieve(chrome_webdriver, file_name, show_progress)
if int(response[1].get('Content-Length')) == total_size:
puts(colored.green(f"DONE!")) puts(colored.green(f"DONE!"))
return "{0}/{1}".format(os.getcwd(), extract_zip(file_name)) return "{0}/{1}".format(os.getcwd(), extract_zip(file_name))
except Exception as e:
else:
puts(colored.red("An error Occurred While trying to download the driver.")) puts(colored.red("An error Occurred While trying to download the driver."))
print(e)
# remove the downloaded file and exit # remove the downloaded file and exit
os.remove(file_name) try:
os.remove(file_name)
except FileNotFoundError:
pass
sys.stderr.write(NO_CHROME_DRIVER) sys.stderr.write(NO_CHROME_DRIVER)
sys.exit(1) sys.exit(1)

1
requirements.txt

@ -26,5 +26,4 @@ tldextract==2.2.0
tqdm==4.32.2 tqdm==4.32.2
twine==1.13.0 twine==1.13.0
typing==3.7.4 typing==3.7.4
urllib3==1.25.2
webencodings==0.5.1 webencodings==0.5.1

Loading…
Cancel
Save