44from PyQt5 .QtCore import Qt , QUrl
55from PyQt5 .QtNetwork import QNetworkCookie
66from PyQt5 .QtWidgets import QMainWindow
7+ from PyQt5 .QtWebEngineWidgets import QWebEnginePage
78from PyQt5 .QtWebEngineCore import QWebEngineUrlRequestInterceptor
89from qfluentwidgets import InfoBar , InfoBarPosition , FluentIcon as FIF , ToolTipFilter , ToolTipPosition
910from qframelesswindow .webengine import FramelessWebEngineView
@@ -31,6 +32,23 @@ def interceptRequest(self, info):
3132 info .setHttpHeader (b"referer" , self .referer_url .encode ())
3233
3334
35+ class CustomWebEnginePage (QWebEnginePage ):
36+ def createWindow (self , _type ):
37+ new_page = QWebEnginePage (self .profile (), self .parent ())
38+ new_page .urlChanged .connect (lambda url : self .setUrl (url ) if url .isValid () else None )
39+ return new_page
40+
41+
42+ class CustomFramelessWebEngineView (FramelessWebEngineView ):
43+ def createPage (self ):
44+ return CustomWebEnginePage (self .page ().profile (), self )
45+
46+ def __init__ (self , parent = None ):
47+ super ().__init__ (parent )
48+ custom_page = self .createPage ()
49+ self .setPage (custom_page )
50+
51+
3452class BrowserWindow (QMainWindow , Ui_browser ):
3553 def __init__ (self , gui , proxies : str = None ):
3654 super (BrowserWindow , self ).__init__ ()
@@ -40,8 +58,10 @@ def __init__(self, gui, proxies: str = None):
4058 if proxies :
4159 self .set_proxies (proxies )
4260 self .gui = gui
43- self .view = FramelessWebEngineView (self )
61+ self .view = CustomFramelessWebEngineView (self )
4462 self .profile = self .view .page ().profile ()
63+ self .profile .setHttpUserAgent (
64+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36" )
4565 self .profile .setUrlRequestInterceptor (self .interceptor )
4666 self .home_url = QUrl .fromLocalFile (self .gui .tf )
4767 self .set_env_mode ()
@@ -65,7 +85,7 @@ def set_env_mode(self):
6585 self .set_cookies ("ehentai" )
6686 elif index == 6 : # hitomi
6787 self .set_referer_nterceptor (self .gui .spiderUtils .index )
68-
88+
6989 def _set_dev_tools (self ):
7090 from PyQt5 .QtWebEngineWidgets import QWebEngineView , QWebEngineSettings
7191 settings = self .view .settings ()
@@ -222,8 +242,12 @@ def refresh_tf(html):
222242 self .js_execute ("get_curr_hml();" , refresh_tf )
223243
224244 # ---子任务模块
225- def init_tasks_progress_panel (self ):
226- self .js_execute ("initTaskPanel();" , lambda _ : self .gui .tf .set_tasks_progress_panel ())
245+ def init_tasks_progress_panel (self , callback = None ):
246+ def on_init_complete (_ ):
247+ self .gui .tf .set_tasks_progress_panel ()
248+ if callback :
249+ callback ()
250+ self .js_execute ("initTaskPanel();" , on_init_complete )
227251
228252 def add_task (self , tasks_obj ):
229253 _js_code = f"""addTask('{ tasks_obj .taskid } ', `{ tasks_obj .display_title } `, `{ tasks_obj .tasks_count } `, `{ tasks_obj .title_url } `);"""
0 commit comments