sph_nrxs.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. import random
  2. import time
  3. import requests
  4. import json
  5. import re
  6. from common import Material, Feishu, Common
  7. from common.sql_help import sqlCollect
  8. class SphNrxs:
  9. @classmethod
  10. def get_sph_data(cls, user):
  11. url = "http://61.48.133.26:30001/FinderGetUpMasterNextPage"
  12. count = 1
  13. headers = {
  14. 'Content-Type': 'application/json'
  15. }
  16. payload = json.dumps({
  17. "username": user,
  18. "last_buffer": ""
  19. })
  20. response = requests.request("POST", url, headers=headers, data=payload)
  21. time.sleep(random.randint(1, 5))
  22. Common.logger("sph_nrxs").info(f"{user}获取第{count}页视频")
  23. count += 1
  24. if response.text == "" or response.text == None:
  25. return
  26. res_json = response.json()
  27. try:
  28. if len(res_json["DownloadAddress"]) == 0 or res_json["DownloadAddress"] == "" or res_json[
  29. "DownloadAddress"] == None:
  30. return
  31. except:
  32. pass
  33. if "objectId" not in response.text or response.status_code != 200:
  34. return
  35. if len(res_json["UpMasterHomePage"]) == 0:
  36. return
  37. if not res_json["UpMasterHomePage"]:
  38. return
  39. try:
  40. for obj in res_json["UpMasterHomePage"]:
  41. Common.logger("sph_crawling").info(f"{user}扫描到一条数据")
  42. objectId = obj['objectId']
  43. object_id = sqlCollect.sph_data_info_v_id(objectId, "视频号")
  44. if object_id:
  45. continue
  46. objectNonceId = obj['objectNonceId']
  47. url1 = "http://61.48.133.26:30001/GetFinderDownloadAddress"
  48. payload = json.dumps({
  49. "objectId": objectId,
  50. "objectNonceId": objectNonceId
  51. })
  52. headers = {
  53. 'Content-Type': 'text/plain'
  54. }
  55. response = requests.request("POST", url1, headers=headers, data=payload)
  56. time.sleep(random.randint(0, 1))
  57. video_obj = response.json()
  58. video_url = video_obj.get('DownloadAddress')
  59. duration = video_obj.get('play_len')
  60. cover = video_obj.get('thumb_url')
  61. if len(video_url) == 0:
  62. continue
  63. share_cnt = int(obj['forward_count']) # 分享
  64. like_cnt = int(obj['like_count']) # 点赞
  65. user_name = obj['username'] # 用户名标示
  66. nick_name = obj['nickname'] # 用户名
  67. comment_count = obj['comment_count'] # 评论数
  68. fav_count = obj['fav_count'] # 大拇指点赞数
  69. Common.logger("sph_nrxs").info(f"{nick_name}符合规则")
  70. except Exception as e:
  71. Common.logger("sph_nrxs").info(f"{user}异常,异常信息{e}")
  72. return
  73. @classmethod
  74. def get_nrxs_list(cls):
  75. list = []
  76. cookie = Material.get_cookie_data("KsoMsyP2ghleM9tzBfmcEEXBnXg", "U1gySe", "视频号加热")
  77. url = "http://8.217.190.241:8888/crawler/wei_xin/shi_pin_hao/jia_re"
  78. payload = json.dumps({
  79. "account_name": "央视新闻",
  80. "category": "推荐",
  81. "cookie": cookie
  82. })
  83. headers = {
  84. 'Content-Type': 'application/json'
  85. }
  86. try:
  87. response = requests.request("POST", url, headers=headers, data=payload)
  88. response = response.json()
  89. code = response['code']
  90. if code == 0:
  91. data_list = response['data']['data']
  92. if data_list:
  93. for data in data_list:
  94. nick_name = data['nickName'] # 用户名
  95. user_name = data['username'] # 用户v2
  96. data_dict = {"nick_name": nick_name, "user_name": user_name}
  97. list.append(data_dict)
  98. else:
  99. Feishu.bot("xinxin", '视频号加热提醒', f'cookie 失效了,请即使更换', 'xinxin')
  100. return None
  101. except Exception as e:
  102. Feishu.bot("xinxin", '视频号加热提醒', f'cookie 失效了,请即使更换', 'xinxin')
  103. Common.logger("feishu").error(f"视频号加热bot异常:{e}\n")
  104. return None
  105. @classmethod
  106. def sph_nrxs_data(cls):
  107. user = sqlCollect.get_machine_making_reflux("视频号", "单点视频")
  108. if user == None:
  109. return
  110. user = [item[0] for item in user]
  111. for uid in user:
  112. if re.match(r'^[A-Za-z0-9]+$', uid):
  113. # 匹配成功,进行下一次循环
  114. continue
  115. print(uid)
  116. if __name__ == '__main__':
  117. SphNrxs.get_nrxs_list()