zwwfs_recommend_test.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. import os
  2. import re
  3. import base64
  4. import json
  5. import random
  6. import sys
  7. import time
  8. import uuid
  9. import requests
  10. sys.path.append(os.getcwd())
  11. from common.video_item import VideoItem
  12. from common import PiaoQuanPipeline, AliyunLogger, tunnel_proxies
  13. from common.mq import MQ
  14. from common.scheduling_db import MysqlHelper
  15. from zhuwanwufusu.crypt import AESCipher as AES
  16. class ZhuWanWuFuSuRecommend(object):
  17. def __init__(self, platform, mode, rule_dict, user_dict, env):
  18. self.platform = platform
  19. self.mode = mode
  20. self.rule_dict = rule_dict
  21. self.user_dict = user_dict
  22. self.env = env
  23. self.download_cnt = 0
  24. self.mq = MQ(topic_name="topic_crawler_etl_" + self.env)
  25. self.expire_flag = False
  26. self.cryptor = AES()
  27. def get_recommend_list(self):
  28. url = "https://api.lidongze.cn/jeecg-boot/ugc/getVideoListsEn2"
  29. headers = {
  30. 'Host': 'api.lidongze.cn',
  31. 'xweb_xhr': '1',
  32. '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.4(0x13080410)XWEB/31009',
  33. 'token': '',
  34. 'content-type': 'application/json',
  35. 'accept': '*/*',
  36. 'referer': 'https://servicewechat.com/wx0afdc2669ed8df2f/3/page-frame.html',
  37. 'accept-language': 'en-US,en;q=0.9'
  38. }
  39. page_index = 1
  40. total_page = 2
  41. while page_index <= total_page:
  42. query = {
  43. "pageNo": page_index,
  44. "pageSize": 10,
  45. "groupId": "1650323161797439489", # 推荐流的 ID
  46. "vn": 1,
  47. "gx": 1,
  48. "appid": "wx0afdc2669ed8df2f",
  49. "type": 0
  50. }
  51. params = {
  52. "v": self.cryptor.aes_encrypt(data=json.dumps(query))
  53. }
  54. response = requests.request("GET", url, headers=headers, params=params, proxies=tunnel_proxies())
  55. result = json.loads(self.cryptor.aes_decrypt(response.text))
  56. total_page = result['list']['pages']
  57. page_index = result['list']['current'] + 1
  58. for index, video_obj in enumerate(result['list']['records']):
  59. self.process_video_obj(video_obj)
  60. def process_video_obj(self, video_obj):
  61. print(json.dumps(video_obj, ensure_ascii=False, indent=4))
  62. trace_id = self.platform + str(uuid.uuid1())
  63. play_cnt = int(video_obj['playnum'].replace("万+", "0000")) if "万+" in video_obj['playnum'] else int(
  64. video_obj['playnum'])
  65. item = VideoItem()
  66. item.add_video_info("video_id", video_obj['id'])
  67. item.add_video_info("video_title", video_obj['vname'])
  68. item.add_video_info("play_cnt", play_cnt)
  69. item.add_video_info("publish_time_stamp", int(time.time()))
  70. item.add_video_info("out_user_id", video_obj['authid'])
  71. item.add_video_info("cover_url", video_obj['shareimg'])
  72. item.add_video_info("like_cnt", int(video_obj['likenum']))
  73. item.add_video_info("video_url", video_obj['videoaddr'])
  74. item.add_video_info("out_video_id", video_obj['id'])
  75. item.add_video_info("platform", self.platform)
  76. item.add_video_info("strategy", self.mode)
  77. item.add_video_info("session", "{}-{}".format(self.platform, int(time.time())))
  78. item.add_video_info("user_id", self.user_dict['uid'])
  79. item.add_video_info("user_name", self.user_dict['nick_name'])
  80. mq_obj = item.produce_item()
  81. pipeline = PiaoQuanPipeline(
  82. platform=self.platform,
  83. mode=self.mode,
  84. rule_dict=self.rule_dict,
  85. env=self.env,
  86. item=mq_obj,
  87. trace_id=trace_id,
  88. )
  89. if pipeline.process_item():
  90. print(json.dumps(mq_obj, ensure_ascii=False, indent=4))
  91. self.download_cnt += 1
  92. print(self.download_cnt)
  93. if __name__ == '__main__':
  94. Z = ZhuWanWuFuSuRecommend(
  95. platform="zhuwanwufusu",
  96. mode="recommend",
  97. rule_dict={},
  98. user_dict={"uid": 123456, "nick_name": "luojunhuishuaige"},
  99. env="dev"
  100. )
  101. Z.get_recommend_list()