| | |
| | | import json |
| | | import time |
| | | |
| | | import requests |
| | | |
| | | import constant |
| | | from utils import middle_api_protocol |
| | | |
| | | # 竞价 |
| | |
| | | DABAN_TYPE_EVER_LIMIT_DOWN = 5 |
| | | |
| | | |
| | | def __base_request(url, data): |
| | | def __base_request(url, data, timeout=60): |
| | | DELEGATE = True |
| | | if not DELEGATE: |
| | | headers = { |
| | |
| | | } |
| | | # 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 |
| | |
| | | # 获取自由流通市值 |
| | | 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__": |
| | | print(getLimitUpInfo()) |
| | | 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)) |