From 0bca60accd9c3bb4d2fe6123d41db6be6ab2273d Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期六, 12 十月 2024 18:22:56 +0800
Subject: [PATCH] bug修复

---
 third_data/third_blocks_manager.py |   64 +++++++++++++++++++++++++++++---
 1 files changed, 58 insertions(+), 6 deletions(-)

diff --git a/third_data/third_blocks_manager.py b/third_data/third_blocks_manager.py
index 19cc4da..f8c906c 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
+            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):
@@ -243,9 +288,16 @@
 
 
 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)
+    blocks_str = """
+鏄ㄦ棩杩炴澘
+鏄ㄦ棩杩炴澘_鍚竴瀛�
+鏄ㄦ棩娑ㄥ仠
+鏄ㄦ棩娑ㄥ仠_鍚竴瀛�
+    """
+    blocks = set()
+    for x in blocks_str.split("\n"):
+        if x.strip():
+            blocks.add(x.strip())
+
+    print(len(blocks))
+    print(len(InvalidBlockManager().get_invalid_blocks()))

--
Gitblit v1.8.0