update_kanyikan.py 4.5 KB

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