From ec4cc6d4ccba433cf10678b3d767e588a2d00e91 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期一, 16 十二月 2024 16:57:33 +0800 Subject: [PATCH] 去除掘金依赖 --- utils/network_delegate_manager.py | 173 --------------------------------------------------------- 1 files changed, 1 insertions(+), 172 deletions(-) diff --git a/utils/network_delegate_manager.py b/utils/network_delegate_manager.py index 9bda346..9a055f0 100644 --- a/utils/network_delegate_manager.py +++ b/utils/network_delegate_manager.py @@ -9,8 +9,6 @@ import setting import trade_gui -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 from utils import tool, xgb_api @@ -32,17 +30,11 @@ elif url.startswith("/kpl/get_plate_codes"): return cls.__get_plate_codes(url) - elif url.startswith("/get_last_trade_day_reasons"): - return cls.__get_last_trade_day_reasons(url) - elif url.startswith("/get_xgb_limit_up_reasons"): return cls.__get_xgb_limit_up_reasons(url) elif url.startswith("/get_kpl_market_feelings"): return cls.__get_kpl_market_feelings() - elif url.startswith("/get_cb_list"): - # 鑾峰彇鍙浆鍊虹殑鍒楄〃 - return cls.get_cb_list() elif url.startswith("/buy_by_ths"): # 鑾峰彇鍙浆鍊虹殑鍒楄〃 return cls.buy_by_ths(url) @@ -162,119 +154,10 @@ response_data = json.dumps({"code": 0, "data": results}) return response_data, True - @classmethod - def get_codes_limit_rate(cls, codes): - return cls.__get_codes_limit_rate(codes) # 鑾峰彇鏄ㄦ棩鏀剁洏浠� __pre_close_cache = {} - @classmethod - def __get_codes_limit_rate(cls, codes): - latest_info_codes = set() - for code in codes: - if code not in cls.__pre_close_cache: - latest_info_codes.add(code) - if latest_info_codes: - datas = JueJinApi.get_gp_latest_info(latest_info_codes, fields="sec_id,pre_close") - for data in datas: - code = data["sec_id"] - pre_close = data['pre_close'] - cls.__pre_close_cache[code] = pre_close - - current_info = JueJinApi.get_gp_current_info(codes, fields="symbol,price") - now_prices = [(c["symbol"].split(".")[1], c["price"]) for c in current_info] - f_results = [] - for data in now_prices: - code = data[0] - price = data[1] - pre_price = float(cls.__pre_close_cache.get(code)) - rate = round((price - pre_price) * 100 / pre_price, 2) - f_results.append((code, rate)) - f_results.sort(key=lambda tup: tup[1]) - f_results.reverse() - return f_results - - @classmethod - def __get_limit_rate_list(cls, codes): - if not codes: - return [] - need_request_codes = set() - if tool.trade_time_sub(tool.get_now_time_str(), "09:30:00") < 0: - need_request_codes |= set(codes) - else: - now_time = time.time() - for c in codes: - if c not in cls.__code_limit_rate_dict: - need_request_codes.add(c) - elif now_time - cls.__code_limit_rate_dict[c][1] > 60: - need_request_codes.add(c) - if need_request_codes: - _limit_rate_list = cls.__get_codes_limit_rate(list(need_request_codes)) - for d in _limit_rate_list: - cls.__code_limit_rate_dict[d[0]] = (d[1], time.time()) - return [(c_, cls.__code_limit_rate_dict[c_][0]) for c_ in codes] - - @classmethod - def __get_last_trade_day_reasons(cls, url): - # 鑾峰彇 鏄ㄦ棩娑ㄥ仠鏁版嵁 - ps_dict = dict([(k, v[0]) for k, v in parse_qs(urlparse(url).query).items()]) - code = ps_dict["code"] - # 鑾峰彇鏄ㄦ棩娑ㄥ仠鏁版嵁 - day = JueJinApi.get_previous_trading_date_cache(tool.get_now_date_str()) - # (浠g爜, 鍚嶇О, 棣栨娑ㄥ仠鏃堕棿, 鏈�杩戞定鍋滄椂闂�, 鍑犳澘, 娑ㄥ仠鍘熷洜, 鏉垮潡, 瀹為檯娴侀��, 涓诲姏鍑�棰�, 娑ㄥ仠鍘熷洜浠g爜, 娑ㄥ仠鍘熷洜浠g爜鏁伴噺) - limit_up_records = KPLLimitUpDataManager().get_limit_up_history_datas_cache(day) - if not limit_up_records: - limit_up_records = [] - reasons = [] - for d in limit_up_records: - if d[0] == code: - reasons.append(d) - # 鑾峰彇浠g爜鐨勫師鍥� - if reasons: - reasons = list(reasons) - reasons.sort(key=lambda x: x[9]) - reason = reasons[-1][5] - # 鑾峰彇娑ㄥ仠鏁版嵁 - datas = KPLLimitUpDataManager().get_limit_up_current_datas_cache(day) - # (浠g爜,鍚嶇О,棣栨娑ㄥ仠鏃堕棿,鏈�杩戞定鍋滄椂闂�,鍑犳澘,娑ㄥ仠鍘熷洜,鏉垮潡,瀹為檯娴侀��,涓诲姏鍑�棰�,娑ㄥ仠鍘熷洜浠g爜,娑ㄥ仠鍘熷洜浠g爜鏁伴噺) - yesterday_result_list = [] - percent_rate = 0 - if datas: - yesterday_codes = set() - for d in datas: - if d[5] == reason: - yesterday_codes.add(d[0]) - # 鑾峰彇娑ㄥ箙 - limit_rate_list = cls.__get_limit_rate_list(yesterday_codes) - limit_rate_dict = {} - if limit_rate_list: - total_rate = 0 - for d in limit_rate_list: - limit_rate_dict[d[0]] = d[1] - total_rate += d[1] - percent_rate = round(total_rate / len(limit_rate_list), 2) - - for d in datas: - if d[5] == reason: - yesterday_codes.add(d[0]) - if d[0] != code: - # (浠g爜,鍚嶇О, 娑ㄥ箙) - yesterday_result_list.append((d[0], d[1], limit_rate_dict.get(d[0]))) - - current_limit_up_list = KPLLimitUpDataManager().get_limit_up_current_datas() - current_result_list = [] - if current_limit_up_list: - for c in current_limit_up_list: - if c[5] == reason and c[0] != code: - current_result_list.append((c[0], c[1])) - response_data = json.dumps({"code": 0, "data": {"reason": reason, "reason_rate": percent_rate, - "data": {"yesterday": yesterday_result_list, - "current": current_result_list}}}) - else: - response_data = json.dumps({"code": 1, "msg": "鏄ㄦ棩鏈定鍋�"}) - - return response_data, True @classmethod def __get_xgb_limit_up_reasons(cls, url): @@ -319,58 +202,6 @@ __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 - # 鏍煎紡[锛圼杞�轰唬鐮�,杞�哄悕绉�, (鐜颁环,娑ㄥ箙)],[姝h偂浠g爜,姝h偂鍚嶇О,(鐜颁环,娑ㄥ箙)],姝h偂娑ㄥ仠鏃堕棿,鏄惁鐐告澘锛塢 - 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) - - # 鑾峰彇浠婃棩姝h偂娑ㄥ仠鐨勫彲杞�哄垪琛� - return json.dumps( - {"code": 0, "data": datas}), True - @classmethod def buy_by_ths(cls, url): can_buy = setting.is_can_ths_buy() @@ -390,6 +221,4 @@ if __name__ == "__main__": - codes = ["002523", "603095"] - datas = LocalKanPanNetworkDelegate.get_cb_list() - print(datas) + pass -- Gitblit v1.8.0