liqian 2 роки тому
батько
коміт
9548100f12
1 змінених файлів з 152 додано та 128 видалено
  1. 152 128
      utils.py

+ 152 - 128
utils.py

@@ -170,48 +170,56 @@ def filter_video_status(video_ids):
     :param video_ids: 视频id列表 type-list
     :return: filtered_videos
     """
-    mysql_helper = MysqlHelper(mysql_info=config_.FILTER_MYSQL_INFO)
-    video_status_sql = "SELECT t1.id AS 'video_id', " \
-                       "t1.transcode_status AS 'transcoding_status', " \
-                       "t2.audit_status AS 'audit_status', " \
-                       "t2.video_status AS 'open_status', " \
-                       "t2.recommend_status AS 'applet_rec_status', " \
-                       "t2.app_recommend_status AS 'app_rec_status', " \
-                       "t3.charge AS 'payment_status', " \
-                       "case when t4.max_validate_count is null then 0 else t4.max_validate_count end AS 'encryption_status' " \
-                       "FROM longvideo.wx_video t1 " \
-                       "LEFT JOIN longvideo.wx_video_status t2 ON t1.id= t2.video_id " \
-                       "LEFT JOIN longvideo.wx_video_detail t3 ON t1.id= t3.video_id " \
-                       "LEFT JOIN longvideo.wx_video_pwd t4 ON t1.id= t4.video_id"
-    if len(video_ids) == 1:
-        sql = "SELECT video_id " \
-              "FROM ({}) " \
-              "WHERE audit_status = 5 " \
-              "AND applet_rec_status IN (1, -6) " \
-              "AND open_status = 1 " \
-              "AND payment_status = 0 " \
-              "AND encryption_status != 5 " \
-              "AND transcoding_status = 3 " \
-              "AND video_id IN ({});".format(video_status_sql, video_ids[0])
-        data = mysql_helper.get_data(sql=sql)
-
-    else:
-        data = []
-        for i in range(len(video_ids) // 2000 + 1):
-            sql = "SELECT video_id " \
-                  "FROM ({}) " \
-                  "WHERE audit_status = 5 " \
-                  "AND applet_rec_status IN (1, -6) " \
-                  "AND open_status = 1 " \
-                  "AND payment_status = 0 " \
-                  "AND encryption_status != 5 " \
-                  "AND transcoding_status = 3 " \
-                  "AND video_id IN {};".format(video_status_sql, tuple(video_ids[i*2000:(i+1)*2000]))
-            select_res = mysql_helper.get_data(sql=sql)
-            if select_res is not None:
-                data += select_res
-    filtered_videos = [int(temp[0]) for temp in data]
-    return filtered_videos
+    i = 0
+    while i < 3:
+        try:
+            mysql_helper = MysqlHelper(mysql_info=config_.FILTER_MYSQL_INFO)
+            video_status_sql = "SELECT t1.id AS 'video_id', " \
+                               "t1.transcode_status AS 'transcoding_status', " \
+                               "t2.audit_status AS 'audit_status', " \
+                               "t2.video_status AS 'open_status', " \
+                               "t2.recommend_status AS 'applet_rec_status', " \
+                               "t2.app_recommend_status AS 'app_rec_status', " \
+                               "t3.charge AS 'payment_status', " \
+                               "case when t4.max_validate_count is null then 0 else t4.max_validate_count end AS 'encryption_status' " \
+                               "FROM longvideo.wx_video t1 " \
+                               "LEFT JOIN longvideo.wx_video_status t2 ON t1.id= t2.video_id " \
+                               "LEFT JOIN longvideo.wx_video_detail t3 ON t1.id= t3.video_id " \
+                               "LEFT JOIN longvideo.wx_video_pwd t4 ON t1.id= t4.video_id"
+            if len(video_ids) == 1:
+                sql = "SELECT video_id " \
+                      "FROM ({}) " \
+                      "WHERE audit_status = 5 " \
+                      "AND applet_rec_status IN (1, -6) " \
+                      "AND open_status = 1 " \
+                      "AND payment_status = 0 " \
+                      "AND encryption_status != 5 " \
+                      "AND transcoding_status = 3 " \
+                      "AND video_id IN ({});".format(video_status_sql, video_ids[0])
+                data = mysql_helper.get_data(sql=sql)
+
+            else:
+                data = []
+                for i in range(len(video_ids) // 2000 + 1):
+                    sql = "SELECT video_id " \
+                          "FROM ({}) " \
+                          "WHERE audit_status = 5 " \
+                          "AND applet_rec_status IN (1, -6) " \
+                          "AND open_status = 1 " \
+                          "AND payment_status = 0 " \
+                          "AND encryption_status != 5 " \
+                          "AND transcoding_status = 3 " \
+                          "AND video_id IN {};".format(video_status_sql, tuple(video_ids[i*2000:(i+1)*2000]))
+                    select_res = mysql_helper.get_data(sql=sql)
+                    if select_res is not None:
+                        data += select_res
+            filtered_videos = [int(temp[0]) for temp in data]
+            return filtered_videos
+
+        except Exception as e:
+            i += 1
+            if i == 3:
+                return video_ids
 
 
 def filter_video_status_with_applet_rec(video_ids, applet_rec_status):
@@ -221,48 +229,56 @@ def filter_video_status_with_applet_rec(video_ids, applet_rec_status):
     :param applet_rec_status: 小程序推荐状态 -6:待推荐 1:普通推荐
     :return: filtered_videos
     """
-    mysql_helper = MysqlHelper(mysql_info=config_.FILTER_MYSQL_INFO)
-    video_status_sql = "SELECT t1.id AS 'video_id', " \
-                       "t1.transcode_status AS 'transcoding_status', " \
-                       "t2.audit_status AS 'audit_status', " \
-                       "t2.video_status AS 'open_status', " \
-                       "t2.recommend_status AS 'applet_rec_status', " \
-                       "t2.app_recommend_status AS 'app_rec_status', " \
-                       "t3.charge AS 'payment_status', " \
-                       "case when t4.max_validate_count is null then 0 else t4.max_validate_count end AS 'encryption_status' " \
-                       "FROM longvideo.wx_video t1 " \
-                       "LEFT JOIN longvideo.wx_video_status t2 ON t1.id= t2.video_id " \
-                       "LEFT JOIN longvideo.wx_video_detail t3 ON t1.id= t3.video_id " \
-                       "LEFT JOIN longvideo.wx_video_pwd t4 ON t1.id= t4.video_id"
-    if len(video_ids) == 1:
-        sql = "SELECT video_id " \
-              "FROM ({}) " \
-              "WHERE audit_status = 5 " \
-              "AND applet_rec_status = {} " \
-              "AND open_status = 1 " \
-              "AND payment_status = 0 " \
-              "AND encryption_status != 5 " \
-              "AND transcoding_status = 3 " \
-              "AND video_id IN ({});".format(video_status_sql, applet_rec_status, video_ids[0])
-        data = mysql_helper.get_data(sql=sql)
-
-    else:
-        data = []
-        for i in range(len(video_ids) // 2000 + 1):
-            sql = "SELECT video_id " \
-                  "FROM ({}) " \
-                  "WHERE audit_status = 5 " \
-                  "AND applet_rec_status = {} " \
-                  "AND open_status = 1 " \
-                  "AND payment_status = 0 " \
-                  "AND encryption_status != 5 " \
-                  "AND transcoding_status = 3 " \
-                  "AND video_id IN {};".format(video_status_sql, applet_rec_status, tuple(video_ids[i*2000:(i+1)*2000]))
-            select_res = mysql_helper.get_data(sql=sql)
-            if select_res is not None:
-                data += select_res
-    filtered_videos = [int(temp[0]) for temp in data]
-    return filtered_videos
+    i = 0
+    while i < 3:
+        try:
+            mysql_helper = MysqlHelper(mysql_info=config_.FILTER_MYSQL_INFO)
+            video_status_sql = "SELECT t1.id AS 'video_id', " \
+                               "t1.transcode_status AS 'transcoding_status', " \
+                               "t2.audit_status AS 'audit_status', " \
+                               "t2.video_status AS 'open_status', " \
+                               "t2.recommend_status AS 'applet_rec_status', " \
+                               "t2.app_recommend_status AS 'app_rec_status', " \
+                               "t3.charge AS 'payment_status', " \
+                               "case when t4.max_validate_count is null then 0 else t4.max_validate_count end AS 'encryption_status' " \
+                               "FROM longvideo.wx_video t1 " \
+                               "LEFT JOIN longvideo.wx_video_status t2 ON t1.id= t2.video_id " \
+                               "LEFT JOIN longvideo.wx_video_detail t3 ON t1.id= t3.video_id " \
+                               "LEFT JOIN longvideo.wx_video_pwd t4 ON t1.id= t4.video_id"
+            if len(video_ids) == 1:
+                sql = "SELECT video_id " \
+                      "FROM ({}) " \
+                      "WHERE audit_status = 5 " \
+                      "AND applet_rec_status = {} " \
+                      "AND open_status = 1 " \
+                      "AND payment_status = 0 " \
+                      "AND encryption_status != 5 " \
+                      "AND transcoding_status = 3 " \
+                      "AND video_id IN ({});".format(video_status_sql, applet_rec_status, video_ids[0])
+                data = mysql_helper.get_data(sql=sql)
+
+            else:
+                data = []
+                for i in range(len(video_ids) // 2000 + 1):
+                    sql = "SELECT video_id " \
+                          "FROM ({}) " \
+                          "WHERE audit_status = 5 " \
+                          "AND applet_rec_status = {} " \
+                          "AND open_status = 1 " \
+                          "AND payment_status = 0 " \
+                          "AND encryption_status != 5 " \
+                          "AND transcoding_status = 3 " \
+                          "AND video_id IN {};".format(video_status_sql, applet_rec_status, tuple(video_ids[i*2000:(i+1)*2000]))
+                    select_res = mysql_helper.get_data(sql=sql)
+                    if select_res is not None:
+                        data += select_res
+            filtered_videos = [int(temp[0]) for temp in data]
+            return filtered_videos
+
+        except Exception as e:
+            i += 1
+            if i == 3:
+                return video_ids
 
 
 def filter_video_status_app(video_ids):
@@ -271,50 +287,58 @@ def filter_video_status_app(video_ids):
     :param video_ids: 视频id列表 type-list
     :return: filtered_videos
     """
-    mysql_helper = MysqlHelper(mysql_info=config_.FILTER_MYSQL_INFO)
-    video_status_sql = "SELECT t1.id AS 'video_id', " \
-                       "t1.transcode_status AS 'transcoding_status', " \
-                       "t2.app_audit_status AS 'app_audit_status', " \
-                       "t2.original_status AS 'open_status', " \
-                       "t2.recommend_status AS 'applet_rec_status', " \
-                       "t2.app_recommend_status AS 'app_rec_status', " \
-                       "t3.charge AS 'payment_status', " \
-                       "case when t4.max_validate_count is null then 0 else t4.max_validate_count end AS 'encryption_status' " \
-                       "FROM longvideo.wx_video t1 " \
-                       "LEFT JOIN longvideo.wx_video_status t2 ON t1.id= t2.video_id " \
-                       "LEFT JOIN longvideo.wx_video_detail t3 ON t1.id= t3.video_id " \
-                       "LEFT JOIN longvideo.wx_video_pwd t4 ON t1.id= t4.video_id"
-
-    if len(video_ids) == 1:
-        sql = "SELECT video_id " \
-              "FROM ({}) " \
-              "WHERE app_audit_status = 5 " \
-              "AND app_rec_status IN (1, -6, 10) " \
-              "AND open_status = 1 " \
-              "AND payment_status = 0 " \
-              "AND encryption_status != 5 " \
-              "AND transcoding_status = 3 " \
-              "AND video_id IN ({});".format(video_status_sql, video_ids[0])
-        data = mysql_helper.get_data(sql=sql)
-
-    else:
-        data = []
-        for i in range(len(video_ids) // 2000 + 1):
-            sql = "SELECT video_id " \
-                  "FROM ({}) " \
-                  "WHERE app_audit_status = 5 " \
-                  "AND app_rec_status IN (1, -6, 10) " \
-                  "AND open_status = 1 " \
-                  "AND payment_status = 0 " \
-                  "AND encryption_status != 5 " \
-                  "AND transcoding_status = 3 " \
-                  "AND video_id IN {};".format(video_status_sql, tuple(video_ids[i*2000:(i+1)*2000]))
-            select_res = mysql_helper.get_data(sql=sql)
-            if select_res is not None:
-                data += select_res
-
-    filtered_videos = [int(temp[0]) for temp in data]
-    return filtered_videos
+    i = 0
+    while i < 3:
+        try:
+            mysql_helper = MysqlHelper(mysql_info=config_.FILTER_MYSQL_INFO)
+            video_status_sql = "SELECT t1.id AS 'video_id', " \
+                               "t1.transcode_status AS 'transcoding_status', " \
+                               "t2.app_audit_status AS 'app_audit_status', " \
+                               "t2.original_status AS 'open_status', " \
+                               "t2.recommend_status AS 'applet_rec_status', " \
+                               "t2.app_recommend_status AS 'app_rec_status', " \
+                               "t3.charge AS 'payment_status', " \
+                               "case when t4.max_validate_count is null then 0 else t4.max_validate_count end AS 'encryption_status' " \
+                               "FROM longvideo.wx_video t1 " \
+                               "LEFT JOIN longvideo.wx_video_status t2 ON t1.id= t2.video_id " \
+                               "LEFT JOIN longvideo.wx_video_detail t3 ON t1.id= t3.video_id " \
+                               "LEFT JOIN longvideo.wx_video_pwd t4 ON t1.id= t4.video_id"
+
+            if len(video_ids) == 1:
+                sql = "SELECT video_id " \
+                      "FROM ({}) " \
+                      "WHERE app_audit_status = 5 " \
+                      "AND app_rec_status IN (1, -6, 10) " \
+                      "AND open_status = 1 " \
+                      "AND payment_status = 0 " \
+                      "AND encryption_status != 5 " \
+                      "AND transcoding_status = 3 " \
+                      "AND video_id IN ({});".format(video_status_sql, video_ids[0])
+                data = mysql_helper.get_data(sql=sql)
+
+            else:
+                data = []
+                for i in range(len(video_ids) // 2000 + 1):
+                    sql = "SELECT video_id " \
+                          "FROM ({}) " \
+                          "WHERE app_audit_status = 5 " \
+                          "AND app_rec_status IN (1, -6, 10) " \
+                          "AND open_status = 1 " \
+                          "AND payment_status = 0 " \
+                          "AND encryption_status != 5 " \
+                          "AND transcoding_status = 3 " \
+                          "AND video_id IN {};".format(video_status_sql, tuple(video_ids[i*2000:(i+1)*2000]))
+                    select_res = mysql_helper.get_data(sql=sql)
+                    if select_res is not None:
+                        data += select_res
+
+            filtered_videos = [int(temp[0]) for temp in data]
+            return filtered_videos
+
+        except Exception as e:
+            i += 1
+            if i == 3:
+                return video_ids
 
 
 def filter_shield_video(video_ids, shield_key_name_list):