From e0c7bcb9a758373fac92393d2bdb811bfad0891e Mon Sep 17 00:00:00 2001
From: admin <admin@example.com>
Date: 星期三, 03 九月 2025 13:37:28 +0800
Subject: [PATCH] 1.解决data_cache.filtered_stock_info_list新增问题 2.新增股东变更API 3.解决一部分打印内容歧义

---
 log_module/log_export.py |  252 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 243 insertions(+), 9 deletions(-)

diff --git a/log_module/log_export.py b/log_module/log_export.py
index 7209d36..62b85f2 100644
--- a/log_module/log_export.py
+++ b/log_module/log_export.py
@@ -1,5 +1,6 @@
 import datetime
 import hashlib
+import json
 import logging
 import os
 import time
@@ -32,7 +33,9 @@
 def __get_async_log_time(line):
     line = line.split(" - ")[1]
     time_str = line[line.find("[") + 1:line.find("[") + 9]
-    return time_str
+    if time_str.replace(":", "").replace(".", "").isdigit():
+        return time_str
+    return None
 
 
 __log_file_contents = {}
@@ -53,6 +56,7 @@
     return contents
 
 
+# 鍔犺浇鏉垮潡寮哄害鏃ュ織
 def load_market_sift_plate(date=tool.get_now_date_str()):
     """
      鑾峰彇绮鹃�夋祦鍏ョ殑鎴愬垎鑲�
@@ -76,6 +80,7 @@
     return fdatas
 
 
+# 鍔犺浇涓偂寮哄害鏃ュ織
 def load_kpl_market_stock_heat(date=tool.get_now_date_str()):
     """
      鑾峰彇绮鹃�夋祦鍏ョ殑鎴愬垎鑲�
@@ -125,12 +130,241 @@
     return fdatas
 
 
-if __name__ == '__main__':
-    datas = load_market_sift_plate()
+def load_target_codes_info(date=tool.get_now_date_str()):
+    """
+     鑾峰彇寮�鐩樺暒鍘嗗彶寮哄害
+    :param date:
+    :return: [("鏃堕棿","鍒嗘暟")]
+    """
+    path = f"{constant.get_path_prefix()}/low_suction_log/gp/codes/target_codes.{date}.log"
+    if os.path.exists(path):
+        with open(path, 'r', encoding="utf-8") as f:
+            lines = f.readlines()
+            if lines:
+                line = lines[0]
+                if line:
+                    try:
+                        data = line.split(" - ")[1].strip()
+                        if data.startswith("[") and data.find("]") < 20:
+                            data = data[data.find("]") + 1:].strip()
+                        return eval(data)
+                    except:
+                        pass
+    return None
+
+
+def load_k_bars(date=tool.get_now_date_str()):
+    """
+    鍔犺浇K绾挎暟鎹�
+    :param date:
+    :return:
+    """
+    path = f"{constant.get_path_prefix()}/local_storage_data/all_stocks_all_K_line_property_dict.{date}.json"
+    if os.path.exists(path):
+        with open(path, 'r', encoding="utf-8") as f:
+            lines = f.readlines()
+            return json.loads(lines[0])
+    return None
+
+
+def load_kpl_code_plates(date=tool.get_now_date_str()):
+    """
+    鍔犺浇浠g爜鏉垮潡鏁版嵁
+    :param date:
+    :return:
+    """
+    path = f"{constant.get_path_prefix()}/low_suction_log/gp/kpl/kpl_code_plates.{date}.log"
+    if os.path.exists(path):
+        with open(path, 'r', encoding="utf-8") as f:
+            lines = f.readlines()
+            if lines:
+                line = lines[0]
+                data = line.split(" - ")[1].strip()
+                if data.startswith("["):
+                    data = data[data.find("]") + 1:].strip()
+                return eval(data)
+    return None
+
+
+def load_kpl_limit_up_datas(date=tool.get_now_date_str()):
+    """
+    鍔犺浇寮�鐩樺暒娑ㄥ仠鏁版嵁
+    :param date:
+    :return:
+    """
+    path = f"{constant.get_path_prefix()}/low_suction_log/gp/kpl/kpl_limit_up.{date}.log"
     fdatas = []
-    for data in datas:
-        # (璺濈09:15:00鐨勭鏁�, 鏃堕棿, 寮哄害)
-        if "11:30:00"<= data[0]<="13:00:00":
-            continue
-        fdatas.append([tool.trade_time_sub(data[0], "09:15:00"), data[0], data[1]])
-    print(fdatas)
+    if os.path.exists(path):
+        with open(path, 'r', encoding="utf-8") as f:
+            lines = f.readlines()
+            if lines:
+                for line in lines:
+                    time_str = __get_async_log_time(line)
+                    data = line.split(" - ")[1].strip()
+                    if data.startswith("["):
+                        data = data[data.find("]") + 1:].strip()
+                    fdatas.append((time_str, eval(data)))
+    return fdatas
+
+
+def load_stock_of_markets_plate_simple(start_time_str, end_time_str, date=tool.get_now_date_str()):
+    """
+    鍔犺浇寮�鐩樺暒绮鹃�夋澘鍧楀強鍏朵唬鐮�
+    :param end_time_str: 缁撴潫鏃堕棿
+    :param start_time_str: 寮�濮嬫椂闂�
+    :param date:
+    :return:
+    """
+    path = f"{constant.get_path_prefix()}/low_suction_log/gp/kpl/stock_of_markets_plate_simple.{date}.log"
+    fdatas = []
+    if os.path.exists(path):
+        with open(path, 'r', encoding="utf-8") as f:
+            while True:
+                line = f.readline()
+                if not line:
+                    break
+                time_str = __get_async_log_time(line)
+                if time_str > end_time_str:
+                    break
+                if start_time_str <= time_str <= end_time_str:
+                    data = line.split(" - ")[1].strip()
+                    if data.startswith("["):
+                        data = data[data.find("]") + 1:].strip()
+                    fdatas.append((time_str, eval(data)))
+    return fdatas
+
+
+def load_deal_big_order(date=tool.get_now_date_str()):
+    """
+    鎴愪氦澶у崟
+    :param date:
+    :return:
+    """
+    path = f"{constant.get_path_prefix()}/low_suction_log/huaxin/l2/transaction.{date}.log"
+    fdatas = []
+    if os.path.exists(path):
+        with open(path, 'r', encoding="utf-8") as f:
+            lines = f.readlines()
+            if lines:
+                for line in lines:
+                    time_str = __get_async_log_time(line)
+                    if time_str:
+                        data = line.split(" - ")[1].strip()
+                        if data.startswith("["):
+                            data = data[data.find("]") + 1:].strip()
+                    else:
+                        time_str = __get_log_time(line)
+                        data = line.split(" - ")[1].strip()
+                    fdatas.append((time_str, eval(data)))
+    return fdatas
+
+
+def load_ticks_data(min_time_str, max_time_str, date=tool.get_now_date_str()):
+    """
+    鎴愪氦澶у崟
+    :param max_time_str:
+    :param date:
+    :return:
+    """
+    path = f"{constant.get_path_prefix()}/low_suction_log/huaxin/l2/marketdata.{date}.log"
+    fdatas = []
+    if os.path.exists(path):
+        with open(path, 'r', encoding="utf-8") as f:
+            while True:
+                line = f.readline()
+                if not line:
+                    break
+                try:
+                    time_str = __get_async_log_time(line)
+                    if time_str:
+                        data = line.split(" - ")[1].strip()
+                        if data.startswith("["):
+                            data = data[data.find("]") + 1:].strip()
+                    else:
+                        time_str = __get_log_time(line)
+                        data = line.split(" - ")[1].strip()
+                    if min_time_str <= time_str <= max_time_str:
+                        fdatas.append((time_str, eval(data)))
+                    if time_str > max_time_str:
+                        break
+                except Exception as e:
+                    logging.exception(e)
+                    print(line)
+    print(fdatas[-1])
+    return fdatas
+
+
+def load_forbidden_plates_data(date=tool.get_now_date_str()):
+    """
+    绂佹涔板叆鐨勬澘鍧�
+    :param date:
+    :return:
+    """
+    path = f"{constant.get_path_prefix()}/low_suction_log/gp/kpl/forbidden_plates.{date}.log"
+    fdatas = []
+    if os.path.exists(path):
+        with open(path, 'r', encoding="utf-8") as f:
+            lines = f.readlines()
+            if lines:
+                for line in lines:
+                    time_str = __get_async_log_time(line)
+                    if time_str:
+                        data = line.split(" - ")[1].strip()
+                        if data.startswith("["):
+                            data = data[data.find("]") + 1:].strip()
+                    else:
+                        time_str = __get_log_time(line)
+                        data = line.split(" - ")[1].strip()
+                    fdatas.append((time_str, data.split("-")[0].strip(), data.split("-")[1].strip()))
+    return fdatas
+
+
+def load_virtual_trade_account(date=tool.get_now_date_str()):
+    """
+    鍔犺浇铏氭嫙浜ゆ槗鏁版嵁
+    :param date:
+    :return:
+    """
+    path = f"{constant.get_path_prefix()}/low_suction_log/gp/virtual_account/virtual_account_money_records.{date}.log"
+    fdatas = []
+    if os.path.exists(path):
+        with open(path, 'r', encoding="utf-8") as f:
+            lines = f.readlines()
+            if lines:
+                for line in lines:
+                    time_str = __get_async_log_time(line)
+                    data = line[line.find("]") + 1:].strip()
+                    fdatas.append((time_str, eval(data)))
+    return fdatas
+
+
+def load_deal_list(date=tool.get_now_date_str()):
+    """
+    鍔犺浇铏氭嫙浜ゆ槗鏁版嵁
+    :param date:
+    :return:
+    """
+    path = f"{constant.get_path_prefix()}/low_suction_log/huaxin_local/trade/deal.{date}.log"
+    fdatas = []
+    if os.path.exists(path):
+        with open(path, 'r', encoding="utf-8") as f:
+            lines = f.readlines()
+            if lines:
+                for line in lines:
+                    # time_str = __get_async_log_time(line)
+                    data = line[line.find("]") + 1:].strip()
+                    fdatas.append(eval(data))
+    return fdatas
+
+
+if __name__ == '__main__':
+    print(load_deal_list())
+    # load_k_bars('2025-07-03')
+    # datas = load_ticks_data("09:50:00")
+    # fdatas = []
+    # for data in datas:
+    #     # (璺濈09:15:00鐨勭鏁�, 鏃堕棿, 寮哄害)
+    #     if "11:30:00" <= data[0] <= "13:00:00":
+    #         continue
+    #     fdatas.append([tool.trade_time_sub(data[0], "09:15:00"), data[0], data[1]])
+    # print(fdatas)

--
Gitblit v1.8.0