# -*- coding: utf-8 -*- # @Author: wangkun # @Time: 2022/6/27 import time import requests import urllib3 from crawler_monitor.main.common import Common from crawler_monitor.main.feishu_lib import Feishu proxies = {"http": None, "https": None} class UpdateKanYiKan: # 待更新数据列表 update_list = [] # 检查是否有今日的上升榜日期 @classmethod def check_data(cls, date): # 判断J1单元格的日期是否为今天 time.sleep(1) if Feishu.get_range_value("kanyikan", "monitor", "XS1f7l", "M1:M1")[0] != str(date): Common.logger("kanyikan").info("今天日期不存在") # 插入列 I1:J1,并写入日期 values = [[str(date)]] time.sleep(1) Feishu.insert_columns("kanyikan", "monitor", "XS1f7l", "COLUMNS", 12, 13) time.sleep(1) Feishu.update_values("kanyikan", "monitor", "XS1f7l", "M1:M1", values) Common.logger("kanyikan").info("插入今天日期成功\n") else: Common.logger("kanyikan").info("今天日期已存在\n") # 更新看一看播放量 @classmethod def update_play_cnt(cls): try: kanyikan_sheet = Feishu.get_values_batch("kanyikan", "monitor", "XS1f7l") for i in range(1, len(kanyikan_sheet)): Common.logger("kanyikan").info("正在更新第{}行", i + 1) video_id = kanyikan_sheet[i][6] if video_id is None or video_id == "": Common.logger("kanyikan").info("空行") cls.update_list.append("0") else: url = "https://search.weixin.qq.com/cgi-bin/recwxa/recwxagetonevideoinfo?" param = { "session": Common.get_session(), "vid": video_id, "wxaVersion": "3.9.2", "channelid": "208201", "scene": "32", "subscene": "1089", "model": "iPhone 1114.7.1", "clientVersion": "8.0.18", "sharesearchid": "447665862521758270", "sharesource": "-1" } urllib3.disable_warnings() r = requests.get(url=url, params=param, proxies=proxies, verify=False) v_play_cnt = r.json()["data"]["played_cnt"] # 更新单个视频 # Feishu.update_values( # "kanyikan", "monitor", "XS1f7l", "G" + str(i + 1) + ":" + "G" + str(i + 1), [[v_play_cnt]]) # Common.logger("kanyikan").info("video_id:{}, play_cnt:{}, 更新成功\n", video_id, v_play_cnt) # 待更新数据列表 cls.update_list.append(v_play_cnt) Common.logger("kanyikan").info("video_id:{}, 播放量:{},已添加至待更新数据列表", video_id, v_play_cnt) Common.logger("kanyikan").info("待更新列表数量:{}\n", len(cls.update_list)) if len(cls.update_list) >= 200: Common.logger("kanyikan").info("M{}:M{}", str(i-198), str(i+1)) Common.logger("kanyikan").info("{}\n", cls.update_list) time.sleep(1) Feishu.update_values("kanyikan", "monitor", "XS1f7l", "M"+str(i-198) + ":" + "M"+str(i+1), [[x] for x in cls.update_list]) Common.logger("kanyikan").info("更新{}条播放量成功\n", len(cls.update_list)) cls.update_list = [] elif i+1 == len(kanyikan_sheet): Common.logger("kanyikan").info("M{}:M{}", str(i + 1 - len(cls.update_list) + 1), str(i + 1)) Common.logger("kanyikan").info("{}\n", cls.update_list) time.sleep(1) Feishu.update_values("kanyikan", "monitor", "XS1f7l", "M"+str(i+1-len(cls.update_list)+1) + ":" + "M" + str(i+1), [[x] for x in cls.update_list]) Common.logger("kanyikan").info("更新{}条播放量成功\n", len(cls.update_list)) cls.update_list = [] return except Exception as e: Common.logger("kanyikan").error("更新看一看播放量异常:{}", e) if __name__ == "__main__": kanyikan = UpdateKanYiKan() kanyikan.check_data("2022/06/29")