|
@@ -0,0 +1,128 @@
|
|
|
+"""
|
|
|
+Created on Mon Feb 19 2024
|
|
|
+"""
|
|
|
+import os
|
|
|
+import sys
|
|
|
+import json
|
|
|
+import random
|
|
|
+import time
|
|
|
+import requests
|
|
|
+
|
|
|
+sys.path.append(os.getcwd())
|
|
|
+
|
|
|
+from application.common.proxies import tunnel_proxies
|
|
|
+from application.common.log import AliyunLogger
|
|
|
+
|
|
|
+
|
|
|
+class PiaoQuanVlog(object):
|
|
|
+ """
|
|
|
+ 票圈 vlog 推荐监测
|
|
|
+ 会影响推荐的参数
|
|
|
+ 算法: app_type, mid, timestamp, machine_Info, abtest, extParam, pageSource, IP
|
|
|
+ """
|
|
|
+
|
|
|
+ def __init__(self):
|
|
|
+ self.url = "https://vlogapi.piaoquantv.com/longvideoapi/video/distribute/category/videoList/v2"
|
|
|
+ self.headers = {
|
|
|
+ 'Host': 'vlogapi.piaoquantv.com',
|
|
|
+ 'xweb_xhr': '1',
|
|
|
+ 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/6.8.0(0x16080000) NetType/WIFI MiniProgramEnv/Mac MacWechat/WMPF MacWechat/3.8.6(0x13080610) XWEB/1156',
|
|
|
+ 'content-type': 'application/x-www-form-urlencoded',
|
|
|
+ 'accept': '*/*',
|
|
|
+ 'sec-fetch-site': 'cross-site',
|
|
|
+ 'sec-fetch-mode': 'cors',
|
|
|
+ 'sec-fetch-dest': 'empty',
|
|
|
+ 'referer': 'https://servicewechat.com/wx89e7eb06478361d7/735/page-frame.html',
|
|
|
+ 'accept-language': 'en-US,en;q=0.9'
|
|
|
+ }
|
|
|
+ self.aliyun_log = AliyunLogger(platform="piaoquanVlog", mode="recommend")
|
|
|
+
|
|
|
+ def send_request(self, page_num):
|
|
|
+ """
|
|
|
+ :param page_num: 第几页
|
|
|
+ """
|
|
|
+ payload = {
|
|
|
+ "categoryJson": '{"categoryId":55}',
|
|
|
+ "pageNo": page_num,
|
|
|
+ "pageSize": 4,
|
|
|
+ "sortField": 0,
|
|
|
+ "pageSource": "vlog-pages/category",
|
|
|
+ "sharePageVideoId": None,
|
|
|
+ "shareId": "",
|
|
|
+ "careModelStatus": 1,
|
|
|
+ "token": "eacc679e9719307517de3d945479a545add3d48a",
|
|
|
+ "loginUid": 64168088,
|
|
|
+ "platform": "mac",
|
|
|
+ "versionCode": 760,
|
|
|
+ "machineCode": "weixin_openid_o0w175U16THwQmviRDIdGFmFgc6U",
|
|
|
+ "appType": 0,
|
|
|
+ "realAppType": 0,
|
|
|
+ "system": "Mac OS X 14.2.1",
|
|
|
+ "pageCategoryId": 55,
|
|
|
+ "rootPageSource": "",
|
|
|
+ "shareDepth": "",
|
|
|
+ "rootPageCategoryId": "",
|
|
|
+ "appId": "wx89e7eb06478361d7",
|
|
|
+ "clientTimestamp": int(time.time() * 1000),
|
|
|
+ "machineInfo": '{"sdkVersion":"3.3.4","brand":"apple","language":"zh_CN","model":"Mac14,2","platform":"mac","system":"Mac OS X 14.2.1","weChatVersion":"3.8.6","screenHeight":736,"screenWidth":414,"pixelRatio":2,"windowHeight":736,"windowWidth":414,"softVersion":"4.1.760"}',
|
|
|
+ "networkType": "wifi",
|
|
|
+ "network": "wifi",
|
|
|
+ "sessionId": "1708320545204-7cfd21f2-2762-a2a8-3331-7fa04e844ab0",
|
|
|
+ "subSessionId": "1708320545204-7cfd21f2-2762-a2a8-3331-7fa04e844ab0",
|
|
|
+ "returnId": "",
|
|
|
+ "jumpHomeVideoId": "",
|
|
|
+ "senceType": 1089,
|
|
|
+ "hotSenceType": 1089,
|
|
|
+ "abExpInfo": '{"ab_test004":[{"abExpCode":"126","configValue":""},{"abExpCode":"211","configValue":""}],"ab_test005":[],"ab_test006":[{"abExpCode":"310","configValue":""},{"abExpCode":"321","configValue":""},{"abExpCode":"331","configValue":""},{"abExpCode":"356","configValue":"{\\"playProgress\\": 10, \\"delayHide\\": 8}"},{"abExpCode":"371","configValue":"{\\"playIcon\\": \\"http://weapppiccdn.yishihui.com/wxicon/common/icon_play_btn_font.png?v=2\\", \\"width\\": 125}"}],"ab_test001":[{"abExpCode":"223","configValue":""},{"abExpCode":"201","configValue":""},{"abExpCode":"410","configValue":"{\\"layerStyle\\": 1, \\"oneDayShowCount\\": 3, \\"everyRecommendVideo\\": 5, \\"playProgress\\": 90, \\"closePosition\\": \\"top\\", \\"guideDialogText\\": [\\"您可以点击‘关注票圈公众号’\\", \\"每日最新资讯不错过\\"], \\"guideButtonText\\": \\"关注票圈公众号\\", \\"topImage\\": \\"https://weapppiccdn.yishihui.com/wxicon/common/img_cgi_image3.png\\", \\"jumpUrl\\": \\"https://mp.weixin.qq.com/s?__biz=MzIxMjg2MzE2Mg==&mid=2247483675&idx=1&sn=0338228015ba7a5b0a1937b14e610efc&chksm=97bed0cea0c959d81d90a5d9ce82502ca24fa418df70d6e619a88d4e007a8b14b2b3b3e62386#rd\\", \\"gzhId\\": 105}"}]}',
|
|
|
+ "extParams": '{"eventIds":"22040202,ab100,ab100,ab100,ab100,ab100,ab100,ab100,ab100,ab100,ab100","eventInfos":{"ab_test001":"ab100","ab_test002":"ab100","ab_test003":"ab100","ab_test004":"ab100","ab_test005":"ab100","ab_test006":"ab100","ab_test007":"ab100","ab_test008":"ab100","ab_test009":"ab100","ab_test010":"ab100"}}'
|
|
|
+ }
|
|
|
+ basic_response = requests.request("POST", self.url, headers=self.headers, data=payload, proxies=tunnel_proxies()).json()
|
|
|
+ self.process_video_list(basic_response['data'])
|
|
|
+
|
|
|
+ def process_video_list(self, video_list):
|
|
|
+ """
|
|
|
+ 处理返回的视频列表
|
|
|
+ :param video_list: 请求到的 video_list
|
|
|
+ :return: None
|
|
|
+ """
|
|
|
+ for video_obj in video_list:
|
|
|
+ video_item = {
|
|
|
+ "id": video_obj['id'],
|
|
|
+ "status": video_obj['status'],
|
|
|
+ "uid": video_obj['uid'],
|
|
|
+ "playCount": video_obj['playCount'],
|
|
|
+ "title": video_obj['title'],
|
|
|
+ "titleId": video_obj['titleId'],
|
|
|
+ "shareCount": video_obj['shareCountFriend'],
|
|
|
+ "favorCount": video_obj['favoriteds']
|
|
|
+ }
|
|
|
+ # print(json.dumps(video_item, ensure_ascii=False, indent=4))
|
|
|
+ self.aliyun_log.logging(
|
|
|
+ code="7001",
|
|
|
+ message="监控到一条视频",
|
|
|
+ data=video_item
|
|
|
+ )
|
|
|
+
|
|
|
+ def run(self):
|
|
|
+ """
|
|
|
+ 执行函数
|
|
|
+ :return: None
|
|
|
+ """
|
|
|
+ while True:
|
|
|
+ for index in range(1, 51):
|
|
|
+ try:
|
|
|
+ self.send_request(index)
|
|
|
+ # 随机休息 1 - 50 秒
|
|
|
+ time.sleep(random.randint(1, 50))
|
|
|
+ except Exception as e:
|
|
|
+ self.aliyun_log.logging(
|
|
|
+ code="3000",
|
|
|
+ message="扫描第{}页失败, 原因是{}".format(index, e)
|
|
|
+ )
|
|
|
+ # 抓完 50 页后休息 10 分钟
|
|
|
+ time.sleep(60 * 10)
|
|
|
+
|
|
|
+
|
|
|
+if __name__ == '__main__':
|
|
|
+ P = PiaoQuanVlog()
|
|
|
+ P.run()
|