Pārlūkot izejas kodu

更新下载逻辑

wangkun 3 gadi atpakaļ
vecāks
revīzija
54fdf248e3
2 mainītis faili ar 133 papildinājumiem un 123 dzēšanām
  1. 132 122
      main/download_kuaishou.py
  2. 1 1
      main/run_recommend.py

+ 132 - 122
main/download_kuaishou.py

@@ -316,133 +316,143 @@ class KuaiShou:
         测试环境:env == dev
         正式环境:env == prod
         """
+        try:
+            for i in range(1, len(Feishu.get_values_batch("Zt2PGQ")) + 1):
+                time.sleep(1)
+                download_photo_id = Feishu.get_values_batch("Zt2PGQ")[i][2]
+                download_video_title = Feishu.get_values_batch("Zt2PGQ")[i][3]
+                download_video_play_cnt = Feishu.get_values_batch("Zt2PGQ")[i][4]
+                download_video_comment_cnt = Feishu.get_values_batch("Zt2PGQ")[i][5]
+                download_video_like_cnt = Feishu.get_values_batch("Zt2PGQ")[i][6]
+                download_video_share_cnt = Feishu.get_values_batch("Zt2PGQ")[i][7]
+                download_video_duration = Feishu.get_values_batch("Zt2PGQ")[i][8]
+                download_video_resolution = Feishu.get_values_batch("Zt2PGQ")[i][9]
+                download_video_width = download_video_resolution.split("*")[0]
+                download_video_height = download_video_resolution.split("*")[-1]
+                download_video_send_time = Feishu.get_values_batch("Zt2PGQ")[i][10]
+                download_user_name = Feishu.get_values_batch("Zt2PGQ")[i][11]
+                download_user_id = Feishu.get_values_batch("Zt2PGQ")[i][12]
+                download_head_url = Feishu.get_values_batch("Zt2PGQ")[i][13][0]["link"]
+                download_cover_url = Feishu.get_values_batch("Zt2PGQ")[i][14][0]["link"]
+                download_video_url = Feishu.get_values_batch("Zt2PGQ")[i][15][0]["link"]
+
+                # Common.logger().info("download_photo_id:{}", download_photo_id)
+                # Common.logger().info("download_video_title:{}", download_video_title)
+                # Common.logger().info("download_video_play_cnt:{}", download_video_play_cnt)
+                # Common.logger().info("download_video_comment_cnt:{}", download_video_comment_cnt)
+                # Common.logger().info("download_video_like_cnt:{}", download_video_like_cnt)
+                # Common.logger().info("download_video_share_cnt:{}", download_video_share_cnt)
+                # Common.logger().info("download_video_duration:{}", download_video_duration)
+                # Common.logger().info("download_video_resolution:{}", download_video_resolution)
+                # Common.logger().info("download_video_send_time:{}", download_video_send_time)
+                # Common.logger().info("download_user_name:{}", download_user_name)
+                # Common.logger().info("download_user_id:{}", download_user_id)
+                # Common.logger().info("download_head_url:{}", download_head_url)
+                # Common.logger().info("download_cover_url:{}", download_cover_url)
+                # Common.logger().info("download_video_url:{}", download_video_url)
+
+                Common.logger().info("正在判断第{}行,视频:{}", i, download_video_title)
+
+                # 过滤空行
+                if download_photo_id is None or download_video_title is None or download_video_play_cnt is None:
+                    Common.logger().warning("空行,略过")
+                # 去重
+                elif download_photo_id in [j for m in Feishu.get_values_batch("3b207c") for j in m]:
+                    Common.logger().info("该视频已下载:{}", download_video_title)
+                    # 删除行或列,可选 ROWS、COLUMNS
+                    time.sleep(1)
+                    Feishu.dimension_range("Zt2PGQ", "ROWS", i + 1, i + 1)
+                    return
+                # 下载规则
+                elif cls.kuaishou_download_rule(
+                        download_video_duration, download_video_width, download_video_height,
+                        download_video_play_cnt, download_video_like_cnt, download_video_share_cnt) is True:
+                    Common.logger().info("开始下载快手视频:{}".format(download_video_title))
+
+                    # 下载封面
+                    Common.download_method(text="cover",
+                                           d_name=str(download_video_title), d_url=str(download_cover_url))
+                    # 下载视频
+                    Common.download_method(text="video",
+                                           d_name=str(download_video_title), d_url=str(download_video_url))
+                    # 保存视频信息至 "./videos/{download_video_title}/info.txt"
+                    with open("./videos/" + download_video_title
+                              + "/" + "info.txt", "a", encoding="UTF-8") as f_a:
+                        f_a.write(str(download_photo_id) + "\n" +
+                                  str(download_video_title) + "\n" +
+                                  str(download_video_duration) + "\n" +
+                                  str(download_video_play_cnt) + "\n" +
+                                  str(download_video_comment_cnt) + "\n" +
+                                  str(download_video_like_cnt) + "\n" +
+                                  str(download_video_share_cnt) + "\n" +
+                                  str(download_video_resolution) + "\n" +
+                                  str(int(time.mktime(
+                                      time.strptime(download_video_send_time, "%Y/%m/%d %H:%M:%S")))) + "\n" +
+                                  str(download_user_name) + "\n" +
+                                  str(download_head_url) + "\n" +
+                                  str(download_video_url) + "\n" +
+                                  str(download_cover_url) + "\n" +
+                                  str(cls.did))
+                    Common.logger().info("==========视频信息已保存至info.txt==========")
+
+                    # 添加视频 ID 到 list,用于统计当次下载总数
+                    cls.download_video_list.append(download_photo_id)
+
+                    # 上传视频
+                    Common.logger().info("开始上传视频:{}".format(download_video_title))
+                    Publish.upload_and_publish(env, "play")
+
+                    # 保存视频 ID 到云文档:https://w42nne6hzg.feishu.cn/sheets/shtcnp4SaJt37q6OOOrYzPMjQkg?sheet=3b207c
+                    Common.logger().info("保存视频ID至云文档:{}", download_video_title)
+                    # 视频ID工作表,插入首行
+                    Feishu.insert_columns("3b207c", "ROWS", 1, 2)
+                    # 视频ID工作表,首行写入数据
+                    upload_time = int(time.time())
+                    values = [[str(time.strftime("%Y/%m/%d %H:%M:%S", time.localtime(upload_time))),
+                               "推荐榜",
+                               str(download_photo_id),
+                               str(download_video_title),
+                               str(download_video_play_cnt),
+                               str(download_video_comment_cnt),
+                               str(download_video_like_cnt),
+                               str(download_video_share_cnt),
+                               str(download_video_duration),
+                               str(download_video_resolution),
+                               str(download_video_send_time),
+                               str(download_user_name),
+                               str(download_user_id),
+                               str(download_head_url),
+                               str(download_cover_url),
+                               str(download_video_url)]]
+                    time.sleep(1)
+                    Feishu.update_values("3b207c", "A2:Q2", values)
+
+                    # 从云文档删除该视频信息:https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=Zt2PGQ
+                    Common.logger().info("从云文档删除该视频信息:{}", download_video_title)
+                    # 删除行或列,可选 ROWS、COLUMNS
+                    time.sleep(1)
+                    Feishu.dimension_range("Zt2PGQ", "ROWS", i + 1, i + 1)
+                    return
+                else:
+                    # 从云文档删除该视频信息:https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=Zt2PGQ
+                    Common.logger().info("该视频不满足下载规则,删除在云文档中的信息:{}", download_video_title)
+                    # 删除行或列,可选 ROWS、COLUMNS
+                    Feishu.dimension_range("Zt2PGQ", "ROWS", i + 1, i + 1)
+                    return
+        except Exception as e:
+            Common.logger().error("视频 info 异常,删除该视频信息", e)
+            # 删除行或列,可选 ROWS、COLUMNS
+            Feishu.dimension_range("Zt2PGQ", "ROWS", i + 1, i + 1)
+            return
+
+    # 执行上传及下载
+    @classmethod
+    def run_download_publish(cls):
         try:
             if len(Feishu.get_values_batch("Zt2PGQ")) == 1:
                 pass
             else:
-                for i in range(1, len(Feishu.get_values_batch("Zt2PGQ")) + 1):
-                    time.sleep(1)
-                    try:
-                        download_photo_id = Feishu.get_values_batch("Zt2PGQ")[i][2]
-                        download_video_title = Feishu.get_values_batch("Zt2PGQ")[i][3]
-                        download_video_play_cnt = Feishu.get_values_batch("Zt2PGQ")[i][4]
-                        download_video_comment_cnt = Feishu.get_values_batch("Zt2PGQ")[i][5]
-                        download_video_like_cnt = Feishu.get_values_batch("Zt2PGQ")[i][6]
-                        download_video_share_cnt = Feishu.get_values_batch("Zt2PGQ")[i][7]
-                        download_video_duration = Feishu.get_values_batch("Zt2PGQ")[i][8]
-                        download_video_resolution = Feishu.get_values_batch("Zt2PGQ")[i][9]
-                        download_video_width = download_video_resolution.split("*")[0]
-                        download_video_height = download_video_resolution.split("*")[-1]
-                        download_video_send_time = Feishu.get_values_batch("Zt2PGQ")[i][10]
-                        download_user_name = Feishu.get_values_batch("Zt2PGQ")[i][11]
-                        download_user_id = Feishu.get_values_batch("Zt2PGQ")[i][12]
-                        download_head_url = Feishu.get_values_batch("Zt2PGQ")[i][13][0]["link"]
-                        download_cover_url = Feishu.get_values_batch("Zt2PGQ")[i][14][0]["link"]
-                        download_video_url = Feishu.get_values_batch("Zt2PGQ")[i][15][0]["link"]
-
-                        # Common.logger().info("download_photo_id:{}", download_photo_id)
-                        # Common.logger().info("download_video_title:{}", download_video_title)
-                        # Common.logger().info("download_video_play_cnt:{}", download_video_play_cnt)
-                        # Common.logger().info("download_video_comment_cnt:{}", download_video_comment_cnt)
-                        # Common.logger().info("download_video_like_cnt:{}", download_video_like_cnt)
-                        # Common.logger().info("download_video_share_cnt:{}", download_video_share_cnt)
-                        # Common.logger().info("download_video_duration:{}", download_video_duration)
-                        # Common.logger().info("download_video_resolution:{}", download_video_resolution)
-                        # Common.logger().info("download_video_send_time:{}", download_video_send_time)
-                        # Common.logger().info("download_user_name:{}", download_user_name)
-                        # Common.logger().info("download_user_id:{}", download_user_id)
-                        # Common.logger().info("download_head_url:{}", download_head_url)
-                        # Common.logger().info("download_cover_url:{}", download_cover_url)
-                        # Common.logger().info("download_video_url:{}", download_video_url)
-
-                        Common.logger().info("正在判断第{}行,视频:{}", i, download_video_title)
-
-                        # 过滤空行
-                        if download_photo_id is None or download_video_title is None or download_video_play_cnt is None:
-                            Common.logger().warning("空行,略过")
-                        # 去重
-                        elif download_photo_id in [j for m in Feishu.get_values_batch("3b207c") for j in m]:
-                            Common.logger().info("该视频已下载:{}", download_video_title)
-                        # 下载规则
-                        elif cls.kuaishou_download_rule(
-                                download_video_duration, download_video_width, download_video_height,
-                                download_video_play_cnt, download_video_like_cnt, download_video_share_cnt) is True:
-                            Common.logger().info("开始下载快手视频:{}".format(download_video_title))
-
-                            # 下载封面
-                            Common.download_method(text="cover",
-                                                   d_name=str(download_video_title), d_url=str(download_cover_url))
-                            # 下载视频
-                            Common.download_method(text="video",
-                                                   d_name=str(download_video_title), d_url=str(download_video_url))
-                            # 保存视频信息至 "./videos/{download_video_title}/info.txt"
-                            with open("./videos/" + download_video_title
-                                      + "/" + "info.txt", "a", encoding="UTF-8") as f_a:
-                                f_a.write(str(download_photo_id) + "\n" +
-                                          str(download_video_title) + "\n" +
-                                          str(download_video_duration) + "\n" +
-                                          str(download_video_play_cnt) + "\n" +
-                                          str(download_video_comment_cnt) + "\n" +
-                                          str(download_video_like_cnt) + "\n" +
-                                          str(download_video_share_cnt) + "\n" +
-                                          str(download_video_resolution) + "\n" +
-                                          str(int(time.mktime(
-                                              time.strptime(download_video_send_time, "%Y/%m/%d %H:%M:%S")))) + "\n" +
-                                          str(download_user_name) + "\n" +
-                                          str(download_head_url) + "\n" +
-                                          str(download_video_url) + "\n" +
-                                          str(download_cover_url) + "\n" +
-                                          str(cls.did))
-                            Common.logger().info("==========视频信息已保存至info.txt==========")
-
-                            # 添加视频 ID 到 list,用于统计当次下载总数
-                            cls.download_video_list.append(download_photo_id)
-
-                            # 上传视频
-                            Common.logger().info("开始上传视频:{}".format(download_video_title))
-                            Publish.upload_and_publish(env, "play")
-
-                            # 保存视频 ID 到云文档:https://w42nne6hzg.feishu.cn/sheets/shtcnp4SaJt37q6OOOrYzPMjQkg?sheet=3b207c
-                            Common.logger().info("保存视频ID至云文档:{}", download_video_title)
-                            # 视频ID工作表,插入首行
-                            Feishu.insert_columns("3b207c", "ROWS", 1, 2)
-                            # 视频ID工作表,首行写入数据
-                            upload_time = int(time.time())
-                            values = [[str(time.strftime("%Y/%m/%d %H:%M:%S", time.localtime(upload_time))),
-                                       "推荐榜",
-                                       str(download_photo_id),
-                                       str(download_video_title),
-                                       str(download_video_play_cnt),
-                                       str(download_video_comment_cnt),
-                                       str(download_video_like_cnt),
-                                       str(download_video_share_cnt),
-                                       str(download_video_duration),
-                                       str(download_video_resolution),
-                                       str(download_video_send_time),
-                                       str(download_user_name),
-                                       str(download_user_id),
-                                       str(download_head_url),
-                                       str(download_cover_url),
-                                       str(download_video_url)]]
-                            time.sleep(1)
-                            Feishu.update_values("3b207c", "A2:Q2", values)
-
-                            # 从云文档删除该视频信息:https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=Zt2PGQ
-                            Common.logger().info("从云文档删除该视频信息:{}", download_video_title)
-                            # 删除行或列,可选 ROWS、COLUMNS
-                            time.sleep(1)
-                            Feishu.dimension_range("Zt2PGQ", "ROWS", i + 1, i + 1)
-                        else:
-                            # 从云文档删除该视频信息:https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=Zt2PGQ
-                            Common.logger().info("该视频不满足下载规则,删除在云文档中的信息:{}", download_video_title)
-                            # 删除行或列,可选 ROWS、COLUMNS
-                            Feishu.dimension_range("Zt2PGQ", "ROWS", i + 1, i + 1)
-                    except Exception as e:
-                        Common.logger().error("视频 info 异常,删除该视频信息", e)
-                        # 删除行或列,可选 ROWS、COLUMNS
-                        Feishu.dimension_range("Zt2PGQ", "ROWS", i + 1, i + 1)
                 cls.download_publish("prod")
-
         except Exception as e:
             Common.logger().error(e)
 

+ 1 - 1
main/run_recommend.py

@@ -30,7 +30,7 @@ def kuaishou_prod_job():
             # 抓取符合规则的视频,写入 kuaishou_feeds.txt
             KuaiShou.get_feeds()
             # 下载视频,并上传
-            KuaiShou.download_publish("prod")
+            KuaiShou.run_download_publish()
             # 随机睡眠1-3s
             time.sleep(random.randint(1, 3))