From 81f328532e366eef171b71810b221a9294dda78f Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期四, 21 十二月 2023 14:31:58 +0800 Subject: [PATCH] 买入条件调整/L撤调整 --- third_data/kpl_api.py | 197 ++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 161 insertions(+), 36 deletions(-) diff --git a/third_data/kpl_api.py b/third_data/kpl_api.py index 2256886..187eff3 100644 --- a/third_data/kpl_api.py +++ b/third_data/kpl_api.py @@ -1,68 +1,193 @@ import json +import time import requests +import constant +from utils import middle_api_protocol -def __base_request(url, data): - headers = { - "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", - "User-Agent": "Dalvik / 2.1.0(Linux;U;Android 6.0.1;MuMu Build/V417IR)" - } - # proxies={'https': '192.168.3.251:9002'} - # 绂佹浠g悊锛屼笉鐒朵細璧版湰鍦颁唬鐞� - response = requests.post(url, data=data, headers=headers, proxies={"http": None, "https": None}) - return response +# 绔炰环 +DABAN_TYPE_BIDDING = 8 +# 娑ㄥ仠 +DABAN_TYPE_LIMIT_UP = 1 +# 鐐告澘 +DABAN_TYPE_OPEN_LIMIT_UP = 2 +# 璺屽仠 +DABAN_TYPE_LIMIT_DOWN = 3 +# 鏇捐穼鍋� +DABAN_TYPE_EVER_LIMIT_DOWN = 5 + + +def __base_request(url, data, timeout=60): + DELEGATE = True + if not DELEGATE: + headers = { + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", + "User-Agent": "Dalvik / 2.1.0(Linux;U;Android 6.0.1;MuMu Build/V417IR)" + } + # proxies={'https': '192.168.3.251:9002'} + # 绂佹浠g悊锛屼笉鐒朵細璧版湰鍦颁唬鐞� + response = requests.post(url, data=data, headers=headers, proxies={"http": None, "https": None}, + timeout=timeout) + if response.status_code != 200: + raise Exception("璇锋眰鍑洪敊") + return response.text + else: + fdata = middle_api_protocol.load_kpl(url, data) + return middle_api_protocol.request(fdata) + + +def daBanList(pidType, page_size=50, index=0): + data = f"Order=1&a=DaBanList&st={page_size}&c=HomeDingPan&PhoneOSNew=1&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e23" \ + f"&VerSion=5.8.0.2&Index={index}&Is_st=1&PidType={pidType}&apiv=w32&Type=4&FilterMotherboard=0&Filter=0&FilterTIB=0" \ + "&FilterGem=0 " + result = __base_request("https://apphq.longhuvip.com/w1/api/index.php", data=data) + return result + + +def getLimitUpInfo(): + list_ = [] + page_size = 50 + MAX_SIZE = 150 + for i in range(0, 10): + result_str = daBanList(DABAN_TYPE_LIMIT_UP, page_size=page_size, index=len(list_)) + result = json.loads(result_str) + temp_list = result["list"] + list_ += temp_list + if len(temp_list) < page_size: + result['list'] = list_ + return json.dumps(result) + elif len(list_) > MAX_SIZE: + return json.dumps(result) + return None + + +# 甯傚満琛屾儏-琛屼笟 +def getMarketIndustryRealRankingInfo(orderJingE_DESC=True): + data = f"Order={1 if orderJingE_DESC else 0}&a=RealRankingInfo&st=20&apiv=w32&Type=5&c=ZhiShuRanking&PhoneOSNew=1&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e23&VerSion=5.8.0.2&Index=0&ZSType=4&" + result = __base_request("https://apphq.longhuvip.com/w1/api/index.php", + data=data) + return result + + +# 甯傚満琛屾儏-绮鹃�� +def getMarketJingXuanRealRankingInfo(orderJingE_DESC=True): + data = f"Order={1 if orderJingE_DESC else 0}&a=RealRankingInfo&st=20&apiv=w32&Type=5&c=ZhiShuRanking&PhoneOSNew=1&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e23&VerSion=5.8.0.2&Index=0&ZSType=7&" + result = __base_request("https://apphq.longhuvip.com/w1/api/index.php", + data=data) + return result # 鑾峰彇浠g爜鐨勬澘鍧� def getStockIDPlate(code): data = f"a=GetStockIDPlate_New&apiv=w32&c=StockL2Data&StockID={code}&PhoneOSNew=1&UserID=0&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e23&VerSion=5.8.0.2&Token=0&" - response = __base_request("https://apphq.longhuvip.com/w1/api/index.php", - data=data) - if response.status_code != 200: - raise Exception("璇锋眰鍑洪敊") - result = response.text + result = __base_request("https://apphq.longhuvip.com/w1/api/index.php", data=data) result = json.loads(result) - print(result) if int(result["errcode"]) != 0: return None return result["ListJX"] if result["ListJX"] else result["List"] + # 鑾峰彇姒傚康浠g爜 def getCodesByPlate(plate_code): data = f"Order=1&a=ZhiShuStockList_W8&st=30&c=ZhiShuRanking&PhoneOSNew=1&old=1&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e23&VerSion=5.8.0.2&IsZZ=0&Token=0&Index=0&apiv=w32&Type=6&IsKZZType=0&UserID=0&PlateID={plate_code}&" - response = __base_request("https://apphq.longhuvip.com/w1/api/index.php", - data=data) - if response.status_code != 200: - raise Exception("璇锋眰鍑洪敊") - return response.text + return __base_request("https://apphq.longhuvip.com/w1/api/index.php", + data=data) # 鑾峰彇姒傚康涓殑鏉垮潡寮哄害 def getSonPlate(plate_code): data = f"a=SonPlate_Info&apiv=w32&c=ZhiShuRanking&PhoneOSNew=1&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e23&VerSion=5.8.0.2&PlateID={plate_code}&" - response = __base_request("https://apphq.longhuvip.com/w1/api/index.php", data=data) - if response.status_code != 200: - raise Exception("璇锋眰鍑洪敊") - return response.text + return __base_request("https://apphq.longhuvip.com/w1/api/index.php", data=data) # 甯傚満琛屾儏-琛屼笟 def getMarketIndustryRealRankingInfo(orderJingE_DESC=True): - data = f"Order={ 1 if orderJingE_DESC else 0}&a=RealRankingInfo&st=80&apiv=w32&Type=5&c=ZhiShuRanking&PhoneOSNew=1&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e23&VerSion=5.8.0.2&Index=0&ZSType=4&" - response = __base_request("https://apphq.longhuvip.com/w1/api/index.php", - data=data) - if response.status_code != 200: - raise Exception("璇锋眰鍑洪敊") - return response.text + data = f"Order={1 if orderJingE_DESC else 0}&a=RealRankingInfo&st=80&apiv=w32&Type=5&c=ZhiShuRanking&PhoneOSNew=1&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e23&VerSion=5.8.0.2&Index=0&ZSType=4&" + return __base_request("https://apphq.longhuvip.com/w1/api/index.php", + data=data) # 甯傚満琛屾儏-绮鹃�� def getMarketJingXuanRealRankingInfo(orderJingE_DESC=True): - data = f"Order={ 1 if orderJingE_DESC else 0}&a=RealRankingInfo&st=80&apiv=w32&Type=5&c=ZhiShuRanking&PhoneOSNew=1&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e23&VerSion=5.8.0.2&Index=0&ZSType=7&" - response = __base_request("https://apphq.longhuvip.com/w1/api/index.php", - data=data) - if response.status_code != 200: - raise Exception("璇锋眰鍑洪敊") - return response.text + data = f"Order={1 if orderJingE_DESC else 0}&a=RealRankingInfo&st=80&apiv=w32&Type=5&c=ZhiShuRanking&PhoneOSNew=1&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e23&VerSion=5.8.0.2&Index=0&ZSType=7&" + return __base_request("https://apphq.longhuvip.com/w1/api/index.php", + data=data) + +# 鑾峰彇浠g爜鐨勭簿閫夋澘鍧� +# 杩斿洖鏍煎紡锛歔(鏉垮潡浠g爜,鏉垮潡鍚嶇О,娑ㄥ箙鐧惧垎姣�)] +def getCodeJingXuanBlocks(code): + data = f"a=GetStockIDPlate&apiv=w32&Type=2&c=StockL2Data&StockID={code}&PhoneOSNew=1&UserID=0&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e23&VerSion=5.8.0.2&Token=0&" + result = __base_request("https://apphq.longhuvip.com/w1/api/index.php", data=data) + result = json.loads(result) + print(result) + return result.get("ListJX") if result.get("ListJX") else result.get("List") + + +# 鑾峰彇鑷敱娴侀�氬競鍊� +def getZYLTAmount(code): + data = f"a=GetStockPanKou_Narrow&apiv=w32&c=StockL2Data&VerSion=5.8.0.2&State=1&PhoneOSNew=1&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e23&StockID={code}&" + result = __base_request("https://apphq.longhuvip.com/w1/api/index.php", data=data, timeout=3) + result = json.loads(result) + if "real" in result: + return result["real"].get("actualcirculation_value") + return None + + +# 鑾峰彇F10涓殑绮鹃�夋澘鍧� +def __getConceptJXBK(code): + data = f"a=GetConceptJXBKw23&apiv=w32&c=StockF10Basic&StockID={code}&PhoneOSNew=1&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e23&VerSion=5.8.0.2&" + result = __base_request("https://apparticle.longhuvip.com/w1/api/index.php", data=data, timeout=3) + result = json.loads(result) + if result: + if "List" in result: + names = [x["CName"] for x in result["List"]] + return names + return [] + + +# 鑾峰彇F10甯歌鏉垮潡 +def __getConceptBK(code): + data = f"a=GetConceptw23&apiv=w32&c=StockF10Basic&StockID={code}&PhoneOSNew=1&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e23&VerSion=5.8.0.2&" + result = __base_request("https://apparticle.longhuvip.com/w1/api/index.php", data=data, timeout=3) + result = json.loads(result) + if result: + if "List" in result: + names = [x["CName"] for x in result["List"]] + return names + return [] + + +# 鑾峰彇浠g爜鐨勬澘鍧� +def getCodeBlocks(code): + blocks = [] + try: + _bks = __getConceptJXBK(code) + if _bks: + blocks.extend(_bks) + except: + pass + + try: + _bks = __getConceptBK(code) + if _bks: + blocks.extend(_bks) + except: + pass + return list(set(blocks)) + + + +if __name__ == "__main__": + blocks = getCodeBlocks("600713") + blocks1 = getCodeJingXuanBlocks("600713") + if len(blocks) > 2: + # 鏍规嵁娑ㄥ箙鎺掑簭 + blocks.sort(key=lambda x: x[2]) + blocks.reverse() + datas = [] + for b in blocks: + if b[2] > 0 and b[1] not in constant.KPL_INVALID_BLOCKS: + datas.append(b) + print(datas) -- Gitblit v1.8.0