From 568c763084b926a6f2d632b7ac65b9ec8280752f Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 10 六月 2025 15:41:34 +0800
Subject: [PATCH] 网页功能完善

---
 main.py |  106 +++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 71 insertions(+), 35 deletions(-)

diff --git a/main.py b/main.py
index 308e841..c6bc753 100644
--- a/main.py
+++ b/main.py
@@ -18,7 +18,7 @@
 from PyQt5.QtGui import QFont, QPalette, QColor, QTextOption
 
 from PyQt5.QtWebChannel import QWebChannel
-from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineSettings
+from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineSettings, QWebEnginePage
 from PyQt5.QtWidgets import QMainWindow, QApplication, QAction, QMessageBox, QLabel
 
 from PyQt5.QtCore import Qt, pyqtSlot, QObject, pyqtSignal, QTimer, QUrl, QPoint
@@ -55,18 +55,20 @@
             result, need_delegate = LocalKanPanNetworkDelegate.http_delegate_request(url)
             if not need_delegate:
                 result = network_util.http_get(url)
-            print(url, "璇锋眰缁撴灉锛�",url, result)
+            print(url, "璇锋眰缁撴灉锛�", result)
             self.signal_request.emit(callback_info[0], callback_info[1], result)
             return result
         except Exception as e:
-            print("閾炬帴璇锋眰鍑洪敊锛�"+ url)
             logging.exception(e)
 
-    def __socket_request(self, text, callback_info):
+    def __socket_request(self, text, callback_info, port=None):
         try:
             print("socket璜嬫眰锛�", text)
-            result = network_util.socket_request(text)
-            print("璇锋眰缁撴灉锛�",text,  result)
+            if port:
+                result = network_util.socket_request(text, port=port)
+            else:
+                result = network_util.socket_request(text)
+            print("璇锋眰缁撴灉锛�", result)
             self.signal_request.emit(callback_info[0], callback_info[1], result)
             return result
         except Exception as e:
@@ -109,6 +111,34 @@
             pass
         callback_info = json.loads(callback_info)
         t1 = threading.Thread(target=lambda: self.__socket_request(text, callback_info))
+        t1.setDaemon(True)
+        t1.start()
+
+    @pyqtSlot(str, str)
+    def ls_socket_request(self, text, callback_info):
+        print("ls_socket_request", text)
+        try:
+            text_json = json.loads(text)
+            params = []
+            for k in text_json:
+                if k == "sign":
+                    continue
+                if type(text_json[k]) == dict or type(text_json[k]) == list:
+                    params.append(f"{k}={json.dumps(text_json[k], separators=(',', ':'))}")
+                else:
+                    params.append(f"{k}={text_json[k]}")
+            params.sort()
+            params.append("%Yeshi2014@#.")
+            params_str = "&".join(params)
+            md5 = hashlib.md5()
+            md5.update(params_str.encode("utf-8"))
+            md5_hash = md5.hexdigest()
+            text_json["sign"] = md5_hash
+            text = json.dumps(text_json)
+        except:
+            pass
+        callback_info = json.loads(callback_info)
+        t1 = threading.Thread(target=lambda: self.__socket_request(text, callback_info, port=14008))
         t1.setDaemon(True)
         t1.start()
 
@@ -174,12 +204,12 @@
         window_height = 80
         padding = 10
         self.resize(300, 50)
-        hwnds = win32_util.search_window("鎮诞鐩洏")
-        if hwnds:
-            rect = win32gui.GetWindowRect(hwnds[0])
-            self.move(rect[0] + padding - 3, rect[1] - window_height - 30)
-            if rect[2] - rect[0] > 0:
-                self.resize((rect[2] - rect[0]) - (padding - 2) * 2, window_height)
+        # hwnds = win32_util.search_window("鎮诞鐩洏", is_one_result=True)
+        # if hwnds:
+        #     rect = win32gui.GetWindowRect(hwnds[0])
+        #     self.move(rect[0] + padding - 3, rect[1] - window_height - 30)
+        #     if rect[2] - rect[0] > 0:
+        #         self.resize((rect[2] - rect[0]) - (padding - 2) * 2, window_height)
         self.setWindowTitle("娑堟伅鎻愮ず")
         self.setWindowFlag(Qt.WindowStaysOnTopHint, True)
         self.setWindowOpacity(0.9)
@@ -323,6 +353,16 @@
             print("")
 
 
+class WebEnginePage(QWebEnginePage):
+    def javaScriptConsoleMessage(self, level, message, lineNumber, sourceID):
+        """澶勭悊 JavaScript 鎺у埗鍙版秷鎭�"""
+        print(f"JavaScript Console Error: {message} at line {lineNumber} of {sourceID}")
+
+    def onLoadFailed(self, errorCode, failingUrl, errorDescription):
+        """澶勭悊鍔犺浇澶辫触鐨勬儏鍐�"""
+        print(f"Failed to load URL: {failingUrl}, Error: {errorDescription}, Code: {errorCode}")
+
+
 class MainWindow(QMainWindow):
     signal_update_code = pyqtSignal(str)
 
@@ -403,6 +443,9 @@
             size = (self.width(), self.height())
             self.wx_pipe.send(json.dumps({"type": "codes_setting", "pos": (ps[0] + size[0] / 2, ps[1] + size[1] / 2)}))
 
+        def __show_dead_hwnds():
+            self.wx_pipe.send(json.dumps({"type": "show_dead_hwnds"}))
+
         def __manage_ths_pos():
             ps = (self.x(), self.y())
             size = (self.width(), self.height())
@@ -419,21 +462,16 @@
         def __clear_webview_cache():
             self.webview.page().profile().clearHttpCache()
 
+        def __show_ths_flash_trade():
+            hwnds = ths_util.get_flash_trade_hwnds()
+            for hwnd in hwnds:
+                if not win32gui.IsWindowVisible(hwnd):
+                    win32gui.BringWindowToTop(hwnd)
+                win32_util.move_window(hwnd, 0, 0)
+
         menubar = self.menuBar()
 
         setting_ = menubar.addMenu('&璁剧疆')
-
-        juejin_action = QAction("&鎺橀噾鍙傛暟閰嶇疆", self)
-        juejin_action.triggered.connect(__set_juejin_params)
-        setting_.addAction(juejin_action)
-
-        action = QAction("&浠g爜绠$悊", self)
-        action.triggered.connect(__manage_code)
-        setting_.addAction(action)
-
-        action = QAction("&涓嬭浇娑ㄥ仠浠g爜", self)
-        action.triggered.connect(__download_codes)
-        setting_.addAction(action)
 
         action = QAction("&GPU妫�娴�", self)
         action.triggered.connect(__gpu_is_avaiable)
@@ -443,18 +481,13 @@
         action.triggered.connect(__clear_webview_cache)
         setting_.addAction(action)
 
-        action = QAction("&鎺橀噾鍒嗘椂鏁版嵁涓嬭浇", self)
-        action.triggered.connect(__juejin_tick_download)
-        setting_.addAction(action)
-
         action = QAction("&鍚岃姳椤轰唬鐮佽瘑鍒�", self)
         action.triggered.connect(__ths_ocr_code)
         setting_.addAction(action)
 
-        auto_ = menubar.addMenu('&鑷姩鍖�')
-        action = QAction("&鍚岃姳椤鸿缃�", self)
-        action.triggered.connect(__manage_ths_pos)
-        auto_.addAction(action)
+        action = QAction("&姝诲彞鏌勭鐞�", self)
+        action.triggered.connect(__show_dead_hwnds)
+        setting_.addAction(action)
 
         view_ = menubar.addMenu('&瑙嗗浘')
         action = QAction("&鎵撳紑鍓睆", self)
@@ -465,9 +498,8 @@
         action.triggered.connect(__show_his_msg_window)
         view_.addAction(action)
 
-        view_ = menubar.addMenu('&浠g爜绠$悊')
-        view_.aboutToShow.connect(__manage_code)
-
+        view_ = menubar.addMenu('&鏄剧ず涓�閿崠鍑�')
+        view_.aboutToShow.connect(__show_ths_flash_trade)
 
     def __init__(self, wx_pipe):
         super().__init__()
@@ -482,6 +514,7 @@
             self.center()
         self.setWindowFlag(Qt.WindowStaysOnTopHint, True)
         self.webview = QWebEngineView()
+        self.webview.setPage(WebEnginePage())
         self.webview.settings().setAttribute(QWebEngineSettings.JavascriptEnabled, True)
         self.__menu()
         # JS妗ヨ缃�
@@ -524,6 +557,8 @@
         except Exception as e:
             print("")
         self.wx_pipe.send(json.dumps({"type": "exit"}))
+        wxGuiProcess.terminate()
+        wxGuiProcess.join()
         sys.exit(0)
 
     # 璇诲彇娑堟伅
@@ -568,6 +603,7 @@
 if __name__ == "__main__":
     freeze_support()
     p1, p2 = multiprocessing.Pipe()
+    global wxGuiProcess
     wxGuiProcess = Process(target=gui_wx.run, args=(p1,))
     wxGuiProcess.start()
 

--
Gitblit v1.8.0