update_kanyikan.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. # -*- coding: utf-8 -*-
  2. # @Author: wangkun
  3. # @Time: 2022/6/27
  4. import os
  5. import sys
  6. import time
  7. import requests
  8. import urllib3
  9. sys.path.append(os.getcwd())
  10. from crawler_monitor.main.common import Common
  11. from crawler_monitor.main.feishu_lib import Feishu
  12. proxies = {"http": None, "https": None}
  13. class UpdateKanYiKan:
  14. # 待更新数据列表
  15. update_list = []
  16. # 检查是否有今日的上升榜日期
  17. @classmethod
  18. def check_data(cls, date):
  19. # 判断J1单元格的日期是否为今天
  20. time.sleep(1)
  21. if Feishu.get_range_value("kanyikan", "monitor", "6fed97", "M1:M1")[0] != str(date):
  22. Common.logger("kanyikan").info("今天日期不存在")
  23. # 插入列 I1:J1,并写入日期
  24. values = [[str(date)]]
  25. time.sleep(1)
  26. Feishu.insert_columns("kanyikan", "monitor", "6fed97", "COLUMNS", 12, 13)
  27. time.sleep(1)
  28. Feishu.update_values("kanyikan", "monitor", "6fed97", "M1:M1", values)
  29. Common.logger("kanyikan").info("插入今天日期成功\n")
  30. else:
  31. Common.logger("kanyikan").info("今天日期已存在\n")
  32. # 更新看一看播放量
  33. @classmethod
  34. def update_play_cnt(cls):
  35. try:
  36. kanyikan_sheet = Feishu.get_values_batch("kanyikan", "monitor", "6fed97")
  37. for i in range(1, len(kanyikan_sheet)):
  38. Common.logger("kanyikan").info("正在更新第{}行", i + 1)
  39. video_id = kanyikan_sheet[i][6]
  40. if video_id is None or video_id == "":
  41. Common.logger("kanyikan").info("空行")
  42. cls.update_list.append("0")
  43. else:
  44. url = "https://search.weixin.qq.com/cgi-bin/recwxa/recwxagetonevideoinfo?"
  45. param = {
  46. "session": Common.get_session(),
  47. "vid": video_id,
  48. "wxaVersion": "3.9.2",
  49. "channelid": "208201",
  50. "scene": "32",
  51. "subscene": "1089",
  52. "model": "iPhone 11<iPhone12,1>14.7.1",
  53. "clientVersion": "8.0.18",
  54. "sharesearchid": "447665862521758270",
  55. "sharesource": "-1"
  56. }
  57. urllib3.disable_warnings()
  58. r = requests.get(url=url, params=param, proxies=proxies, verify=False)
  59. v_play_cnt = r.json()["data"]["played_cnt"]
  60. # 更新单个视频
  61. # Feishu.update_values(
  62. # "kanyikan", "monitor", "6fed97", "G" + str(i + 1) + ":" + "G" + str(i + 1), [[v_play_cnt]])
  63. # Common.logger("kanyikan").info("video_id:{}, play_cnt:{}, 更新成功\n", video_id, v_play_cnt)
  64. # 待更新数据列表
  65. cls.update_list.append(v_play_cnt)
  66. Common.logger("kanyikan").info("video_id:{}, 播放量:{},已添加至待更新数据列表", video_id, v_play_cnt)
  67. Common.logger("kanyikan").info("待更新列表数量:{}\n", len(cls.update_list))
  68. if len(cls.update_list) >= 200:
  69. Common.logger("kanyikan").info("M{}:M{}", str(i-198), str(i+1))
  70. Common.logger("kanyikan").info("{}\n", cls.update_list)
  71. time.sleep(1)
  72. Feishu.update_values("kanyikan", "monitor", "6fed97",
  73. "M"+str(i-198) + ":" + "M"+str(i+1), [[x] for x in cls.update_list])
  74. Common.logger("kanyikan").info("更新{}条播放量成功\n", len(cls.update_list))
  75. cls.update_list = []
  76. elif i+1 == len(kanyikan_sheet):
  77. Common.logger("kanyikan").info("M{}:M{}", str(i + 1 - len(cls.update_list) + 1), str(i + 1))
  78. Common.logger("kanyikan").info("{}\n", cls.update_list)
  79. time.sleep(1)
  80. Feishu.update_values("kanyikan", "monitor", "6fed97",
  81. "M"+str(i+1-len(cls.update_list)+1) + ":" + "M" + str(i+1),
  82. [[x] for x in cls.update_list])
  83. Common.logger("kanyikan").info("更新{}条播放量成功\n", len(cls.update_list))
  84. cls.update_list = []
  85. return
  86. except Exception as e:
  87. Common.logger("kanyikan").error("更新看一看播放量异常:{}", e)
  88. if __name__ == "__main__":
  89. kanyikan = UpdateKanYiKan()
  90. start_time = time.time()
  91. today = Common.today
  92. kanyikan.check_data(today)
  93. kanyikan.update_play_cnt()
  94. end_time = time.time()
  95. Common.logger("kanyikan").info("全部更新完成,共耗时:{}秒\n", int(end_time - start_time))