From 65afea1ba534b51f947cbe7989d7f4d650bbc9e6 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期一, 04 十一月 2024 18:29:00 +0800
Subject: [PATCH] 代码异常保护

---
 third_data/third_blocks_manager.py |   74 ++++++++++++++++++++++++++++++++----
 1 files changed, 65 insertions(+), 9 deletions(-)

diff --git a/third_data/third_blocks_manager.py b/third_data/third_blocks_manager.py
index 19cc4da..456988f 100644
--- a/third_data/third_blocks_manager.py
+++ b/third_data/third_blocks_manager.py
@@ -208,17 +208,62 @@
         if blocks is None or len(blocks) == 0:
             return set()
         fbs = set()
+        invalid_blocks = InvalidBlockManager().get_invalid_blocks()
         for block in blocks:
             if block.endswith("姒傚康"):
                 block = block[:-2]
-            # b = self.get_map_blocks_cache(block)
-            # if b:
-            #     fbs |= b
+            b = self.get_map_blocks_cache(block)
+            if b:
+                fbs |= b
+            if block in invalid_blocks:
+                continue
             fbs.add(block)
         return fbs
 
     def get_all_blocks(self):
         return self.__block_map.keys()
+
+
+class InvalidBlockManager:
+    """
+    鏃犳晥鏉垮潡绠$悊
+    """
+    __mysql = Mysqldb()
+    __instance = None
+    __block = set()
+
+    def __new__(cls, *args, **kwargs):
+        if not cls.__instance:
+            cls.__instance = super(InvalidBlockManager, cls).__new__(cls, *args, **kwargs)
+            cls.__load_data()
+        return cls.__instance
+
+    @classmethod
+    def __load_data(cls):
+        results = cls.__mysql.select_all("select _block from invalid_block")
+        cls.__block.clear()
+        for result in results:
+            if result[0]:
+                cls.__block.add(result[0])
+
+    def get_invalid_blocks(self):
+        """
+        鑾峰彇鏃犳晥鐨勬澘鍧�
+        @return:
+        """
+        return self.__block
+
+    def set_incalid_blocks(self, blocks):
+        """
+        璁剧疆鏃犳晥鐨勬澘鍧�
+        @param blocks:
+        @return:
+        """
+        # 鍏堝垹闄ゆ墍鏈夛紝鐒跺悗鍐嶆坊鍔�
+        self.__mysql.execute("delete from invalid_block")
+        for b in blocks:
+            self.__mysql.execute(f"insert into invalid_block(_block) values('{b}')")
+        self.__block = set(blocks)
 
 
 def load_if_less(codes):
@@ -242,10 +287,21 @@
                 pass
 
 
+def __add_invlaid_blocks():
+    blocks_str = """
+    鏄ㄦ棩杩炴澘
+    鏄ㄦ棩杩炴澘_鍚竴瀛�
+    鏄ㄦ棩娑ㄥ仠
+    鏄ㄦ棩娑ㄥ仠_鍚竴瀛�
+        """
+    blocks = set()
+    for x in blocks_str.split("\n"):
+        if x.strip():
+            blocks.add(x.strip())
+    print(len(blocks))
+    InvalidBlockManager().set_incalid_blocks(blocks)
+
+
 if __name__ == '__main__':
-    code = "000761"
-    try:
-        blocks = middle_api_protocol.request(middle_api_protocol.get_third_blocks(code, 4))
-        print(blocks)
-    except Exception as e:
-        print(e)
+    pass
+

--
Gitblit v1.8.0