Browse Source

update download exception

wangkun 3 years ago
parent
commit
ee1ac23a3f
3 changed files with 359 additions and 350 deletions
  1. 77 74
      main/download_play.py
  2. 124 121
      main/download_sendtime.py
  3. 158 155
      main/download_up.py

+ 77 - 74
main/download_play.py

@@ -43,83 +43,86 @@ class DownloadPlay:
         测试环境:env == dev
         正式环境:env == prod
         """
-        if len(Feishu.get_values_batch("SdCHOM")) == 1:
-            pass
-        else:
-            for i in range(len(Feishu.get_values_batch("SdCHOM"))):
-                time.sleep(1)
-                try:
-                    download_video_id = Feishu.get_values_batch("SdCHOM")[i+1][1]
-                    download_video_play_cnt = Feishu.get_values_batch("SdCHOM")[i+1][2]
-                    download_video_title = Feishu.get_values_batch("SdCHOM")[i+1][3]
-                    download_video_duration = Feishu.get_values_batch("SdCHOM")[i+1][4]
-                    download_video_comment_cnt = Feishu.get_values_batch("SdCHOM")[i+1][5]
-                    download_video_like_cnt = Feishu.get_values_batch("SdCHOM")[i+1][6]
-                    download_video_share_cnt = Feishu.get_values_batch("SdCHOM")[i+1][7]
-                    download_video_resolution = Feishu.get_values_batch("SdCHOM")[i+1][8]
-                    download_video_width = download_video_resolution.split("*")[0]
-                    download_video_height = download_video_resolution.split("*")[-1]
-                    download_video_send_time = Feishu.get_values_batch("SdCHOM")[i+1][9]
-                    download_user_name = Feishu.get_values_batch("SdCHOM")[i+1][10]
-                    download_head_url = Feishu.get_values_batch("SdCHOM")[i+1][11]
-                    download_cover_url = Feishu.get_values_batch("SdCHOM")[i+1][12]
-                    download_video_url = Feishu.get_values_batch("SdCHOM")[i+1][13]
-                    download_video_session = Feishu.get_values_batch("SdCHOM")[i+1][14]
-
-                    if cls.play_rule(download_video_width, download_video_height,
-                                     download_video_duration, download_video_play_cnt) is True:
-                        Common.logger().info("开始下载视频:{}", download_video_title)
-
-                        # 下载封面
-                        Common.download_method(text="cover", d_name=download_video_title, d_url=download_cover_url)
-                        # 下载视频
-                        Common.download_method(text="video", d_name=download_video_title, d_url=download_video_url)
-                        # 保存视频信息至 "./videos/{download_video_title}/info.txt"
-                        with open(r"./videos/" + download_video_title + r"/info.txt", "a", encoding="utf8") as f_a:
-                            f_a.write(str(download_video_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(download_video_send_time) + "\n" +
-                                      str(download_user_name) + "\n" +
-                                      str(download_head_url) + "\n" +
-                                      str(download_video_url) + "\n" +
-                                      str(download_cover_url) + "\n" +
-                                      str(download_video_session))
-
-                        # 上传视频
-                        Common.logger().info("开始上传视频:{}", download_video_title)
-                        Publish.upload_and_publish(env, "play")
-
-                        # 保存视频 ID 到云文档:https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=20ce0c
-                        Common.logger().info("保存视频ID至云文档:{}", download_video_title)
-                        # 看一看+ ,视频ID工作表,插入首行
-                        Feishu.insert_columns("20ce0c")
-                        # 看一看+ ,视频ID工作表,首行写入数据
-                        Feishu.update_values("20ce0c", download_video_id, "", "", "",
-                                             "", "", "", "", "", "", "", "", "", "", "")
-
-                        # 从云文档删除该视频信息: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:
-                        # 从云文档删除该视频信息:https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=SdCHOM
-                        Common.logger().info("该视频不满足下载规则,删除在云文档中的信息:{}", download_video_title)
+        try:
+            if len(Feishu.get_values_batch("SdCHOM")) == 1:
+                pass
+            else:
+                for i in range(len(Feishu.get_values_batch("SdCHOM"))):
+                    time.sleep(1)
+                    try:
+                        download_video_id = Feishu.get_values_batch("SdCHOM")[i+1][1]
+                        download_video_play_cnt = Feishu.get_values_batch("SdCHOM")[i+1][2]
+                        download_video_title = Feishu.get_values_batch("SdCHOM")[i+1][3]
+                        download_video_duration = Feishu.get_values_batch("SdCHOM")[i+1][4]
+                        download_video_comment_cnt = Feishu.get_values_batch("SdCHOM")[i+1][5]
+                        download_video_like_cnt = Feishu.get_values_batch("SdCHOM")[i+1][6]
+                        download_video_share_cnt = Feishu.get_values_batch("SdCHOM")[i+1][7]
+                        download_video_resolution = Feishu.get_values_batch("SdCHOM")[i+1][8]
+                        download_video_width = download_video_resolution.split("*")[0]
+                        download_video_height = download_video_resolution.split("*")[-1]
+                        download_video_send_time = Feishu.get_values_batch("SdCHOM")[i+1][9]
+                        download_user_name = Feishu.get_values_batch("SdCHOM")[i+1][10]
+                        download_head_url = Feishu.get_values_batch("SdCHOM")[i+1][11]
+                        download_cover_url = Feishu.get_values_batch("SdCHOM")[i+1][12]
+                        download_video_url = Feishu.get_values_batch("SdCHOM")[i+1][13]
+                        download_video_session = Feishu.get_values_batch("SdCHOM")[i+1][14]
+
+                        if cls.play_rule(download_video_width, download_video_height,
+                                         download_video_duration, download_video_play_cnt) is True:
+                            Common.logger().info("开始下载视频:{}", download_video_title)
+
+                            # 下载封面
+                            Common.download_method(text="cover", d_name=download_video_title, d_url=download_cover_url)
+                            # 下载视频
+                            Common.download_method(text="video", d_name=download_video_title, d_url=download_video_url)
+                            # 保存视频信息至 "./videos/{download_video_title}/info.txt"
+                            with open(r"./videos/" + download_video_title + r"/info.txt", "a", encoding="utf8") as f_a:
+                                f_a.write(str(download_video_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(download_video_send_time) + "\n" +
+                                          str(download_user_name) + "\n" +
+                                          str(download_head_url) + "\n" +
+                                          str(download_video_url) + "\n" +
+                                          str(download_cover_url) + "\n" +
+                                          str(download_video_session))
+
+                            # 上传视频
+                            Common.logger().info("开始上传视频:{}", download_video_title)
+                            Publish.upload_and_publish(env, "play")
+
+                            # 保存视频 ID 到云文档:https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=20ce0c
+                            Common.logger().info("保存视频ID至云文档:{}", download_video_title)
+                            # 看一看+ ,视频ID工作表,插入首行
+                            Feishu.insert_columns("20ce0c")
+                            # 看一看+ ,视频ID工作表,首行写入数据
+                            Feishu.update_values("20ce0c", download_video_id, "", "", "",
+                                                 "", "", "", "", "", "", "", "", "", "", "")
+
+                            # 从云文档删除该视频信息: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:
+                            # 从云文档删除该视频信息: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)
+
+                    except Exception as e:
+                        Common.logger().error("视频 info 异常,删除该视频信息", e)
                         # 删除行或列,可选 ROWS、COLUMNS
                         Feishu.dimension_range("SdCHOM", "ROWS", i + 2, i + 2)
 
-                except Exception as e:
-                    Common.logger().error("视频 info 异常,删除该视频信息", e)
-                    # 删除行或列,可选 ROWS、COLUMNS
-                    Feishu.dimension_range("SdCHOM", "ROWS", i + 2, i + 2)
-
-            cls.download_play_video("prod")
+                cls.download_play_video("prod")
+        except Exception as e:
+            Common.logger().error(e)
 
 
 if __name__ == "__main__":

+ 124 - 121
main/download_sendtime.py

@@ -51,139 +51,142 @@ class DownloadSendtime:
         :param env: 测试环境:dev;正式环境:prod
         :return: 下载并上传视频
         """
-        if len(Feishu.get_values_batch("SdCHOM")) == 1:
-            pass
-        else:
-            for i in range(len(Feishu.get_values_batch("SdCHOM"))):
-                time.sleep(1)
-                try:
-                    sendtime_session = Common.get_session()
-                    Common.logger().info("获取视频info时,session:{}", sendtime_session)
-                    download_video_id = Feishu.get_values_batch("SdCHOM")[i+1][1]
-                    download_video_title = Feishu.get_values_batch("SdCHOM")[i+1][3]
-                    url = "https://search.weixin.qq.com/cgi-bin/recwxa/recwxagetonevideoinfo?"
-                    param = {
-                        "session": sendtime_session,
-                        "vid": download_video_id,
-                        "wxaVersion": "3.9.2",
-                        "channelid": "208201",
-                        "scene": "32",
-                        "subscene": "1089",
-                        "model": "iPhone 11<iPhone12,1>14.7.1",
-                        "clientVersion": "8.0.18",
-                        "sharesearchid": "447665862521758270",
-                        "sharesource": "-1"
-                    }
-                    urllib3.disable_warnings()
-                    r = requests.get(url=url, params=param, proxies=proxies, verify=False)
-                    response = json.loads(r.content.decode("utf8"))
-                    if "data" not in response:
-                        Common.logger().error("获取视频info时错误,删除该视频:{}", download_video_title)
-                        # 删除行或列,可选 ROWS、COLUMNS
-                        Feishu.dimension_range("SdCHOM", "ROWS", i + 2, i + 2)
-                    else:
-                        data = response["data"]
-                        v_duration = data["duration"]
-                        v_play_cnt_sendtime = data["played_cnt"]
-                        v_comment_cnt = data["comment_cnt"]
-                        v_liked_cnt = data["liked_cnt"]
-                        v_shared_cnt = data["shared_cnt"]
-                        v_width = data["width"]
-                        v_height = data["height"]
-                        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_cover = data["user_info"]["headimg_url"]
-                        v_video_cover = data["cover_url"]
-                        if "items" not in data["play_info"]:
-                            if len(data["play_info"]) > 2:
-                                download_url_up = data["play_info"][2]["play_url"]
-                            else:
-                                download_url_up = data["play_info"][0]["play_url"]
+        try:
+            if len(Feishu.get_values_batch("SdCHOM")) == 1:
+                pass
+            else:
+                for i in range(len(Feishu.get_values_batch("SdCHOM"))):
+                    time.sleep(1)
+                    try:
+                        sendtime_session = Common.get_session()
+                        Common.logger().info("获取视频info时,session:{}", sendtime_session)
+                        download_video_id = Feishu.get_values_batch("SdCHOM")[i+1][1]
+                        download_video_title = Feishu.get_values_batch("SdCHOM")[i+1][3]
+                        url = "https://search.weixin.qq.com/cgi-bin/recwxa/recwxagetonevideoinfo?"
+                        param = {
+                            "session": sendtime_session,
+                            "vid": download_video_id,
+                            "wxaVersion": "3.9.2",
+                            "channelid": "208201",
+                            "scene": "32",
+                            "subscene": "1089",
+                            "model": "iPhone 11<iPhone12,1>14.7.1",
+                            "clientVersion": "8.0.18",
+                            "sharesearchid": "447665862521758270",
+                            "sharesource": "-1"
+                        }
+                        urllib3.disable_warnings()
+                        r = requests.get(url=url, params=param, proxies=proxies, verify=False)
+                        response = json.loads(r.content.decode("utf8"))
+                        if "data" not in response:
+                            Common.logger().error("获取视频info时错误,删除该视频:{}", download_video_title)
+                            # 删除行或列,可选 ROWS、COLUMNS
+                            Feishu.dimension_range("SdCHOM", "ROWS", i + 2, i + 2)
                         else:
-                            if len(data["play_info"]["items"]) > 2:
-                                download_url_up = data["play_info"]["items"][2]["play_url"]
+                            data = response["data"]
+                            v_duration = data["duration"]
+                            v_play_cnt_sendtime = data["played_cnt"]
+                            v_comment_cnt = data["comment_cnt"]
+                            v_liked_cnt = data["liked_cnt"]
+                            v_shared_cnt = data["shared_cnt"]
+                            v_width = data["width"]
+                            v_height = data["height"]
+                            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_cover = data["user_info"]["headimg_url"]
+                            v_video_cover = data["cover_url"]
+                            if "items" not in data["play_info"]:
+                                if len(data["play_info"]) > 2:
+                                    download_url_up = data["play_info"][2]["play_url"]
+                                else:
+                                    download_url_up = data["play_info"][0]["play_url"]
                             else:
-                                download_url_up = data["play_info"]["items"][0]["play_url"]
-
-                        # 判断基本规则
-                        if cls.send_time_rule(v_width, v_height, v_duration, v_play_cnt_sendtime) is True \
-                                and download_video_id != "" and download_video_title != "" and v_duration != "" \
-                                and v_play_cnt_sendtime != "" 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 != "":
-                            # 满足下载条件:当前时间 - 发布时间 <= 3天,播放量大于1万
-                            if int(time.time()) - int(v_send_date) <= 604800:
-                                if int(v_play_cnt_sendtime) >= 10000:
-                                    Common.logger().info("该视频:{} ,在7天内的播放量{}>=10000",
-                                                         download_video_title, v_play_cnt_sendtime)
-
-                                    # 下载封面
-                                    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_sendtime) + "\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(sendtime_session))
-
-                                    # 上传该视频
-                                    Common.logger().info("开始上传视频:{}", download_video_title)
-                                    Publish.upload_and_publish(env, "send_time")
-
-                                    # 保存视频 ID 到云文档:
-                                    # https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=20ce0c
-                                    Common.logger().info("保存视频ID至云文档:{}", download_video_title)
-                                    # 看一看+ ,视频ID工作表,插入首行
-                                    Feishu.insert_columns("20ce0c")
-                                    # 看一看+ ,视频ID工作表,首行写入数据
-                                    Feishu.update_values("20ce0c", download_video_id, "", "", "",
-                                                         "", "", "", "", "", "", "", "", "", "", "")
-
-                                    # 从云文档删除该视频信息: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)
-
+                                if len(data["play_info"]["items"]) > 2:
+                                    download_url_up = data["play_info"]["items"][2]["play_url"]
+                                else:
+                                    download_url_up = data["play_info"]["items"][0]["play_url"]
+
+                            # 判断基本规则
+                            if cls.send_time_rule(v_width, v_height, v_duration, v_play_cnt_sendtime) is True \
+                                    and download_video_id != "" and download_video_title != "" and v_duration != "" \
+                                    and v_play_cnt_sendtime != "" 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 != "":
+                                # 满足下载条件:当前时间 - 发布时间 <= 3天,播放量大于1万
+                                if int(time.time()) - int(v_send_date) <= 604800:
+                                    if int(v_play_cnt_sendtime) >= 10000:
+                                        Common.logger().info("该视频:{} ,在7天内的播放量{}>=10000",
+                                                             download_video_title, v_play_cnt_sendtime)
+
+                                        # 下载封面
+                                        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_sendtime) + "\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(sendtime_session))
+
+                                        # 上传该视频
+                                        Common.logger().info("开始上传视频:{}", download_video_title)
+                                        Publish.upload_and_publish(env, "send_time")
+
+                                        # 保存视频 ID 到云文档:
+                                        # https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=20ce0c
+                                        Common.logger().info("保存视频ID至云文档:{}", download_video_title)
+                                        # 看一看+ ,视频ID工作表,插入首行
+                                        Feishu.insert_columns("20ce0c")
+                                        # 看一看+ ,视频ID工作表,首行写入数据
+                                        Feishu.update_values("20ce0c", download_video_id, "", "", "",
+                                                             "", "", "", "", "", "", "", "", "", "", "")
+
+                                        # 从云文档删除该视频信息: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:
+                                        # 从云文档删除该视频信息:https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=SdCHOM
+                                        Common.logger().info("该视频7天播放量:{}<10000 ;不满足下载规则:{}",
+                                                             int(v_play_cnt_sendtime), download_video_title)
+                                        # 删除行或列,可选 ROWS、COLUMNS
+                                        Feishu.dimension_range("SdCHOM", "ROWS", i + 2, i + 2)
                                 else:
                                     # 从云文档删除该视频信息:https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=SdCHOM
-                                    Common.logger().info("该视频7天播放量:{}<10000 ;不满足下载规则:{}",
-                                                         int(v_play_cnt_sendtime), download_video_title)
+                                    Common.logger().info("视频发布时间大于7天:{}天;标题:{}",
+                                                         int((int(time.time()) - int(v_send_date)) / 86400),
+                                                         download_video_title)
                                     # 删除行或列,可选 ROWS、COLUMNS
                                     Feishu.dimension_range("SdCHOM", "ROWS", i + 2, i + 2)
                             else:
                                 # 从云文档删除该视频信息:https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=SdCHOM
-                                Common.logger().info("视频发布时间大于7天:{}天;标题:{}",
-                                                     int((int(time.time()) - int(v_send_date)) / 86400),
-                                                     download_video_title)
+                                Common.logger().info("不满足下载规则:{}", download_video_title)
                                 # 删除行或列,可选 ROWS、COLUMNS
                                 Feishu.dimension_range("SdCHOM", "ROWS", i + 2, i + 2)
-                        else:
-                            # 从云文档删除该视频信息: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)
 
-                except Exception as e:
-                    Common.logger().error("获取视频info异常:{},删除该视频", e)
-                    # 删除行或列,可选 ROWS、COLUMNS
-                    Feishu.dimension_range("SdCHOM", "ROWS", i + 2, i + 2)
+                    except Exception as e:
+                        Common.logger().error("获取视频info异常:{},删除该视频", e)
+                        # 删除行或列,可选 ROWS、COLUMNS
+                        Feishu.dimension_range("SdCHOM", "ROWS", i + 2, i + 2)
 
-            cls.download_sendtime_video("prod")
+                cls.download_sendtime_video("prod")
+        except Exception as e:
+            Common.logger().error(e)
 
 
 if __name__ == "__main__":

+ 158 - 155
main/download_up.py

@@ -56,169 +56,172 @@ class DownloadUp:
         4.上传完成:
             1 删除该视频在 https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=SdCHOM 中的信息
         """
-        if len(Feishu.get_values_batch("SdCHOM")) == 1:
-            pass
-        else:
-            for i in range(len(Feishu.get_values_batch("SdCHOM"))):
-                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]
-
-                    url = "https://search.weixin.qq.com/cgi-bin/recwxa/recwxagetonevideoinfo?"
-                    param = {
-                        "session": video_info_session,
-                        "vid": download_video_id,
-                        "wxaVersion": "3.9.2",
-                        "channelid": "208201",
-                        "scene": "32",
-                        "subscene": "1089",
-                        "model": "iPhone 11<iPhone12,1>14.7.1",
-                        "clientVersion": "8.0.18",
-                        "sharesearchid": "447665862521758270",
-                        "sharesource": "-1"
-                    }
-                    urllib3.disable_warnings()
-                    r = requests.get(url=url, params=param, proxies=proxies, verify=False)
-                    response = json.loads(r.content.decode("utf8"))
-                    if "data" not in response:
-                        Common.logger().error("获取视频info时错误,删除该视频:{}", download_video_title)
-                        # 删除行或列,可选 ROWS、COLUMNS
-                        Feishu.dimension_range("SdCHOM", "ROWS", i + 2, i + 2)
-                    else:
-                        data = response["data"]
-                        v_duration = data["duration"]
-                        v_play_cnt_up = data["played_cnt"]
-                        v_comment_cnt = data["comment_cnt"]
-                        v_liked_cnt = data["liked_cnt"]
-                        v_shared_cnt = data["shared_cnt"]
-                        v_width = data["width"]
-                        v_height = data["height"]
-                        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_cover = data["user_info"]["headimg_url"]
-                        v_video_cover = data["cover_url"]
-                        if "items" not in data["play_info"]:
-                            if len(data["play_info"]) > 2:
-                                download_url_up = data["play_info"][2]["play_url"]
-                            else:
-                                download_url_up = data["play_info"][0]["play_url"]
+        try:
+            if len(Feishu.get_values_batch("SdCHOM")) == 1:
+                pass
+            else:
+                for i in range(len(Feishu.get_values_batch("SdCHOM"))):
+                    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]
+
+                        url = "https://search.weixin.qq.com/cgi-bin/recwxa/recwxagetonevideoinfo?"
+                        param = {
+                            "session": video_info_session,
+                            "vid": download_video_id,
+                            "wxaVersion": "3.9.2",
+                            "channelid": "208201",
+                            "scene": "32",
+                            "subscene": "1089",
+                            "model": "iPhone 11<iPhone12,1>14.7.1",
+                            "clientVersion": "8.0.18",
+                            "sharesearchid": "447665862521758270",
+                            "sharesource": "-1"
+                        }
+                        urllib3.disable_warnings()
+                        r = requests.get(url=url, params=param, proxies=proxies, verify=False)
+                        response = json.loads(r.content.decode("utf8"))
+                        if "data" not in response:
+                            Common.logger().error("获取视频info时错误,删除该视频:{}", download_video_title)
+                            # 删除行或列,可选 ROWS、COLUMNS
+                            Feishu.dimension_range("SdCHOM", "ROWS", i + 2, i + 2)
                         else:
-                            if len(data["play_info"]["items"]) > 2:
-                                download_url_up = data["play_info"]["items"][2]["play_url"]
+                            data = response["data"]
+                            v_duration = data["duration"]
+                            v_play_cnt_up = data["played_cnt"]
+                            v_comment_cnt = data["comment_cnt"]
+                            v_liked_cnt = data["liked_cnt"]
+                            v_shared_cnt = data["shared_cnt"]
+                            v_width = data["width"]
+                            v_height = data["height"]
+                            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_cover = data["user_info"]["headimg_url"]
+                            v_video_cover = data["cover_url"]
+                            if "items" not in data["play_info"]:
+                                if len(data["play_info"]) > 2:
+                                    download_url_up = data["play_info"][2]["play_url"]
+                                else:
+                                    download_url_up = data["play_info"][0]["play_url"]
                             else:
-                                download_url_up = data["play_info"]["items"][0]["play_url"]
-    
-                        # 判断基本规则
-                        if 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("开始上传视频:{}", 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工作表,首行写入数据
-                                    Feishu.update_values("20ce0c", download_video_id, "", "", "",
-                                                         "", "", "", "", "", "", "", "", "", "", "")
-
-                                    # 从云文档删除该视频信息: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)
+                                if len(data["play_info"]["items"]) > 2:
+                                    download_url_up = data["play_info"]["items"][2]["play_url"]
                                 else:
-                                    # 删除之前保存的该视频信息,并把现在的信息保存进去
-                                    Common.logger().info("该视频1小时内的播放量:{}<1000;更新该视频信息:{}",
-                                                         int(v_play_cnt_up) - int(download_video_play_cnt),
+                                    download_url_up = data["play_info"]["items"][0]["play_url"]
+
+                            # 判断基本规则
+                            if 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("开始上传视频:{}", 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工作表,首行写入数据
+                                        Feishu.update_values("20ce0c", download_video_id, "", "", "",
+                                                             "", "", "", "", "", "", "", "", "", "", "")
+
+                                        # 从云文档删除该视频信息: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)
-                                    # 从云文档删除该视频信息: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)
+                            else:
+                                Common.logger().info("不满足下载规则:{}", 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)
-                        else:
-                            Common.logger().info("不满足下载规则:{}", 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)
-                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)
+                    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)
+        except Exception as e:
+            Common.logger().error(e)
 
 
 if __name__ == "__main__":