shipinhao_scheduling.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import requests
  2. from common.aliyun_log import AliyunLogger
  3. from common.db import MysqlHelper
  4. def get_history_id(name):
  5. """
  6. 从数据库表中读取 id
  7. """
  8. # select_user_sql = f"""select * from crawler_user_v3 where ={task_id}"""
  9. # user_list = MysqlHelper.get_values(log_type, crawler, select_user_sql, env, action="")
  10. name_id_dict = {}
  11. if name_id_dict.get(name):
  12. return name_id_dict[name]
  13. else:
  14. return False
  15. def find_target_user(name, user_list):
  16. for obj in user_list:
  17. if obj['name'] == name:
  18. return obj
  19. else:
  20. continue
  21. return False
  22. class ShiPinHaoAccount:
  23. def __init__(self, token, cookie, account_name):
  24. self.token = token
  25. self.cookie = cookie
  26. self.account_name = account_name
  27. def get_account_id(self):
  28. # 读历史数据,如果存在 id,则直接返回 id
  29. history_id = get_history_id(self.account_name)
  30. if history_id:
  31. return history_id
  32. else:
  33. url = "https://mp.weixin.qq.com/cgi-bin/videosnap"
  34. params = {
  35. "action": "search",
  36. "scene": "1",
  37. "buffer": "",
  38. "query": self.account_name,
  39. "count": "21",
  40. "token": self.token,
  41. "lang": "zh_CN",
  42. "f": "json",
  43. "ajax": "1"
  44. }
  45. headers = {
  46. 'authority': 'mp.weixin.qq.com',
  47. 'accept': '*/*',
  48. 'accept-language': 'en,zh-CN;q=0.9,zh;q=0.8',
  49. 'cookie': self.cookie,
  50. 'referer': 'https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2&action=edit&isNew=1&type=77&createType=0&token={}&lang=zh_CN'.format(
  51. self.token),
  52. 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36',
  53. 'x-requested-with': 'XMLHttpRequest'
  54. }
  55. response = requests.request("GET", url, headers=headers, params=params)
  56. user_list = response.json()['acct_list']
  57. target_user = find_target_user(name=self.account_name, user_list=user_list)
  58. return target_user
  59. def get_account_videos(self):
  60. user_info = self.get_account_id()
  61. if user_info:
  62. url = "https://mp.weixin.qq.com/cgi-bin/videosnap"
  63. params = {
  64. "action": "get_feed_list",
  65. "username": user_info['username'],
  66. "buffer": "",
  67. "count": "15",
  68. "scene": "1",
  69. "token": self.token,
  70. "lang": "zh_CN",
  71. "f": "json",
  72. "ajax": "1"
  73. }
  74. headers = {
  75. 'authority': 'mp.weixin.qq.com',
  76. 'accept': '*/*',
  77. 'accept-language': 'en,zh-CN;q=0.9,zh;q=0.8',
  78. 'cookie': self.cookie,
  79. 'referer': 'https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2&action=edit&isNew=1&type=77&createType=0&token={}&lang=zh_CN'.format(self.token),
  80. 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36',
  81. 'x-requested-with': 'XMLHttpRequest'
  82. }
  83. response = requests.request("GET", url, headers=headers, params=params)
  84. video_list = response.json()
  85. # print(json.dumps(video_list, ensure_ascii=False, indent=4))
  86. # print(len(video_list['list']))
  87. for obj in video_list['list']:
  88. print(obj['desc'])
  89. else:
  90. print("Did not find any user info")