liqian 1 year ago
parent
commit
1714f97d70
3 changed files with 103 additions and 62 deletions
  1. 36 33
      ai_tag_task.py
  2. 39 1
      config.py
  3. 28 28
      log_conf.py

+ 36 - 33
ai_tag_task.py

@@ -1,7 +1,9 @@
 import os
 import json
 import datetime
+import time
 import traceback
+import requests
 from threading import Timer
 from utils import data_check, get_feature_data, asr_validity_discrimination
 from whisper_asr import get_whisper_asr
@@ -59,33 +61,27 @@ def get_video_ai_tags(video_id, video_file, video_info):
                         confidence_up_list = []
                         try:
                             for item in json.loads(gpt_res2):
-                                if item['confidence'] > 0.5:
-                                    confidence_up_list.append(item['category'])
+                                if item['confidence'] > 0.5 and item['category'] in config_.TAGS_NEW:
+                                    confidence_up_list.append(f"AI标签-{item['category']}")
                         except:
                             pass
-                        confidence_up = ', '.join(confidence_up_list)
-                        result[0].extend([prompt2, gpt_res2, confidence_up])
+                        confidence_up = ','.join(confidence_up_list)
+                        log_message['AITags'] = confidence_up
+                        # 5. 调用后端接口,结果传给后端
+                        if len(confidence_up) > 0:
+                            response = requests.post(url=config_.ADD_VIDEO_AI_TAGS_URL,
+                                                     json={'videoId': int(video_id), 'tagNames': confidence_up})
+                            res_data = json.loads(response.text)
+                            if res_data['code'] != 0:
+                                log_.error({'videoId': video_id, 'msg': 'add video ai tags fail!'})
                 except:
-                    result[0].extend(['', '', '', '', ''])
+                    pass
         else:
-            result = [[str(validity), '', '', '', '', '', '', '']]
-        log_.info(f"result = {result}")
-        if len(result) > 0:
-            feishu_helper.update_values(
-                sheet_token=res_spreadsheet_token,
-                sheet_id=res_sheet_id,
-                data=result,
-                start_row=write_start_row,
-                start_column=write_start_col,
-                end_column=write_end_col
-            )
-            log_.info(f"write to feishu success!")
-            write_start_row += 1
+            pass
+        log_.info(log_message)
     except Exception as e:
         log_.error(e)
         log_.error(traceback.format_exc())
-        continue
-
 
 
 def ai_tags(project, table, dt):
@@ -105,20 +101,27 @@ def ai_tags(project, table, dt):
     print(len(video_info))
     # 获取已下载视频
     download_folder = 'videos'
-    video_folder_list = os.listdir(download_folder)
-    for video_id in video_folder_list:
-        if video_id not in video_id_list:
+    retry = 0
+    while retry > 3:
+        video_folder_list = os.listdir(download_folder)
+        if len(video_folder_list) < 2:
+            retry += 1
+            time.sleep(60)
             continue
-        if video_info.get(video_id, None) is None:
-            os.rmdir(os.path.join(download_folder, video_id))
-        else:
-            video_folder = os.path.join(download_folder, video_id)
-            for filename in os.listdir(video_folder):
-                video_type = filename.split('.')[-1]
-                if video_type in ['mp4', 'm3u8']:
-                    video_file = os.path.join(video_folder, filename)
-                    get_video_ai_tags(video_id=video_id, video_file=video_file, video_info=video_info.get(video_id))
-    print(video_folder_list)
+        for video_id in video_folder_list:
+            if video_id not in video_id_list:
+                continue
+            if video_info.get(video_id, None) is None:
+                os.rmdir(os.path.join(download_folder, video_id))
+            else:
+                video_folder = os.path.join(download_folder, video_id)
+                for filename in os.listdir(video_folder):
+                    video_type = filename.split('.')[-1]
+                    if video_type in ['mp4', 'm3u8']:
+                        video_file = os.path.join(video_folder, filename)
+                        get_video_ai_tags(video_id=video_id, video_file=video_file, video_info=video_info.get(video_id))
+                        # 将处理过的视频进行删除
+                        os.rmdir(os.path.join(download_folder, video_id))
 
 
 def timer_check():

+ 39 - 1
config.py

@@ -125,5 +125,43 @@ class BaseConfig(object):
     }
 
 
+class TestConfig(BaseConfig):
+    # 后端接口 - 视频添加AI相关标签
+    ADD_VIDEO_AI_TAGS_URL = 'https://testadmin.piaoquantv.com/manager/video/tag/addVideoAiTags'
+    # 日志服务配置
+    ALIYUN_LOG = {
+        'ENDPOINT': 'cn-hangzhou.log.aliyuncs.com',
+        'ACCESSID': 'LTAIWYUujJAm7CbH',
+        'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P',
+        'PROJECT': 'aigc-server-test',
+    }
+
+
+class PreConfig(BaseConfig):
+    # 后端接口 - 视频添加AI相关标签
+    ADD_VIDEO_AI_TAGS_URL = 'https://preadmin.piaoquantv.com/manager/video/tag/addVideoAiTags'
+    # 日志服务配置
+    ALIYUN_LOG = {
+        'ENDPOINT': 'cn-hangzhou.log.aliyuncs.com',
+        'ACCESSID': 'LTAIWYUujJAm7CbH',
+        'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P',
+        'PROJECT': 'aigc-server',
+    }
+
+
+class ProConfig(BaseConfig):
+    # 后端接口 - 视频添加AI相关标签
+    ADD_VIDEO_AI_TAGS_URL = 'https://admin.piaoquantv.com/manager/video/tag/addVideoAiTags'
+    # 日志服务配置
+    ALIYUN_LOG = {
+        'ENDPOINT': 'cn-hangzhou.log.aliyuncs.com',
+        'ACCESSID': 'LTAIWYUujJAm7CbH',
+        'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P',
+        'PROJECT': 'aigc-server',
+    }
+
+
 def set_config():
-    return BaseConfig()
+    return TestConfig()
+    # return ProConfig()
+    # return ProConfig

+ 28 - 28
log_conf.py

@@ -31,32 +31,32 @@ conf = {
             'level': 'DEBUG',
             'formatter': 'simpleFormatter',
         },
-        # 'slsHandler': {
-        #     '()': 'aliyun.log.QueuedLogHandler',
-        #     'level': 'INFO',
-        #     'formatter': 'rawFormatter',
-        #     # custom args:
-        #     'end_point': config_.ALIYUN_LOG.get('ENDPOINT', ''),
-        #     'access_key_id': config_.ALIYUN_LOG.get('ACCESSID', ''),
-        #     'access_key': config_.ALIYUN_LOG.get('ACCESSKEY', ''),
-        #     'project': config_.ALIYUN_LOG.get('PROJECT', ''),
-        #     'log_store': "info",
-        #     'extract_kv': True,
-        #     'extract_json': True
-        # },
-        # 'errorHandler': {
-        #     '()': 'aliyun.log.QueuedLogHandler',
-        #     'level': 'ERROR',
-        #     'formatter': 'rawFormatter',
-        #     # custom args:
-        #     'end_point': config_.ALIYUN_LOG.get('ENDPOINT', ''),
-        #     'access_key_id': config_.ALIYUN_LOG.get('ACCESSID', ''),
-        #     'access_key': config_.ALIYUN_LOG.get('ACCESSKEY', ''),
-        #     'project': config_.ALIYUN_LOG.get('PROJECT', ''),
-        #     'log_store': "error",
-        #     'extract_kv': True,
-        #     'extract_json': True
-        # },
+        'slsHandler': {
+            '()': 'aliyun.log.QueuedLogHandler',
+            'level': 'INFO',
+            'formatter': 'rawFormatter',
+            # custom args:
+            'end_point': config_.ALIYUN_LOG.get('ENDPOINT', ''),
+            'access_key_id': config_.ALIYUN_LOG.get('ACCESSID', ''),
+            'access_key': config_.ALIYUN_LOG.get('ACCESSKEY', ''),
+            'project': config_.ALIYUN_LOG.get('PROJECT', ''),
+            'log_store': "ai-tags-log",
+            'extract_kv': True,
+            'extract_json': True
+        },
+        'errorHandler': {
+            '()': 'aliyun.log.QueuedLogHandler',
+            'level': 'ERROR',
+            'formatter': 'rawFormatter',
+            # custom args:
+            'end_point': config_.ALIYUN_LOG.get('ENDPOINT', ''),
+            'access_key_id': config_.ALIYUN_LOG.get('ACCESSID', ''),
+            'access_key': config_.ALIYUN_LOG.get('ACCESSKEY', ''),
+            'project': config_.ALIYUN_LOG.get('PROJECT', ''),
+            'log_store': "error",
+            'extract_kv': True,
+            'extract_json': True
+        },
         'fileHandler': {
             '()': 'logging.FileHandler',
             'level': 'INFO',
@@ -72,12 +72,12 @@ conf = {
             'level': 'DEBUG'
         },
         'sls': {
-            'handlers': ['consoleHandler', 'fileHandler'],
+            'handlers': ['consoleHandler', 'slsHandler'],
             'level': 'INFO',
             'propagate': False
         },
         'error': {
-            'handlers': ['consoleHandler', 'fileHandler'],
+            'handlers': ['consoleHandler', 'errorHandler'],
             'level': 'ERROR',
             'propagate': False
         }