49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
from os import chmod
|
|
from sys import platform
|
|
from zipfile import ZipFile
|
|
|
|
from requests import get
|
|
|
|
from manga_py.fs import is_file, dirname, path_join, get_util_home_path
|
|
|
|
|
|
class WebDriver:
|
|
driver_version = '2.40'
|
|
|
|
@staticmethod
|
|
def is_win():
|
|
return ~platform.find('win32')
|
|
|
|
def download_drivder(self):
|
|
url_prefix = 'https://chromedriver.storage.googleapis.com/'
|
|
url = '/chromedriver_linux64.zip'
|
|
if ~platform.find('darwin'):
|
|
url = '/chromedriver_mac64.zip'
|
|
if self.is_win():
|
|
url = '/chromedriver_win32.zip'
|
|
|
|
path = path_join(get_util_home_path(), 'driver.zip')
|
|
|
|
with open(path, 'wb') as driver:
|
|
driver.write(get(url_prefix + self.driver_version + url).content)
|
|
driver.close()
|
|
with ZipFile(path) as file:
|
|
file.extractall(dirname(self._driver_path()))
|
|
|
|
def _driver_path(self):
|
|
if self.is_win():
|
|
driver = 'chromedriver.exe'
|
|
else:
|
|
driver = 'chromedriver'
|
|
return path_join(get_util_home_path(), driver)
|
|
|
|
def get_driver(self):
|
|
from selenium import webdriver # need, if captcha detected
|
|
driver_path = self._driver_path()
|
|
if not is_file(driver_path):
|
|
self.download_drivder()
|
|
self.is_win() or chmod(driver_path, 0o755)
|
|
driver = webdriver.Chrome(executable_path=driver_path)
|
|
driver.set_window_size(500, 600)
|
|
return driver
|