From 08e308348b2825f4dfe309158c25a1d55ac45271 Mon Sep 17 00:00:00 2001 From: Heiner Lohaus Date: Mon, 20 Nov 2023 14:00:40 +0100 Subject: Add webdriver module --- g4f/Provider/helper.py | 84 +------------------------------------------------- 1 file changed, 1 insertion(+), 83 deletions(-) (limited to 'g4f/Provider/helper.py') diff --git a/g4f/Provider/helper.py b/g4f/Provider/helper.py index 03e9ba94..2171f0b7 100644 --- a/g4f/Provider/helper.py +++ b/g4f/Provider/helper.py @@ -6,7 +6,6 @@ import webbrowser import random import string import secrets -import time from os import path from asyncio import AbstractEventLoop from platformdirs import user_config_dir @@ -21,26 +20,8 @@ from browser_cookie3 import ( firefox, BrowserCookieError ) -try: - from selenium.webdriver.remote.webdriver import WebDriver -except ImportError: - class WebDriver(): - pass -try: - from undetected_chromedriver import Chrome, ChromeOptions -except ImportError: - class Chrome(): - def __init__(): - raise RuntimeError('Please install the "undetected_chromedriver" package') - class ChromeOptions(): - def add_argument(): - pass -try: - from pyvirtualdisplay import Display -except ImportError: - pass -from ..typing import Dict, Messages, Union, Tuple +from ..typing import Dict, Messages from .. import debug # Change event loop policy on windows @@ -135,74 +116,11 @@ def format_prompt(messages: Messages, add_special_tokens=False) -> str: return f"{formatted}\nAssistant:" -def get_browser( - user_data_dir: str = None, - headless: bool = False, - proxy: str = None, - options: ChromeOptions = None -) -> Chrome: - if user_data_dir == None: - user_data_dir = user_config_dir("g4f") - if proxy: - if not options: - options = ChromeOptions() - options.add_argument(f'--proxy-server={proxy}') - return Chrome(options=options, user_data_dir=user_data_dir, headless=headless) - -class WebDriverSession(): - def __init__( - self, - web_driver: WebDriver = None, - user_data_dir: str = None, - headless: bool = False, - virtual_display: bool = False, - proxy: str = None, - options: ChromeOptions = None - ): - self.web_driver = web_driver - self.user_data_dir = user_data_dir - self.headless = headless - self.virtual_display = virtual_display - self.proxy = proxy - self.options = options - - def reopen( - self, - user_data_dir: str = None, - headless: bool = False, - virtual_display: bool = False - ) -> WebDriver: - if user_data_dir == None: - user_data_dir = self.user_data_dir - self.default_driver.quit() - if not virtual_display and self.virtual_display: - self.virtual_display.stop() - self.default_driver = get_browser(user_data_dir, headless, self.proxy) - return self.default_driver - - def __enter__(self) -> WebDriver: - if self.web_driver: - return self.web_driver - if self.virtual_display == True: - self.virtual_display = Display(size=(1920,1080)) - self.virtual_display.start() - self.default_driver = get_browser(self.user_data_dir, self.headless, self.proxy, self.options) - return self.default_driver - - def __exit__(self, exc_type, exc_val, exc_tb): - if self.default_driver: - self.default_driver.close() - time.sleep(0.1) - self.default_driver.quit() - if self.virtual_display: - self.virtual_display.stop() - def get_random_string(length: int = 10) -> str: return ''.join( random.choice(string.ascii_lowercase + string.digits) for _ in range(length) ) - def get_random_hex() -> str: return secrets.token_hex(16).zfill(32) \ No newline at end of file -- cgit v1.2.3