Added URL helper

This commit is contained in:
zhaoyafan 2025-02-12 00:11:28 +08:00
parent b506ac1554
commit 2c46dda499
1 changed files with 48 additions and 2 deletions

View File

@ -50,6 +50,7 @@ from starlette.websockets import WebSocketDisconnect
from winotify import Notification, audio
from func_timeout import func_set_timeout, FunctionTimedOut
from pathlib import Path
from urllib.parse import urlparse, urlencode, parse_qs, urljoin
sys.path.append(os.path.join(os.path.dirname(__file__), 'Packages'))
@ -198,7 +199,6 @@ class BrowserMobileEmulation(dict):
class CustomHTTPAdapter(requests.adapters.HTTPAdapter):
def __init__(self, *args, **kwargs):
from urllib.parse import urlparse
self.urlparse = urlparse
self.hosts = {}
self.addrs = {}
@ -477,6 +477,51 @@ class ColorUtils:
return r, g, b
class UrlHelper:
def __init__(self, url: str):
self._url = str(url)
self._parsed_url = urlparse(self._url)
def __str__(self):
return self._url
@classmethod
def encode_query_string(cls, qs_object):
if not isinstance(qs_object, dict):
raise TypeError('Wrong parameter type.')
return urlencode(qs_object, doseq=True)
@classmethod
def decode_query_string(cls, qs_string):
if not isinstance(qs_string, str):
raise TypeError('Wrong parameter type.')
return parse_qs(qs_string, keep_blank_values=True)
@classmethod
def join(cls, base, relative):
return urljoin(base, relative)
@property
def scheme(self):
return self._parsed_url.scheme
@property
def netloc(self):
return self._parsed_url.netloc
@property
def path(self):
return self._parsed_url.path
@property
def query_string(self):
return self._parsed_url.query
@property
def fragment(self):
return self._parsed_url.fragment
class FetchResult:
def __init__(self, data):
self.status = 0
@ -683,6 +728,7 @@ class Browser(InspectRequestsMixin, DriverCommonMixin, Chrome):
self.set_page_load_timeout(25)
# Open the default page.
home and self.open(home)
self.UrlHelper = self.url_helper = UrlHelper
@property
def title(self) -> str:
@ -2044,7 +2090,7 @@ class WebServer:
manager_data_file=os.path.join(data, 'manager.json'),
browser_data_home=os.path.join(data, 'users'),
browser_init_home=os.path.join(root, 'initialize'),
use_selenium_wire=1
use_selenium_wire=0
)
self.browser_manager.load_plugins(default_plugins, is_external=0)
self.browser_manager.load_plugins_from_external_module()