浏览代码

export_script_file 添加 response_model

liyuyi@c-top.com.cn 3 年之前
父节点
当前提交
72d7d75956
共有 1 个文件被更改,包括 20 次插入14 次删除
  1. 20 14
      main.py

+ 20 - 14
main.py

@@ -193,11 +193,13 @@ class AddScriptConfig(BaseModel):
 @logger.catch
 @app.post('/export_script_file/', tags=['front-end interactive'],
           description="导出文件",
-          summary='导出文件'
+          summary='导出文件',
+          response_model=BaseResponse
           )
 def export_script_file(item: List[QueryWordItem]):
     try:
         video_df = pd.DataFrame()
+        out_df = pd.DataFrame()
         # 1 从数据库获取视频数据
         # 如果同一个素材有多个查询词,则合并打上这多个查询词
         for obj in item:
@@ -210,20 +212,20 @@ def export_script_file(item: List[QueryWordItem]):
             df = pd.read_sql(sql, ai_word_engine)
             video_df = video_df.append(df)
 
-        # 按 'signature' + 'query_word' + 'stat_date' 进行去重
-        video_df.drop_duplicates(['signature', 'query_word', 'stat_date', 'source_code'], keep='last', inplace=True)
+        if not video_df.empty:
+            # 按 'signature' + 'query_word' + 'stat_date' 进行去重
+            video_df.drop_duplicates(['signature', 'query_word', 'stat_date', 'source_code'], keep='last', inplace=True)
 
-        video_query_word_df = video_df.groupby('signature').apply(lambda x: pd.Series({'query_word_lst': x['query_word'].unique(),
-                                                                                       'video_url': x['video_url'].values[0],
-                                                                                       'source_code': x['source_code'].values[0]}))
-        video_query_word_df.reset_index(inplace=True, drop=False)
+            video_query_word_df = video_df.groupby('signature').apply(lambda x: pd.Series({'query_word_lst': x['query_word'].unique(),
+                                                                                           'video_url': x['video_url'].values[0],
+                                                                                           'source_code': x['source_code'].values[0]}))
+            video_query_word_df.reset_index(inplace=True, drop=False)
 
-        # 如果来源==2 (头条巨量引擎),把视频链接替换为永久链接
-        video_query_word_df['video_url'] = video_query_word_df.apply(
-            lambda row: toutiao_static_video_url + row['signature'] if row.get('source_code') == 2 else row['video_url'], axis=1)
+            # 如果来源==2 (头条巨量引擎),把视频链接替换为永久链接
+            video_query_word_df['video_url'] = video_query_word_df.apply(
+                lambda row: toutiao_static_video_url + row['signature'] if row.get('source_code') == 2 else row['video_url'], axis=1)
 
-        # 2 根据第一步的视频数据获取脚本
-        if not video_query_word_df.empty:
+            # 2 根据第一步的视频数据获取脚本
             signature_lst = list(video_query_word_df.signature.values) if len(video_query_word_df.signature.values) > 1 \
                 else list(video_query_word_df.signature.values) * 2
             sql = f"select signature, word_text from tb_asr_result where signature in {tuple(signature_lst)}" \
@@ -248,10 +250,14 @@ def export_script_file(item: List[QueryWordItem]):
             return StreamingResponse(bio, media_type='xlsx', headers=headers)
         else:
             logger.info(f"request body: {item}, message: 没有获取到对应的数据")
-            return None
+            return {"code": 0,
+                    "message": "没有获取到对应的数据",
+                    "success": True}
     except:
         logger.error(f"request body: {item}, message: {traceback.format_exc()}")
-        return None
+        return {"code": 0,
+                "message": {traceback.format_exc()},
+                "success": False}
 
 
 @logger.catch