import requests from common.aliyun_log import AliyunLogger from common.db import MysqlHelper def get_history_id(name): """ 从数据库表中读取 id """ # select_user_sql = f"""select * from crawler_user_v3 where ={task_id}""" # user_list = MysqlHelper.get_values(log_type, crawler, select_user_sql, env, action="") name_id_dict = {} if name_id_dict.get(name): return name_id_dict[name] else: return False def find_target_user(name, user_list): for obj in user_list: if obj['name'] == name: return obj else: continue return False class ShiPinHaoAccount: def __init__(self, token, cookie, account_name): self.token = token self.cookie = cookie self.account_name = account_name def get_account_id(self): # 读历史数据,如果存在 id,则直接返回 id history_id = get_history_id(self.account_name) if history_id: return history_id else: url = "https://mp.weixin.qq.com/cgi-bin/videosnap" params = { "action": "search", "scene": "1", "buffer": "", "query": self.account_name, "count": "21", "token": self.token, "lang": "zh_CN", "f": "json", "ajax": "1" } headers = { 'authority': 'mp.weixin.qq.com', 'accept': '*/*', 'accept-language': 'en,zh-CN;q=0.9,zh;q=0.8', 'cookie': self.cookie, '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), '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', 'x-requested-with': 'XMLHttpRequest' } response = requests.request("GET", url, headers=headers, params=params) user_list = response.json()['acct_list'] target_user = find_target_user(name=self.account_name, user_list=user_list) return target_user def get_account_videos(self): user_info = self.get_account_id() if user_info: url = "https://mp.weixin.qq.com/cgi-bin/videosnap" params = { "action": "get_feed_list", "username": user_info['username'], "buffer": "", "count": "15", "scene": "1", "token": self.token, "lang": "zh_CN", "f": "json", "ajax": "1" } headers = { 'authority': 'mp.weixin.qq.com', 'accept': '*/*', 'accept-language': 'en,zh-CN;q=0.9,zh;q=0.8', 'cookie': self.cookie, '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), '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', 'x-requested-with': 'XMLHttpRequest' } response = requests.request("GET", url, headers=headers, params=params) video_list = response.json() # print(json.dumps(video_list, ensure_ascii=False, indent=4)) # print(len(video_list['list'])) for obj in video_list['list']: print(obj['desc']) else: print("Did not find any user info")