|
@@ -60,15 +60,15 @@ class DownloadUp:
|
|
|
if len(Feishu.get_values_batch("SdCHOM")) == 1:
|
|
|
pass
|
|
|
else:
|
|
|
- for i in range(len(Feishu.get_values_batch("SdCHOM"))):
|
|
|
+ for i in range(1, len(Feishu.get_values_batch("SdCHOM"))+1):
|
|
|
time.sleep(1)
|
|
|
try:
|
|
|
video_info_session = Common.get_session()
|
|
|
- Common.logger().info("获取视频info时,session:{}", video_info_session)
|
|
|
- download_time = Feishu.get_values_batch("SdCHOM")[i+1][0] # 第一次获取该视频的时间
|
|
|
- download_video_id = Feishu.get_values_batch("SdCHOM")[i+1][1] # 外网视频 ID
|
|
|
- download_video_play_cnt = Feishu.get_values_batch("SdCHOM")[i+1][2] # 播放量
|
|
|
- download_video_title = Feishu.get_values_batch("SdCHOM")[i+1][3]
|
|
|
+ download_time = Feishu.get_values_batch("SdCHOM")[i][0] # 第一次获取该视频的时间
|
|
|
+ download_time = int(time.mktime(time.strptime(download_time, "%Y/%m/%d %H:%M:%S")))
|
|
|
+ download_video_id = Feishu.get_values_batch("SdCHOM")[i][2] # 外网视频 ID
|
|
|
+ download_video_title = Feishu.get_values_batch("SdCHOM")[i][3] # 视频标题
|
|
|
+ download_video_play_cnt = Feishu.get_values_batch("SdCHOM")[i][4] # 播放量
|
|
|
|
|
|
url = "https://search.weixin.qq.com/cgi-bin/recwxa/recwxagetonevideoinfo?"
|
|
|
param = {
|
|
@@ -89,7 +89,7 @@ class DownloadUp:
|
|
|
if "data" not in response:
|
|
|
Common.logger().error("获取视频info时错误,删除该视频:{}", download_video_title)
|
|
|
# 删除行或列,可选 ROWS、COLUMNS
|
|
|
- Feishu.dimension_range("SdCHOM", "ROWS", i + 2, i + 2)
|
|
|
+ Feishu.dimension_range("SdCHOM", "ROWS", i + 1, i + 1)
|
|
|
else:
|
|
|
data = response["data"]
|
|
|
v_duration = data["duration"]
|
|
@@ -102,6 +102,7 @@ class DownloadUp:
|
|
|
v_resolution = str(v_width) + "*" + str(v_height)
|
|
|
v_send_date = data["upload_time"]
|
|
|
v_username = data["user_info"]["nickname"].strip().replace("\n", "")
|
|
|
+ v_user_id = data["openid"]
|
|
|
v_user_cover = data["user_info"]["headimg_url"]
|
|
|
v_video_cover = data["cover_url"]
|
|
|
if "items" not in data["play_info"]:
|
|
@@ -115,130 +116,154 @@ class DownloadUp:
|
|
|
else:
|
|
|
download_url_up = data["play_info"]["items"][0]["play_url"]
|
|
|
|
|
|
- # 判断基本规则
|
|
|
- if download_video_id not in [j for i in Feishu.get_values_batch("20ce0c") for j in i]\
|
|
|
- and cls.up_rule(v_width, v_height, v_duration, v_play_cnt_up) is True \
|
|
|
- and download_video_id != "" and download_video_title != "" and v_duration != "" \
|
|
|
- and v_play_cnt_up != "" and v_comment_cnt != "" and v_liked_cnt != "" \
|
|
|
- and v_shared_cnt != "" and v_width != "" and v_height != "" \
|
|
|
- and v_send_date != "" and v_username != "" and v_user_cover != "" \
|
|
|
- and v_video_cover != "" and download_url_up != "":
|
|
|
- if int(time.time()) - int(download_time) < 3600:
|
|
|
- Common.logger().info("距上次获取该视频时间:{}分钟;{}",
|
|
|
- int((int(int(time.time()) - int(download_time))) / 60),
|
|
|
- download_video_title)
|
|
|
- elif 7200 >= int(time.time()) - int(download_time) >= 3600:
|
|
|
- if int(v_play_cnt_up) - int(download_video_play_cnt) >= 1000:
|
|
|
- Common.logger().info("该视频:{}在1小时内的播放量{}>=1000",
|
|
|
- download_video_title,
|
|
|
- int(v_play_cnt_up) - int(download_video_play_cnt))
|
|
|
-
|
|
|
- # 下载封面
|
|
|
- Common.download_method("cover", download_video_title, v_video_cover)
|
|
|
- # 下载视频
|
|
|
- Common.download_method("video", download_video_title, download_url_up)
|
|
|
- # 保存视频信息到 "./files/{视频标题}/videoinfo.txt"
|
|
|
- with open(r"./videos/" + download_video_title
|
|
|
- + "/" + "info.txt", "a", encoding="utf8") as f_a2:
|
|
|
- f_a2.write(str(download_video_id) + "\n" +
|
|
|
- str(download_video_title) + "\n" +
|
|
|
- str(v_duration) + "\n" +
|
|
|
- str(v_play_cnt_up) + "\n" +
|
|
|
- str(v_comment_cnt) + "\n" +
|
|
|
- str(v_liked_cnt) + "\n" +
|
|
|
- str(v_shared_cnt) + "\n" +
|
|
|
- str(v_resolution) + "\n" +
|
|
|
- str(v_send_date) + "\n" +
|
|
|
- str(v_username) + "\n" +
|
|
|
- str(v_user_cover) + "\n" +
|
|
|
- str(download_url_up) + "\n" +
|
|
|
- str(v_video_cover) + "\n" +
|
|
|
- str(video_info_session))
|
|
|
- Common.logger().info("==========视频信息已保存至info.txt==========")
|
|
|
-
|
|
|
- # 上传该视频
|
|
|
- Common.logger().info("开始上传视频:{}", download_video_title)
|
|
|
- Publish.upload_and_publish(env, "up")
|
|
|
-
|
|
|
- # 保存视频 ID 到云文档:
|
|
|
- # https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=20ce0c
|
|
|
- Common.logger().info("保存视频ID至云文档:{}", download_video_title)
|
|
|
- # 看一看+ ,视频ID工作表,插入首行
|
|
|
- Feishu.insert_columns("20ce0c")
|
|
|
- # 看一看+ ,视频ID工作表,首行写入数据
|
|
|
- upload_time = int(time.time())
|
|
|
- Feishu.update_values("20ce0c",
|
|
|
- str(time.strftime("%Y-%m-%d %H:%M:%S",
|
|
|
- time.localtime(upload_time))),
|
|
|
- str(download_video_id),
|
|
|
- str(v_play_cnt_up),
|
|
|
- str(download_video_title),
|
|
|
- str(v_duration),
|
|
|
- str(v_comment_cnt),
|
|
|
- str(v_liked_cnt),
|
|
|
- str(v_shared_cnt),
|
|
|
- str(v_resolution),
|
|
|
- str(time.strftime("%Y-%m-%d %H:%M:%S",
|
|
|
- time.localtime(int(v_send_date)))),
|
|
|
- str(v_username),
|
|
|
- str(v_user_cover),
|
|
|
- str(v_video_cover),
|
|
|
- str(download_url_up),
|
|
|
- str(video_info_session))
|
|
|
-
|
|
|
- # 从云文档删除该视频信息:https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=SdCHOM
|
|
|
- Common.logger().info("从云文档删除该视频信息:{}", download_video_title)
|
|
|
- # 删除行或列,可选 ROWS、COLUMNS
|
|
|
- Feishu.dimension_range("SdCHOM", "ROWS", i + 2, i + 2)
|
|
|
- else:
|
|
|
- # 删除之前保存的该视频信息,并把现在的信息保存进去
|
|
|
- Common.logger().info("该视频1小时内的播放量:{}<1000;更新该视频信息:{}",
|
|
|
- int(v_play_cnt_up) - int(download_video_play_cnt),
|
|
|
- download_video_title)
|
|
|
- # 从云文档删除该视频信息:https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=SdCHOM
|
|
|
- Common.logger().info("从云文档删除该视频信息:{}", download_video_title)
|
|
|
- # 删除行或列,可选 ROWS、COLUMNS
|
|
|
- Feishu.dimension_range("SdCHOM", "ROWS", i + 2, i + 2)
|
|
|
-
|
|
|
- # 看一看+工作表,插入首行
|
|
|
- Feishu.insert_columns("SdCHOM")
|
|
|
-
|
|
|
- # 获取当前时间
|
|
|
- download_up_time = int(time.time())
|
|
|
- # 看一看云文档,工作表 kanyikan_feeds_1 中写入数据
|
|
|
- Feishu.update_values("SdCHOM",
|
|
|
- a1=str(download_up_time),
|
|
|
- b1=str(download_video_id),
|
|
|
- c1=str(v_play_cnt_up),
|
|
|
- d1=str(download_video_title),
|
|
|
- e1=str(v_duration),
|
|
|
- f1=str(v_comment_cnt),
|
|
|
- g1=str(v_liked_cnt),
|
|
|
- h1=str(v_shared_cnt),
|
|
|
- i1=str(v_resolution),
|
|
|
- j1=str(v_send_date),
|
|
|
- k1=str(v_username),
|
|
|
- l1=str(v_user_cover),
|
|
|
- m1=str(v_video_cover),
|
|
|
- n1=str(download_url_up),
|
|
|
- o1=str(video_info_session))
|
|
|
- elif int(time.time()) - int(download_time) > 7200:
|
|
|
- Common.logger().info("距上次获取该视频时间:""{}分钟。超过2小时,删除该视频;标题:{}",
|
|
|
- int((int(time.time()) - int(download_time)) / 60),
|
|
|
- download_video_title)
|
|
|
- # 删除行或列,可选 ROWS、COLUMNS
|
|
|
- Feishu.dimension_range("SdCHOM", "ROWS", i + 2, i + 2)
|
|
|
- else:
|
|
|
- Common.logger().info("不满足下载规则:{}", download_video_title)
|
|
|
+ Common.logger().info("正在判断第{}行,视频:{}", i, download_video_title)
|
|
|
+
|
|
|
+ # 判断无效视频
|
|
|
+ if download_video_id == "" \
|
|
|
+ or download_video_id is None\
|
|
|
+ and download_video_title == ""\
|
|
|
+ or download_video_title is None\
|
|
|
+ and v_duration == "" \
|
|
|
+ and v_play_cnt_up == ""\
|
|
|
+ and v_send_date == ""\
|
|
|
+ and v_user_cover == "" \
|
|
|
+ and v_video_cover == ""\
|
|
|
+ and download_url_up == "":
|
|
|
+ Common.logger().info("无效视频,删除该视频信息:{}", download_video_title)
|
|
|
+ # 从云文档删除该视频信息:https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=SdCHOM
|
|
|
+ Feishu.dimension_range("SdCHOM", "ROWS", i + 1, i + 1)
|
|
|
+
|
|
|
+ # 上升榜时长不足 1 小时
|
|
|
+ elif int(time.time()) - int(download_time) < 3600:
|
|
|
+ Common.logger().info("距上次获取该视频时间:{}分钟;{}",
|
|
|
+ int((int(int(time.time()) - int(download_time))) / 60),
|
|
|
+ download_video_title)
|
|
|
+
|
|
|
+ # 上升榜时长超过 2 小时
|
|
|
+ elif int(time.time()) - int(download_time) > 7200:
|
|
|
+ Common.logger().info("距上次获取该视频时间:""{}分钟。超过2小时,删除该视频;标题:{}",
|
|
|
+ int((int(time.time()) - int(download_time)) / 60),
|
|
|
+ download_video_title)
|
|
|
+ # 删除行或列,可选 ROWS、COLUMNS
|
|
|
+ Feishu.dimension_range("SdCHOM", "ROWS", i + 1, i + 1)
|
|
|
+
|
|
|
+ # 上升榜下载规则
|
|
|
+ elif cls.up_rule(v_width, v_height, v_duration, v_play_cnt_up) is False:
|
|
|
+ Common.logger().info("不满足上升榜下载规则,删除视频:{}", download_video_title)
|
|
|
+ # 删除行或列,可选 ROWS、COLUMNS
|
|
|
+ Feishu.dimension_range("SdCHOM", "ROWS", i + 1, i + 1)
|
|
|
+
|
|
|
+ # 从已下载视频表中去重:https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=20ce0c
|
|
|
+ elif download_video_id in [j for m in Feishu.get_values_batch("20ce0c") for j in m]:
|
|
|
+ Common.logger().info("视频已下载,删除该视频信息:{}", download_video_title)
|
|
|
+ # 从云文档删除该视频信息:https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=SdCHOM
|
|
|
+ Feishu.dimension_range("SdCHOM", "ROWS", i + 1, i + 1)
|
|
|
+
|
|
|
+ # 上升榜时长在 1-2 小时内,播放量增长>=1000
|
|
|
+ elif (7200 >= int(time.time()) - int(download_time) >= 3600)\
|
|
|
+ and (int(v_play_cnt_up) - int(download_video_play_cnt) >= 1000):
|
|
|
+ Common.logger().info(
|
|
|
+ "视频:{},在上升榜时间内的播放量{}>=1000,开始下载视频",
|
|
|
+ download_video_title, int(v_play_cnt_up) - int(download_video_play_cnt))
|
|
|
+
|
|
|
+ # 下载封面
|
|
|
+ Common.download_method("cover", download_video_title, v_video_cover)
|
|
|
+ # 下载视频
|
|
|
+ Common.download_method("video", download_video_title, download_url_up)
|
|
|
+ # 保存视频信息到 "./files/{视频标题}/videoinfo.txt"
|
|
|
+ with open(r"./videos/" + download_video_title
|
|
|
+ + "/" + "info.txt", "a", encoding="utf8") as f_a2:
|
|
|
+ f_a2.write(str(download_video_id) + "\n" +
|
|
|
+ str(download_video_title) + "\n" +
|
|
|
+ str(v_duration) + "\n" +
|
|
|
+ str(v_play_cnt_up) + "\n" +
|
|
|
+ str(v_comment_cnt) + "\n" +
|
|
|
+ str(v_liked_cnt) + "\n" +
|
|
|
+ str(v_shared_cnt) + "\n" +
|
|
|
+ str(v_resolution) + "\n" +
|
|
|
+ str(v_send_date) + "\n" +
|
|
|
+ str(v_username) + "\n" +
|
|
|
+ str(v_user_cover) + "\n" +
|
|
|
+ str(download_url_up) + "\n" +
|
|
|
+ str(v_video_cover) + "\n" +
|
|
|
+ str(video_info_session))
|
|
|
+ Common.logger().info("==========视频信息已保存至info.txt==========")
|
|
|
+
|
|
|
+ # 上传该视频
|
|
|
+ Common.logger().info("开始上传视频:{}", download_video_title)
|
|
|
+ Publish.upload_and_publish(env, "up")
|
|
|
+
|
|
|
+ # 保存视频 ID 到云文档:
|
|
|
+ # https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=20ce0c
|
|
|
+ Common.logger().info("保存视频ID至云文档:{}", download_video_title)
|
|
|
+ # 看一看+ ,视频ID工作表,插入首行
|
|
|
+ Feishu.insert_columns("20ce0c", "ROWS", 1, 2)
|
|
|
+ # 看一看+ ,视频ID工作表,首行写入数据
|
|
|
+ upload_time = int(time.time())
|
|
|
+ values = [[time.strftime("%Y/%m/%d %H:%M:%S", time.localtime(upload_time)),
|
|
|
+ "上升榜",
|
|
|
+ str(download_video_id),
|
|
|
+ str(download_video_title),
|
|
|
+ v_play_cnt_up,
|
|
|
+ v_comment_cnt,
|
|
|
+ v_liked_cnt,
|
|
|
+ v_shared_cnt,
|
|
|
+ v_duration,
|
|
|
+ v_resolution,
|
|
|
+ time.strftime("%Y/%m/%d %H:%M:%S", time.localtime(v_send_date)),
|
|
|
+ str(v_username),
|
|
|
+ str(v_user_id),
|
|
|
+ str(v_user_cover),
|
|
|
+ str(v_video_cover),
|
|
|
+ str(download_url_up)]]
|
|
|
+ time.sleep(1)
|
|
|
+ Feishu.update_values("20ce0c", "A2:Q2", values)
|
|
|
+
|
|
|
+ # 从云文档删除该视频信息:https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=SdCHOM
|
|
|
+ Common.logger().info("从云文档删除该视频信息:{}", download_video_title)
|
|
|
+ # 删除行或列,可选 ROWS、COLUMNS
|
|
|
+ Feishu.dimension_range("SdCHOM", "ROWS", i + 1, i + 1)
|
|
|
+ # 上升榜时长在 1-2 小时内,播放量增长<1000
|
|
|
+ elif (7200 >= int(time.time()) - int(download_time) >= 3600)\
|
|
|
+ and (int(v_play_cnt_up) - int(download_video_play_cnt) < 1000):
|
|
|
+ # 删除之前保存的该视频信息,并把现在的信息保存进去
|
|
|
+ Common.logger().info("该视频1小时内的播放量:{}<1000;更新该视频信息:{}",
|
|
|
+ int(v_play_cnt_up) - int(download_video_play_cnt),
|
|
|
+ download_video_title)
|
|
|
# 从云文档删除该视频信息:https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=SdCHOM
|
|
|
Common.logger().info("从云文档删除该视频信息:{}", download_video_title)
|
|
|
# 删除行或列,可选 ROWS、COLUMNS
|
|
|
- Feishu.dimension_range("SdCHOM", "ROWS", i + 2, i + 2)
|
|
|
+ Feishu.dimension_range("SdCHOM", "ROWS", i + 1, i + 1)
|
|
|
+
|
|
|
+ # 看一看+工作表,插入首行
|
|
|
+ Feishu.insert_columns("SdCHOM", "ROWS", 1, 2)
|
|
|
+
|
|
|
+ # 获取当前时间
|
|
|
+ download_up_time = int(time.time())
|
|
|
+ values = [[time.strftime("%Y/%m/%d %H:%M:%S", time.localtime(download_up_time)),
|
|
|
+ "上升榜",
|
|
|
+ str(download_video_id),
|
|
|
+ str(download_video_title),
|
|
|
+ v_play_cnt_up,
|
|
|
+ v_comment_cnt,
|
|
|
+ v_liked_cnt,
|
|
|
+ v_shared_cnt,
|
|
|
+ v_duration,
|
|
|
+ v_resolution,
|
|
|
+ time.strftime("%Y/%m/%d %H:%M:%S", time.localtime(v_send_date)),
|
|
|
+ str(v_username),
|
|
|
+ str(v_user_id),
|
|
|
+ str(v_user_cover),
|
|
|
+ str(v_video_cover),
|
|
|
+ str(download_url_up)]]
|
|
|
+ time.sleep(1)
|
|
|
+ Feishu.update_values("SdCHOM", "A2:Q2", values)
|
|
|
+
|
|
|
except Exception as e:
|
|
|
# 从云文档删除该视频信息:https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=SdCHOM
|
|
|
Common.logger().error("获取视频info异常:{},删除该视频", e)
|
|
|
# 删除行或列,可选 ROWS、COLUMNS
|
|
|
- Feishu.dimension_range("SdCHOM", "ROWS", i + 2, i + 2)
|
|
|
+ Feishu.dimension_range("SdCHOM", "ROWS", i + 1, i + 1)
|
|
|
except Exception as e:
|
|
|
Common.logger().error(e)
|
|
|
|