123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- import requests
- import json
- from tenacity import retry
- from applications import log
- from applications.utils import proxy, request_retry
- from coldStartTasks.crawler.sohu.basic import generate_random_strings
- from coldStartTasks.crawler.sohu.basic import generate_random_digits
- from coldStartTasks.crawler.sohu.basic import get_ms_timestamp
- retry_desc = request_retry(retry_times=3, min_retry_delay=2, max_retry_delay=30)
- @retry(**retry_desc)
- def get_hot_point_videos():
- url = "https://odin.sohu.com/odin/api/blockdata"
- payload = json.dumps(
- {
- "pvId": f"{get_ms_timestamp()}_{generate_random_strings(7)}",
- "pageId": f"{get_ms_timestamp()}_{generate_random_digits(11)}_{generate_random_strings(3)}",
- "mainContent": {
- "productType": "13",
- "productId": "1650",
- "secureScore": "50",
- "categoryId": "47",
- "adTags": "11111111",
- "authorId": 121135924,
- },
- "resourceList": [
- {
- "tplCompKey": "tpl-card-feed-pc-data",
- "isServerRender": False,
- "isSingleAd": False,
- "configSource": "mp",
- "content": {
- "productId": "449975",
- "productType": "15",
- "size": 200,
- "pro": "0,1,3,4,5",
- "feedType": "XTOPIC_SYNTHETICAL",
- "view": "feedMode",
- "innerTag": "news-slice",
- "spm": "smpc.channel_262.tpl-card-feed-pc",
- "page": 1,
- "requestId": f"{get_ms_timestamp()}{generate_random_strings(7)}_1650",
- },
- "adInfo": {
- "posCode": 10069,
- "rule": 2,
- "turn": 5,
- "number": 1,
- "begin": 6,
- "mergeType": 0,
- },
- "context": {"mkey": ""},
- }
- ],
- }
- )
- headers = {
- "Accept": "application/json, text/javascript, */*; q=0.01",
- "Accept-Language": "zh,zh-CN;q=0.9",
- "Connection": "keep-alive",
- "Content-Type": "application/json;charset=UTF-8",
- "Origin": "https://www.sohu.com",
- "Referer": "https://www.sohu.com/xchannel/TURBd01EQXhOalV3",
- "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36",
- }
- try:
- response = requests.post(url, headers=headers, data=payload, proxies=proxy())
- response.raise_for_status()
- return response.json()
- except requests.exceptions.RequestException as e:
- log(
- task="sohu_hot_videos",
- function="get_hot_video_list",
- message=f"API请求失败: {e}",
- )
- except json.JSONDecodeError as e:
- log(
- task="sohu_hot_videos",
- function="get_hot_video_list",
- message=f"响应解析失败: {e}",
- )
- return None
- # if __name__ == "__main__":
- # res = get_hot_point_videos()
- # hot_point_videos = res["data"]["tpl-card-feed-pc-data"]["list"]
- # for index, item in enumerate(hot_point_videos):
- # print(index, item["title"])
|