Administrator
6 天以前 c8d828e625fa5b3ae6232666ac2c0e5f51a62c54
third_data/kpl_util.py
@@ -1,7 +1,7 @@
import enum
import json
from db import mysql_data
from db import mysql_data_delegate as mysql_data
def parse_kpl_datas(results):
@@ -65,12 +65,14 @@
    FENG_XIANG = "feng_xiang"
    INDUSTRY_RANK = "industry_rank"
    JINGXUAN_RANK = "jingxuan_rank"
    JINGXUAN_RANK_OUT = "jingxuan_rank_out"
    MARKET_STRONG = "market_strong"
def __parseDaBanItemData(data, type):
    if type == DABAN_TYPE_BIDDING:
        return data[0], data[1], data[18], data[11], data[22], data[15]
    elif type == DABAN_TYPE_LIMIT_UP:
        # (代码, 名称, 首次涨停时间, 最近涨停时间, 几板, 涨停原因, 板块, 实际流通, 主力净额, 涨停原因代码, 涨停原因代码数量)
        return data[0], data[1], data[6], data[25], data[9], data[16], data[11], data[15], data[12], data[26], data[27]
    elif type == DABAN_TYPE_OPEN_LIMIT_UP:
        return data[0], data[1], data[4], data[11], data[15]
@@ -78,8 +80,12 @@
        return data[0], data[1], data[11], data[15]
    elif type == DABAN_TYPE_EVER_LIMIT_DOWN:
        return data[0], data[1], data[4], data[11], data[15]
    return None
def __parseLimitUpItemData(data):
    # (代码, 名称, 首次涨停时间, 最近涨停时间, 几板, 涨停原因, 板块, 实际流通, 主力净额, 涨停原因代码, 涨停原因代码数量)
    return data[0], data[1], data[4], data[4], data[18], data[5], data[12], data[13], data[8], data[19], data[20]
# 最强风口
@@ -118,6 +124,20 @@
        if pdata:
            fresult_.append(pdata)
    return fresult_
def parseLimitUpData(data):
    if type(data) == str:
        data = json.loads(data)
    if int(data["errcode"]) != 0:
        raise Exception(f"解析数据出错,errcode:{data['errcode']}")
    list_ = data["list"]
    fresult_ = []
    for d in list_:
        pdata = __parseLimitUpItemData(d)
        if pdata:
            fresult_.append(pdata)
    return fresult_, data.get("day")
def parseFengKou(data):
@@ -266,3 +286,41 @@
        mysqldb = mysql_data.Mysqldb()
        results = mysqldb.select_all(f"select _name from kpl_plate where _id='{id_}'")
        return set([r[0] for r in results])
# 获取高位板的数量
def get_high_level_count(key):
    if key.find("连板") >= 0:
        # 形式如: 3连板
        return int(key.replace("连板", ""))
    elif key.find("天") >= 0 and key.find("板") >= 0:
        # 形式如:5天4板
        return int(key.split("天")[1].replace("板", ""))
    # 形式如:首板
    return 1
# 获取实时涨停列表中的涨停原因
def get_current_limit_up_reasons(item) -> set:
    b = {item[5]}
    if item[6]:
        b |= set(item[6].split("、"))
    return b
# 获取目前的涨停原因
def get_current_limit_up_reason(item) -> str:
    return item[5]
def filter_block(block):
    if not block:
        return block
    return block.replace("概念", "")
if __name__ == "__main__":
    print(get_high_level_count("首板"))
    print(get_high_level_count("5天4板"))
    print(get_high_level_count("2连板"))
    print(get_high_level_count("4连板"))