From 7eb1a8ed1a007d80de41d131071ee38f5872700c Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期五, 07 二月 2025 14:26:37 +0800
Subject: [PATCH] 辨识度票策略修改/恢复P撤/上传订阅涨幅

---
 third_data/kpl_api.py |  186 +++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 175 insertions(+), 11 deletions(-)

diff --git a/third_data/kpl_api.py b/third_data/kpl_api.py
index c82f5e0..ea1fbac 100644
--- a/third_data/kpl_api.py
+++ b/third_data/kpl_api.py
@@ -3,6 +3,8 @@
 
 import requests
 
+import constant
+from third_data import kpl_util
 from utils import middle_api_protocol
 
 # 绔炰环
@@ -17,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 = {
@@ -32,21 +34,54 @@
             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)
 
 
 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" \
+    data = f"Order=1&a=DaBanList&st={page_size}&c=HomeDingPan&PhoneOSNew=1&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e24" \
            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 "
+           "&FilterGem=0"
     result = __base_request("https://apphq.longhuvip.com/w1/api/index.php", data=data)
     return result
 
 
+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-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
+
+
+def getLimitUpInfoNew():
+    pids = [(1, "棣栨澘"), (2, "2杩炴澘"), (3, "3杩炴澘"), (4, "4杩炴澘"), (5, "")]
+    fresults = []
+    day = ''
+    for pid_info in pids:
+        results = []
+        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]
+            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, "day": day})
+
+
 def getLimitUpInfo():
     list_ = []
-    page_size = 50
+    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_))
@@ -61,6 +96,19 @@
     return None
 
 
+def getHistoryLimitUpInfo(day):
+    fresults = []
+    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)
+        result = result["list"]
+        fresults.extend(result)
+        if len(result) < 20:
+            break
+    return fresults
+
+
 # 甯傚満琛屾儏-琛屼笟
 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&"
@@ -72,6 +120,13 @@
 # 甯傚満琛屾儏-绮鹃��
 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
+
+
+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
@@ -116,12 +171,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
 
 
 # 鑾峰彇鑷敱娴侀�氬競鍊�
@@ -134,7 +197,108 @@
     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 = [kpl_util.filter_block(x["CName"]) for x in result["List"]]
+            return names if len(names) < 3 else names[:2]
+    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 = [kpl_util.filter_block(x["CName"]) for x in result["List"]]
+            return names
+    return []
+
+
+# 鑾峰彇浠g爜鐨勬澘鍧�
+def getCodeBlocks(code):
+    blocks = []
+    try:
+        _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
+    if not blocks:
+        try:
+            _bks = __getConceptBK(code)
+            print(_bks)
+            if _bks:
+                blocks.extend(_bks)
+        except:
+            pass
+    return list(set(blocks))
+
+
+# 鑾峰彇F10閲岄潰鐨勫ぇ浜嬩欢
+def __getF10BigReminders(code):
+    data = f"a=BigReminder&st=25&apiv=w32&c=StockF10Basic&StockID={code}&PhoneOSNew=1&DeviceID=a38adabd-99ef-3116-8bb8-6d893c846e23&VerSion=5.8.0.2&Index=0&"
+    result = __base_request("https://apparticle.longhuvip.com/w1/api/index.php", data=data, timeout=3)
+    result = json.loads(result)
+    if int(result["errcode"]) == 0:
+        return result["info"]
+    return None
+
+
+# 鑾峰彇鑲$エ鍑忔寔鏃ユ湡
+def getCodeReductionDate(code):
+    infos = __getF10BigReminders(code)
+    if not infos:
+        return None
+    keys = ["缁堟", "缁撴潫", "缁撴灉", "涓嶅噺鎸�", "瀹屾垚"]
+    for info in infos:
+        if info.get("type") == 5:
+            title = str(info.get("title"))
+            if title.find("鍑忔寔") < 0:
+                continue
+            wrong = False
+            for k in keys:
+                if title.find(k) >= 0:
+                    wrong = True
+            if wrong:
+                continue
+            return info.get("date").split(" ")[0]
+    return None
+
+
+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"])
+
+
 if __name__ == "__main__":
-    limit_up_infos = getLimitUpInfo()
-    limit_up_infos = json.loads(limit_up_infos)
-    print(limit_up_infos)
+    result =getHistoryLimitUpInfo("2024-02-19")
+    print(result)

--
Gitblit v1.8.0