import json
|
import os
|
|
import constant
|
from utils import tool
|
from utils.tool import singleton
|
|
|
@singleton
|
class KPLLimitUpDataManager:
|
__yesterday_limit_up_codes = set()
|
|
@classmethod
|
# 获取最近几天的数据,根据日期倒序返回
|
def __get_latest_from_file(cls, type, count, max_day=tool.get_now_date_str()):
|
files = os.listdir(constant.CACHE_PATH)
|
file_name_list = []
|
for f in files:
|
if f[10:] == f"_{type}.log":
|
file_name_list.append((f.split("_")[0], f))
|
|
file_name_list.sort(key=lambda x: x[0], reverse=True)
|
fresults = []
|
for file in file_name_list:
|
path = f"{constant.CACHE_PATH}/{file[1]}"
|
if not os.path.exists(path):
|
continue
|
with open(path, 'r') as f:
|
lines = f.readlines()
|
if lines:
|
if int(file[0].replace("-", "")) <= int(max_day.replace("-", "")):
|
fresults.append((file[0], json.loads(lines[0])))
|
if len(fresults) >= count:
|
break
|
return fresults
|
|
@classmethod
|
def __get_current_limit_up_data_records(cls, count, day=tool.get_now_date_str()):
|
fresults = []
|
datas = cls.__get_latest_from_file("limit_up", count + 2, max_day=day)
|
# 移除比今天还大的数据
|
fdatas = []
|
for d in datas:
|
if int(d[0].replace("-", "")) > int(day.replace("-", "")):
|
continue
|
fdatas.append(d)
|
datas = fdatas
|
for i in range(len(datas)):
|
if datas[i][0] == day:
|
continue
|
fresults.append(datas[i])
|
if len(fresults) >= count:
|
break
|
return fresults
|
|
@classmethod
|
def __get_yesterday_limit_up_codes(cls):
|
yesterday_limit_up_data_records = cls.__get_yesterday_current_limit_up_records()
|
yesterday_codes = set([x[0] for x in yesterday_limit_up_data_records])
|
return yesterday_codes
|
|
@classmethod
|
def __get_yesterday_current_limit_up_records(cls):
|
yesterday_limit_up_data_records = cls.__get_current_limit_up_data_records(1)[0][1]
|
return yesterday_limit_up_data_records
|
|
def __init__(self):
|
# 加载昨日涨停
|
self.__yesterday_limit_up_codes = self.__get_yesterday_limit_up_codes()
|
|
def get_yesterday_limit_up_codes(self):
|
return self.__yesterday_limit_up_codes
|
|
|
if __name__ == '__main__':
|
pass
|
# print(KPLLimitUpDataManager().get_yesterday_limit_up_codes())
|