admin
2024-05-07 582b3f0e67e5bf2f5806b70600faaa89f44215a6
network_delegate_manager.py
@@ -7,6 +7,7 @@
import time
from urllib.parse import parse_qs, urlparse
from convertible_bonds.main import JueJinUtil
from juejin_core import JueJinApi
from kpl import kpl_util, kpl_api
from kpl.kpl_data_manager import KPLLimitUpDataManager
@@ -37,6 +38,9 @@
        elif url.startswith("/get_kpl_market_feelings"):
            return cls.__get_kpl_market_feelings()
        elif url.startswith("/get_cb_list"):
            # 获取可转债的列表
            return cls.get_cb_list()
        return None, False
@@ -300,9 +304,63 @@
        return json.dumps(
            {"code": 0, "data": fdata}), True
    __cb_codes_list = None  # 所有可转债数据
    __pre_price_dict = {}  # 昨日收盘价
    # 获取可转债的列表
    @classmethod
    def get_cb_list(cls):
        # 获取所有可转债列表
        if not cls.__cb_codes_list:
            cls.__cb_codes_list = JueJinUtil.get_all_convertible_bonds_codes()
            # 获取昨日收盘价
            symbols = [x[0][0] for x in cls.__cb_codes_list]
            symbols.extend([x[1] for x in cls.__cb_codes_list])
            # 获取现价
            results = JueJinApi.get_gp_latest_info(symbols, fields='symbol,pre_close')
            cls.__pre_price_dict = {x['symbol']: x['pre_close'] for x in results}
        # 获取涨停列表
        records = KPLLimitUpDataManager().get_limit_up_history_datas()
        currents = KPLLimitUpDataManager().get_limit_up_current_datas()
        current_codes = [d[0] for d in currents]
        record_codes = [d[0] for d in records]
        record_map = {}
        for r in records:
            record_map[r[0]] = r
        # 格式[([转债代码,转债名称, (现价,涨幅)],[正股代码,正股名称,(现价,涨幅)],正股涨停时间,是否炸板)]
        datas = []
        for b in cls.__cb_codes_list:
            code = b[1].split(".")[1]
            if code in record_codes:
                if record_map[code][4] != '首板':
                    continue
                datas.append(
                    [[b[0][0], b[0][1], None], [b[1], record_map[code][1], None], tool.time_format(record_map[code][2]),
                     code not in current_codes])
        # 获取所有的涨幅
        symbols = []
        for d in datas:
            symbols.append(d[0][0])
            symbols.append(d[1][0])
        # 获取当前
        current_infos = JueJinApi.get_gp_current_info(symbols, fields='symbol,price')
        rate_dict = {x['symbol']: (x['price'], round(
            (x['price'] - cls.__pre_price_dict[x['symbol']]) * 100 / cls.__pre_price_dict[x['symbol']], 2)) for x in
                     current_infos}
        for d in datas:
            d[0][2] = rate_dict[d[0][0]]
            d[1][2] = rate_dict[d[1][0]]
            d[0][0] = d[0][0].split('.')[1]
            d[1][0] = d[1][0].split('.')[1]
        datas.sort(key=lambda x: int(x[2].replace(":","")), reverse=True)
        # 获取今日正股涨停的可转债列表
        return json.dumps(
            {"code": 0, "data": datas}), True
if __name__ == "__main__":
    codes = ["002523", "603095"]
    datas = LocalKanPanNetworkDelegate.get_kpl_market_feelings(codes)
    datas = LocalKanPanNetworkDelegate.get_cb_list()
    print(datas)