From d2a4dd9c837f8df2a19e58f7fb4c81a91c114b67 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期五, 15 八月 2025 13:15:32 +0800
Subject: [PATCH] 自动加想接口

---
 third_data/kpl_api.py |  181 ++++++++++++++++++++++++++++++++++----------
 1 files changed, 139 insertions(+), 42 deletions(-)

diff --git a/third_data/kpl_api.py b/third_data/kpl_api.py
index cef299e..57e702c 100644
--- a/third_data/kpl_api.py
+++ b/third_data/kpl_api.py
@@ -5,7 +5,7 @@
 
 import constant
 from third_data import kpl_util
-from utils import middle_api_protocol
+from utils import middle_api_protocol, tool
 
 # 绔炰环
 DABAN_TYPE_BIDDING = 8
@@ -19,7 +19,7 @@
 DABAN_TYPE_EVER_LIMIT_DOWN = 5
 
 
-def __base_request(url, data, timeout=60):
+def __base_request(url, data, timeout=10):
     DELEGATE = True
     if not DELEGATE:
         headers = {
@@ -34,7 +34,7 @@
             raise Exception("璇锋眰鍑洪敊")
         return response.text
     else:
-        fdata = middle_api_protocol.load_kpl(url, data)
+        fdata = middle_api_protocol.load_kpl(url, data, timeout)
         return middle_api_protocol.request(fdata)
 
 
@@ -47,7 +47,7 @@
 
 
 def __getLimitUpInfo(pidType, page, pageSize):
-    data = f"Order=0&a=DailyLimitPerformance&st={pageSize}&apiv=w35&Type=4&c=HomeDingPan&PhoneOSNew=1&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e23&VerSion=5.13.0.0&Index={(page - 1) * pageSize}&PidType={pidType}&"
+    data = f"Order=0&a=DailyLimitPerformance&st={pageSize}&apiv=w35&Type=4&c=HomeDingPan&PhoneOSNew=1&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e24&VerSion=5.13.0.0&Index={(page - 1) * pageSize}&PidType={pidType}&"
     result = __base_request("https://apphq.longhuvip.com/w1/api/index.php", data=data)
     return result
 
@@ -55,45 +55,33 @@
 def getLimitUpInfoNew():
     pids = [(1, "棣栨澘"), (2, "2杩炴澘"), (3, "3杩炴澘"), (4, "4杩炴澘"), (5, "")]
     fresults = []
+    day = ''
     for pid_info in pids:
         results = []
-        for i in range(10):
+        for i in range(100):
+            start_time = time.time()
             result = __getLimitUpInfo(pid_info[0], i + 1, 20)
             result = json.loads(result)
             datas = result["info"][0]
             results.extend(datas)
             day = result["info"][1]
-            print(datas)
             if len(datas) < 20:
                 break
         for r in results:
             if not r[18] and pid_info[1]:
                 r[18] = pid_info[1]
+            # 鏇挎崲鎺夋澘鍧楀悕绉�
+            for i in range(len(r)):
+                if type(r[i]) == str:
+                    r[i] = kpl_util.filter_block(r[i])
         fresults.extend(results)
 
-    return json.dumps({"errcode": 0, "list": fresults})
-
-
-def getLimitUpInfo():
-    list_ = []
-    page_size = 20
-    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
+    return json.dumps({"errcode": 0, "list": fresults, "day": day})
 
 
 def getHistoryLimitUpInfo(day):
     fresults = []
-    for i in range(0, 5):
+    for i in range(0, 100):
         data = f"Order=1&a=HisDaBanList&st=20&c=HisHomeDingPan&PhoneOSNew=1&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e23&VerSion=5.8.0.2&Index={i * 20}&Is_st=1&PidType=1&apiv=w32&Type=6&FilterMotherboard=0&Filter=0&FilterTIB=0&Day={day}&FilterGem=0&"
         result = __base_request("https://apphis.longhuvip.com/w1/api/index.php", data=data)
         result = json.loads(result)
@@ -120,6 +108,13 @@
     return result
 
 
+def getMarketJingXuanRealRankingInfoByTimeRange(startTime, endTime, date, orderJingE_DESC=True):
+    data = f"Order={1 if orderJingE_DESC else 0}&st=30&a=RealRankingInfo&apiv=w35&Type=5&Index=0&RStart={startTime}&c=ZhiShuRanking&VerSion=5.13.0.0&REnd={endTime}&Date={date}&PhoneOSNew=1&ZSType=7&DeviceID=d6f20ce9-fa08-31c9-a493-536ebb8e9773&"
+    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&"
@@ -133,6 +128,30 @@
 # 鑾峰彇姒傚康浠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}&"
+    return __base_request("https://apphq.longhuvip.com/w1/api/index.php",
+                          data=data)
+
+
+def getCodesByPlateOrderByLZCS(plate_code):
+    """
+    鏍规嵁棰嗘定娆℃暟鎺掑簭
+    @param plate_code:
+    @return:
+    """
+    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=27&IsKZZType=0&UserID=0&PlateID={plate_code}&"
+    return __base_request("https://apphq.longhuvip.com/w1/api/index.php",
+                          data=data)
+
+
+def getHistoryCodesByPlateOrderByLZCS(plate_code, date, time_str):
+    """
+    鏍规嵁棰嗘定娆℃暟鎺掑簭
+    @param date: 2025-05-25
+    @param time_str: 1025
+    @param plate_code: 110505
+    @return:
+    """
+    data = f"Order=1&a=ZhiShuStockList_W8&st=30&c=ZhiShuRanking&PhoneOSNew=1&RStart=0925&old=1&DeviceID=b692e51c-1bc4-3e8c-a01b-620aa6240e28&VerSion=5.8.0.4&IsZZ=0&Token=0&Index=0&Date={date}&REnd={time_str}&apiv=w33&Type=1&IsKZZType=0&UserID=0&PlateID={plate_code}&"
     return __base_request("https://apphq.longhuvip.com/w1/api/index.php",
                           data=data)
 
@@ -159,12 +178,20 @@
 
 # 鑾峰彇浠g爜鐨勭簿閫夋澘鍧�
 # 杩斿洖鏍煎紡锛歔(鏉垮潡浠g爜,鏉垮潡鍚嶇О,娑ㄥ箙鐧惧垎姣�)]
-def getCodeJingXuanBlocks(code):
+def getCodeJingXuanBlocks(code, jx=True):
     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")
+    # print(result)
+    if jx:
+        return result.get("ListJX") if result.get("ListJX") else result.get("List")
+    else:
+        fresults = []
+        if result.get("List"):
+            fresults.extend(result.get("List"))
+        if result.get("ListJX"):
+            fresults.extend(result.get("ListJX"))
+        return fresults
 
 
 # 鑾峰彇鑷敱娴侀�氬競鍊�
@@ -184,8 +211,8 @@
     result = json.loads(result)
     if result:
         if "List" in result:
-            names = [x["CName"].replace("姒傚康", "") for x in result["List"]]
-            return names
+            names = [kpl_util.filter_block(x["CName"]) for x in result["List"]]
+            return names if len(names) < 3 else names[:2]
     return []
 
 
@@ -196,7 +223,7 @@
     result = json.loads(result)
     if result:
         if "List" in result:
-            names = [x["CName"].replace("姒傚康", "") for x in result["List"]]
+            names = [kpl_util.filter_block(x["CName"]) for x in result["List"]]
             return names
     return []
 
@@ -205,18 +232,23 @@
 def getCodeBlocks(code):
     blocks = []
     try:
-        _bks = __getConceptJXBK(code)
+        _bks = getCodeJingXuanBlocks(code)
+        # 鍙栧墠2涓�
+        if _bks and len(_bks) > 2:
+            _bks = _bks[:2]
+        _bks = [x[1] for x in _bks]
         if _bks:
             blocks.extend(_bks)
     except:
         pass
-
-    try:
-        _bks = __getConceptBK(code)
-        if _bks:
-            blocks.extend(_bks)
-    except:
-        pass
+    if not blocks:
+        try:
+            _bks = __getConceptBK(code)
+            print(_bks)
+            if _bks:
+                blocks.extend(_bks)
+        except:
+            pass
     return list(set(blocks))
 
 
@@ -251,7 +283,72 @@
     return None
 
 
-if __name__ == "__main__":
-    results = kpl_util.parseLimitUpData(getLimitUpInfoNew())
-    print(results)
+def getZLJECodesRank(index):
+    """
+    鑾峰彇涓诲姏閲戦鐨勬帓琛�
+    @return:
+    """
+    data = f"Order=1&a=RealRankingInfo_W8&st=50&c=NewStockRanking&PhoneOSNew=1&RStart=0925&DeviceID=d6f20ce9-fa08-31c9-a493-536ebb8e9773&VerSion=5.13.0.0&Isst=0&index={index}&Date=&REnd=1420&apiv=w35&Type=1&FilterMotherboard=0&Filter=0&Ratio=6&FilterTIB=1&FilterGem=0&"
+    result = __base_request("https://apphwhq.longhuvip.com/w1/api/index.php", data=data, timeout=3)
+    result = json.loads(result)
+    return result
 
+
+def getMarketStrong():
+    """
+    鑾峰彇甯傚満寮哄害
+    :return:
+    """
+    result = __base_request("https://apphwhq.longhuvip.com/w1/api/index.php",
+                            data=f"a=DiskReview&apiv=w35&c=HomeDingPan&VerSion=5.13.0.0&PhoneOSNew=1&DeviceID=d6f20ce9-fa08-31c9-a493-536ebb8e9773&",
+                            timeout=3)
+    data = json.loads(result)
+    return int(data["info"]["strong"])
+
+
+def request_new_blocks_codes(blocks_info):
+    """
+    璇锋眰鏂版澘鍧楃殑浠g爜
+    @param blocks_info:[(鏉垮潡鍚嶇О,鏉垮潡浠g爜)]
+    @return:
+    """
+    yesterday_codes = set()
+    for bi in blocks_info:
+        result = getCodesByPlate(bi[1])
+        result = json.loads(result)
+        code_info_list = []
+        for d in result["list"]:
+            if d[0] in yesterday_codes:
+                continue
+            # 娑ㄥ箙瑕佸ぇ浜�5%
+            rate = d[6] / int(round((tool.get_limit_up_rate(d[0]) - 1) * 10))
+            if rate < 5:
+                continue
+            # 鏍煎紡锛�(浠g爜,娑ㄥ箙)
+            code_info_list.append((d[0], d[6]))
+        if code_info_list:
+            # 灏嗕唬鐮佸姞鍏ユ柊棰樻潗
+            for x in code_info_list:
+                print("娣诲姞", x)
+
+
+if __name__ == "__main__":
+    # result = getCodesByPlateOrderByLZCS("801074")
+    # result = json.loads(result)
+    # result = result["list"]
+    # for r in result:
+    #     print(r)
+    # result = getCodeJingXuanBlocks("000756", True)
+    # for x in result:
+    results = getLimitUpInfoNew()
+    results = json.loads(results)
+    for d in results['list']:
+        print(len(d), d)
+
+    # request_new_blocks_codes([("鏈哄櫒浜�", "801159")])
+    # result = getCodesByPlate("801159")  # getHistoryLimitUpInfo("2024-02-19")
+    # result = json.loads(result)
+    # for d in result["list"]:
+    #     print(d)
+    #
+    # print(result)

--
Gitblit v1.8.0