Administrator
2023-12-26 3a19a9bd4e301fa7e0d081e9c2aada3ac77700c1
third_data/kpl_api.py
@@ -1,7 +1,9 @@
import json
import time
import requests
import constant
from utils import middle_api_protocol
# 竞价
@@ -16,7 +18,7 @@
DABAN_TYPE_EVER_LIMIT_DOWN = 5
def __base_request(url, data):
def __base_request(url, data, timeout=60):
    DELEGATE = True
    if not DELEGATE:
        headers = {
@@ -25,7 +27,8 @@
        }
        # proxies={'https': '192.168.3.251:9002'}
        # 禁止代理,不然会走本地代理
        response = requests.post(url, data=data, headers=headers, proxies={"http": None, "https": None})
        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
@@ -118,21 +121,96 @@
    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)
    return result.get("ListJX")
    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)
    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"].replace("概念", "") 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"].replace("概念", "") for x in result["List"]]
            return names
    return []
# 获取代码的板块
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))
# 获取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
if __name__ == "__main__":
    datas = json.loads(getLimitUpInfo())
    for d in datas["list"]:
        print(d[0], d[1])
    print(len(datas["list"]))
    codes = "000422,000536,000619,000766,000892,001255,001258,001300,002288,002442,002584,002632,002771,002942,300505,300949,600293,600610,600679,600769,603168,603188,603291,603329,603392,603518,603759,603767,603836,603839,603938,605218,688655"
    codes = codes.split(",")
    for code in codes:
        print(code, getCodeReductionDate(code))