zhangyong 1 month ago
parent
commit
d74830bd30
4 changed files with 201 additions and 162 deletions
  1. 30 17
      docker-compose.yml
  2. 10 10
      product.env
  3. 7 5
      utils/feishu_form.py
  4. 154 130
      workers/consumption_work.py

+ 30 - 17
docker-compose.yml

@@ -1,27 +1,19 @@
 services:
-  consumption_studio:
+  select:
     build:
       context: .
       dockerfile: Dockerfile
+#    image: tool_job
+#    container_name: tool_worker1
+#    restart: unless-stopped
+#    environment:
+#      - ENV=prod
+#    networks:
+#      - tool_net
+#    entrypoint: "python /app/workers/consumption_work_studio.py"
     image: tool_job
     container_name: tool_worker1
     restart: unless-stopped
-    environment:
-      - ENV=prod
-    networks:
-      - tool_net
-    entrypoint: "python /app/workers/consumption_work_studio.py"
-  select_studio:
-    image: tool_job
-    restart: unless-stopped
-    environment:
-      - ENV=prod
-    networks:
-      - tool_net
-    entrypoint: "python /app/workers/select_work_studio.py"
-  select:
-    image: tool_job
-    restart: unless-stopped
     env_file:
       - product.env
     volumes:
@@ -32,6 +24,27 @@ services:
     deploy:
       replicas: 10
     entrypoint: sh /app/sh/select.sh
+#  select_studio:
+#    image: tool_job
+#    restart: unless-stopped
+#    environment:
+#      - ENV=prod
+#    networks:
+#      - tool_net
+#    entrypoint: "python /app/workers/select_work_studio.py"
+#  select:
+#    image: tool_job
+#    restart: unless-stopped
+#    env_file:
+#      - product.env
+#    volumes:
+#      - ./sh:/app/sh
+#      - /var/run/docker.sock:/var/run/docker.sock:ro
+#    networks:
+#      - tool_net
+#    deploy:
+#      replicas: 10
+#    entrypoint: sh /app/sh/select.sh
   consumption:
     image: tool_job
     restart: unless-stopped

+ 10 - 10
product.env

@@ -1,12 +1,12 @@
 ENV=prod
 
-FS_DATA_1=范军,4a768d,task:carry_data_redis_fj
-FS_DATA_2=鲁涛,EZef39,task:carry_data_redis_lt
-FS_DATA_3=余海涛,Frush6,task:carry_data_redis_yht
-FS_DATA_4=罗情,wolznW,task:carry_data_redis_lq
-FS_DATA_5=刘诗雨,5MXdSK,task:carry_data_redis_lsy
-FS_DATA_6=王媛,Nv8E4z,task:carry_data_redis_wy
-FS_DATA_7=周仙琴,2WIcBU,task:carry_data_redis_zxq
-FS_DATA_8=信欣,v0fFCb,task:carry_data_redis_xx
-FS_DATA_9=邓锋,DEpi6V,task:carry_data_redis_df
-FS_DATA_10=王知微,jrpuyW,task:carry_data_redis_wzw
+FS_DATA_1=范军,4a768d,task:carry_data_redis_fj,AIzaSyBqqAhzew33-ZY6u0w0Th8z4FHjiieFK0s
+FS_DATA_2=鲁涛,EZef39,task:carry_data_redis_lt,AIzaSyBXU3VIilXxDbIg5riYTu5t6WEVEH8AQNk
+FS_DATA_3=余海涛,Frush6,task:carry_data_redis_yht,AIzaSyCaurhmnci1jooXSN8Q3dKWbYYndUllbzs
+FS_DATA_4=罗情,wolznW,task:carry_data_redis_lq,AIzaSyDBtbQNf-Fvc0UIDphV6QErDKjmjUNpN4o
+FS_DATA_5=刘诗雨,5MXdSK,task:carry_data_redis_lsy,AIzaSyDWNwy7SIHLaJ7gROE7qeLB5XjDIDIq644
+FS_DATA_6=王媛,Nv8E4z,task:carry_data_redis_wy,AIzaSyCQkHRsQyLQTRny_3nPqVGjL0Y8U4ls4tw
+FS_DATA_7=周仙琴,2WIcBU,task:carry_data_redis_zxq,AIzaSyD46rphXd-Ie51sQiQ61lrSqKu1O2qGyXo
+FS_DATA_8=信欣,v0fFCb,task:carry_data_redis_xx,AIzaSyD46rphXd-Ie51sQiQ61lrSqKu1O2qGyXo
+FS_DATA_9=邓锋,DEpi6V,task:carry_data_redis_df,AIzaSyCWilmMZyG4xW_pujpRGflaa7SIBjLQHiI
+FS_DATA_10=王知微,jrpuyW,task:carry_data_redis_wzw,AIzaSyCx3hy5ef8wOVPNjvK1MIAwyZZCdYuRh-U

+ 7 - 5
utils/feishu_form.py

@@ -35,12 +35,13 @@ class Material():
                 transform_rule = row[11] # 改造规则
                 video_share = row[12] # 片中分享
                 trailer_share = row[13]  # 片尾分享
-                trailer_share_audio = row[14]  # 片尾分享声音
-                trailer_share_bgm = row[15]  # 片尾分享bgm
+                trailer_share_video = row[14]  # 片尾手动视频
+                trailer_share_audio = row[15]  # 片尾分享声音
+                trailer_share_bgm = row[16]  # 片尾分享bgm
 
-                video_clipping = row[16]  # 剪裁
-                video_clipping_time = row[17]  # 秒数剪裁
-                title_transform = row[18]  # 标题改造
+                video_clipping = row[17]  # 剪裁
+                video_clipping_time = row[18]  # 秒数剪裁
+                title_transform = row[19]  # 标题改造
                 number_dict = {
                     "channel_mark": channel_mark,
                     "name":NAME,
@@ -56,6 +57,7 @@ class Material():
                     "transform_rule": transform_rule,
                     "video_share": video_share,
                     "trailer_share": str(trailer_share),
+                    "trailer_share_video": trailer_share_video,
                     "trailer_share_audio": trailer_share_audio,
                     "video_clipping": video_clipping,
                     "video_clipping_time": video_clipping_time,

+ 154 - 130
workers/consumption_work.py

@@ -24,6 +24,8 @@ from utils.piaoquan import PQ
 from utils.sql_help import sqlCollect
 from utils.tag_video import Tag
 from utils.tts_help import TTS
+from utils.google_ai_studio import GoogleAI
+
 
 
 
@@ -125,7 +127,7 @@ class ConsumptionRecommend(object):
         return
 
     @classmethod
-    def data_handle(cls, data, file_path, redis_name):
+    def data_handle(cls, data, file_path, redis_name,studio_key):
         url, original_title, video_id, tag_transport_channel = Dy_KS.get_video_url(data, "效率工具")
         if url == "重新处理" or not url:
             RedisHelper().get_client().rpush(redis_name, json.dumps(data))
@@ -227,69 +229,110 @@ class ConsumptionRecommend(object):
                     video_path = FFmpeg.video_crop(video_path, file_path)
                 if data["video_clipping_time"]:  # 判断是否需要指定视频时长
                     video_path = FFmpeg.video_ggduration(video_path, file_path, data["video_clipping_time"])
-                if str(data['trailer_share']):
-                    prompt = Material.get_propmt_data(str(data['trailer_share']))
-                    pw_srt_text = GPT4oMini.get_ai_mini_pw(title, prompt)
-                    voice = data['trailer_share_audio']
-                    if voice:
-                        if ',' in voice:
-                            voices = voice.split(',')
-                        else:
-                            voices = [voice]
-                        voice = random.choice(voices)
-                    else:
-                        voice = "zhifeng_emo"
-                    pw_url = TTS.get_pw_zm(pw_srt_text, voice)
-                    if not pw_url:
-                        logger.error(f"[处理] 数据片尾获取失败")
+                if data['trailer_share'] == "内容分析":
+                    video_text = GoogleAI.run(studio_key, video_path)
+                    if not video_text:
+                        logger.error(f"[处理] 视频内容分析获取内容信息失败")
                         data["transform_rule"] = "仅改造"
                         RedisHelper().get_client().rpush(redis_name, json.dumps(data))
                         AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
-                                             "改造失败,片尾获取失败", "3001", str(data))
+                                             "改造失败,视频内容分析获取内容信息失败", "3001", str(data))
                         text = (
                             f"**负责人**: {data['name']}\n"
                             f"**内容**: {data}\n"
-                            f"**失败信息**: 获取片尾失败\n"
+                            f"**失败信息**: 视频内容分析获取内容信息失败\n"
                         )
                         Feishu.finish_bot(text,
                                           "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
                                           "【 搬运&改造效率工具失败通知 】")
                         return
-                    logger.info(f"[处理] 数据片尾获取成功")
-                    pw_srt = TTS.getSrt(pw_url)
-                    if not pw_srt:
-                        data["transform_rule"] = "仅改造"
-                        RedisHelper().get_client().rpush(redis_name, json.dumps(data))
-                        logger.error(f"[处理] 数据片尾音频srt获取失败")
-                        AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
-                                             "改造失败,片尾音频下载失败", "3001", str(data))
-                        text = (
-                            f"**负责人**: {data['name']}\n"
-                            f"**内容**: {data}\n"
-                            f"**失败信息**: 片尾音频下载失败\n"
-                        )
-                        Feishu.finish_bot(text,
-                                          "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
-                                          "【 搬运&改造效率工具失败通知 】")
-                        return
-                    pw_mp3_path = TTS.download_mp3(pw_url, file_path)
-                    if not pw_mp3_path:
-                        data["transform_rule"] = "仅改造"
-                        RedisHelper().get_client().rpush(redis_name, json.dumps(data))
-                        logger.error(f"[处理] 数据片尾音频下载失败")
+                    logger.info(f"[处理] 片尾引导-开始获取AI片尾")
+                    pw_srt_text = GPT4oMini.get_content_understanding_pw(video_text)
+                else:
+                    prompt = Material.get_propmt_data(str(data['trailer_share']))
+                    pw_srt_text = GPT4oMini.get_ai_mini_pw(title, prompt)
+                voice = data['trailer_share_audio']
+                if voice:
+                    if ',' in voice:
+                        voices = voice.split(',')
+                    else:
+                        voices = [voice]
+                    voice = random.choice(voices)
+                else:
+                    voice = "zhifeng_emo"
+                pw_url = TTS.get_pw_zm(pw_srt_text, voice)
+                if not pw_url:
+                    logger.error(f"[处理] 数据片尾获取失败")
+                    data["transform_rule"] = "仅改造"
+                    RedisHelper().get_client().rpush(redis_name, json.dumps(data))
+                    AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
+                                         "改造失败,片尾获取失败", "3001", str(data))
+                    text = (
+                        f"**负责人**: {data['name']}\n"
+                        f"**内容**: {data}\n"
+                        f"**失败信息**: 获取片尾失败\n"
+                    )
+                    Feishu.finish_bot(text,
+                                      "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
+                                      "【 搬运&改造效率工具失败通知 】")
+                    return
+                logger.info(f"[处理] 数据片尾获取成功")
+                pw_srt = TTS.getSrt(pw_url)
+                if not pw_srt:
+                    data["transform_rule"] = "仅改造"
+                    RedisHelper().get_client().rpush(redis_name, json.dumps(data))
+                    logger.error(f"[处理] 数据片尾音频srt获取失败")
+                    AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
+                                         "改造失败,片尾音频下载失败", "3001", str(data))
+                    text = (
+                        f"**负责人**: {data['name']}\n"
+                        f"**内容**: {data}\n"
+                        f"**失败信息**: 片尾音频下载失败\n"
+                    )
+                    Feishu.finish_bot(text,
+                                      "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
+                                      "【 搬运&改造效率工具失败通知 】")
+                    return
+                pw_mp3_path = TTS.download_mp3(pw_url, file_path)
+                if not pw_mp3_path:
+                    data["transform_rule"] = "仅改造"
+                    RedisHelper().get_client().rpush(redis_name, json.dumps(data))
+                    logger.error(f"[处理] 数据片尾音频下载失败")
+                    AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
+                                         "改造失败,片尾音频下载失败", "3001", str(data))
+                    text = (
+                        f"**负责人**: {data['name']}\n"
+                        f"**内容**: {data}\n"
+                        f"**失败信息**: 片尾音频下载失败\n"
+                    )
+                    Feishu.finish_bot(text,
+                                      "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
+                                      "【 搬运&改造效率工具失败通知 】")
+                    return
+                logger.info(f"[处理] 数据片尾音频下载成功")
+
+                if str(data['trailer_share_video']) and str(data['trailer_share_video'] ) != "None":
+                    rg_pw = str(data["trailer_share_video"])
+                    if ',' in rg_pw:
+                        rg_pw_list = rg_pw.split(',')
+                    else:
+                        rg_pw_list = [rg_pw]
+                    rg_pw_url_list = PQ.get_pq_oss(rg_pw_list)
+                    if not rg_pw_url_list:
                         AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
-                                             "改造失败,片尾音频下载失败", "3001", str(data))
+                                             "无法获取站内视频链接", "3001", str(data))
                         text = (
                             f"**负责人**: {data['name']}\n"
                             f"**内容**: {data}\n"
-                            f"**失败信息**: 片尾音频下载失败\n"
+                            f"**失败信息**: 无法获取站内视频链接\n"
                         )
                         Feishu.finish_bot(text,
                                           "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
                                           "【 搬运&改造效率工具失败通知 】")
                         return
-                    logger.info(f"[处理] 数据片尾音频下载成功")
-                    if "AI片尾引导" in str(data['trailer_share']):
+                    pw_url_duration = FFmpeg.get_http_duration([pw_url])
+                    pw_videos_duration = FFmpeg.get_http_duration(rg_pw_url_list)
+                    if pw_videos_duration < pw_url_duration:
                         jpg_path = FFmpeg.video_png(video_path, file_path)  # 生成视频最后一帧jpg
                         if not os.path.exists(jpg_path) or os.path.getsize(jpg_path) == 0:
                             data["transform_rule"] = "仅改造"
@@ -308,112 +351,92 @@ class ConsumptionRecommend(object):
                             return
                         logger.info(f"[处理] 数据片尾获取最后一帧成功")
                     else:
-                        rg_pw = str(data["trailer_share"])
-                        if ',' in rg_pw:
-                            rg_pw_list = rg_pw.split(',')
-                        else:
-                            rg_pw_list = [rg_pw]
-                        rg_pw_url_list = PQ.get_pq_oss(rg_pw_list)
-                        if not rg_pw_url_list:
+                        rg_pw_url = DownLoad.download_pq_video(file_path, rg_pw_url_list)
+                        rg_pw_list = FFmpeg.concatenate_videos(rg_pw_url, file_path)
+                        if not os.path.exists(rg_pw_list) or os.path.getsize(rg_pw_list) == 0:
+                            data["transform_rule"] = "仅改造"
+                            RedisHelper().get_client().rpush(redis_name, json.dumps(data))
+                            logger.error(f"[处理] 数据片尾拼接失败")
                             AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
-                                                 "无法获取站内视频链接", "3001", str(data))
+                                                 "改造失败,片尾拼接失败", "3001", str(data))
                             text = (
                                 f"**负责人**: {data['name']}\n"
                                 f"**内容**: {data}\n"
-                                f"**失败信息**: 无法获取站内视频链接\n"
+                                f"**失败信息**: 片尾拼接失败\n"
                             )
                             Feishu.finish_bot(text,
                                               "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
                                               "【 搬运&改造效率工具失败通知 】")
                             return
-                        pw_url_duration = FFmpeg.get_http_duration([pw_url])
-                        pw_videos_duration = FFmpeg.get_http_duration(rg_pw_url_list)
-                        if pw_videos_duration < pw_url_duration:
-                            jpg_path = FFmpeg.video_png(video_path, file_path)  # 生成视频最后一帧jpg
-                            if not os.path.exists(jpg_path) or os.path.getsize(jpg_path) == 0:
-                                data["transform_rule"] = "仅改造"
-                                RedisHelper().get_client().rpush(redis_name, json.dumps(data))
-                                logger.error(f"[处理] 数据片尾获取最后一帧失败")
-                                AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
-                                                     "改造失败,获取最后一帧失败", "3001", str(data))
-                                text = (
-                                    f"**负责人**: {data['name']}\n"
-                                    f"**内容**: {data}\n"
-                                    f"**失败信息**: 获取视频最后一帧失败\n"
-                                )
-                                Feishu.finish_bot(text,
-                                                  "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
-                                                  "【 搬运&改造效率工具失败通知 】")
-                                return
-                            logger.info(f"[处理] 数据片尾获取最后一帧成功")
-                        else:
-                            rg_pw_url = DownLoad.download_pq_video(file_path, rg_pw_url_list)
-                            rg_pw_list = FFmpeg.concatenate_videos(rg_pw_url, file_path)
-                            if not os.path.exists(rg_pw_list) or os.path.getsize(rg_pw_list) == 0:
-                                data["transform_rule"] = "仅改造"
-                                RedisHelper().get_client().rpush(redis_name, json.dumps(data))
-                                logger.error(f"[处理] 数据片尾拼接失败")
-                                AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
-                                                     "改造失败,片尾拼接失败", "3001", str(data))
-                                text = (
-                                    f"**负责人**: {data['name']}\n"
-                                    f"**内容**: {data}\n"
-                                    f"**失败信息**: 片尾拼接失败\n"
-                                )
-                                Feishu.finish_bot(text,
-                                                  "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
-                                                  "【 搬运&改造效率工具失败通知 】")
-                                return
-                            jpg_path = FFmpeg.video_640(rg_pw_list, file_path)
-                            logger.info(f"[处理] 生成人工片尾成功")
-                    pw_path = FFmpeg.pw_video(jpg_path, file_path, pw_mp3_path, pw_srt)  # 生成片尾视频
-                    if not os.path.exists(pw_path) or os.path.getsize(pw_path) == 0:
-                        data["transform_rule"] = "仅改造"
-                        RedisHelper().get_client().rpush(redis_name, json.dumps(data))
-                        logger.error(f"[处理] 数据片尾拼接失败")
-                        AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
-                                             "改造失败,片尾拼接失败", "3001", str(data))
-                        text = (
-                            f"**负责人**: {data['name']}\n"
-                            f"**内容**: {data}\n"
-                            f"**失败信息**: 片尾拼接失败\n"
-                        )
-                        Feishu.finish_bot(text,
-                                          "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
-                                          "【 搬运&改造效率工具失败通知 】")
-                        return
+                        jpg_path = FFmpeg.video_640(rg_pw_list, file_path)
+                        logger.info(f"[处理] 生成人工片尾成功")
 
-                    logger.info(f"[处理] 数据合并开始拼接")
-                    trailer_share_bgm = data['trailer_share_bgm']
-                    # trailer_share_bgm = '48594759'
-                    if trailer_share_bgm and trailer_share_bgm != "None":
-                        try:
-                            logger.info(f"[处理] 获取bgm")
-                            rg_bgm_list = PQ.get_pq_oss([trailer_share_bgm])
-                            rg_bgm_url = DownLoad.download_pq_video(file_path, rg_bgm_list)
-                            bgm_mp3_path = FFmpeg.get_pw_video_mp3(file_path, rg_bgm_url[0])
-                            pw_path = FFmpeg.video_add_bgm(pw_path, bgm_mp3_path, file_path)
-                            logger.info(f"[处理] 片尾bgm添加成功")
-                        except Exception as e:
-                            logger.error(f"[处理] 片尾bgm添加失败")
-                    video_path = FFmpeg.h_b_video(video_path, pw_path, file_path)
-                    video_path = FFmpeg.single_video(video_path, file_path, data["video_share"])
-                    if not os.path.exists(video_path) or os.path.getsize(video_path) == 0:
+                else:
+                    jpg_path = FFmpeg.video_png(video_path, file_path)  # 生成视频最后一帧jpg
+                    if not os.path.exists(jpg_path) or os.path.getsize(jpg_path) == 0:
                         data["transform_rule"] = "仅改造"
                         RedisHelper().get_client().rpush(redis_name, json.dumps(data))
-                        logger.error(f"[处理] 数据添加片中字幕失败")
+                        logger.error(f"[处理] 数据片尾获取最后一帧失败")
                         AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
-                                             "改造失败,添加片中字幕失败", "3001", str(data))
+                                             "改造失败,获取最后一帧失败", "3001", str(data))
                         text = (
                             f"**负责人**: {data['name']}\n"
                             f"**内容**: {data}\n"
-                            f"**失败信息**: 视频片中增加字幕失败\n"
+                            f"**失败信息**: 获取视频最后一帧失败\n"
                         )
                         Feishu.finish_bot(text,
                                           "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
                                           "【 搬运&改造效率工具失败通知 】")
                         return
-                    logger.info(f"[处理] 数据添加片中字幕成功")
+                    logger.info(f"[处理] 数据片尾获取最后一帧成功")
+                pw_path = FFmpeg.pw_video(jpg_path, file_path, pw_mp3_path, pw_srt)  # 生成片尾视频
+                if not os.path.exists(pw_path) or os.path.getsize(pw_path) == 0:
+                    data["transform_rule"] = "仅改造"
+                    RedisHelper().get_client().rpush(redis_name, json.dumps(data))
+                    logger.error(f"[处理] 数据片尾拼接失败")
+                    AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
+                                         "改造失败,片尾拼接失败", "3001", str(data))
+                    text = (
+                        f"**负责人**: {data['name']}\n"
+                        f"**内容**: {data}\n"
+                        f"**失败信息**: 片尾拼接失败\n"
+                    )
+                    Feishu.finish_bot(text,
+                                      "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
+                                      "【 搬运&改造效率工具失败通知 】")
+                    return
+
+                logger.info(f"[处理] 数据合并开始拼接")
+                trailer_share_bgm = data['trailer_share_bgm']
+                # trailer_share_bgm = '48594759'
+                if trailer_share_bgm and trailer_share_bgm != "None":
+                    try:
+                        logger.info(f"[处理] 获取bgm")
+                        rg_bgm_list = PQ.get_pq_oss([trailer_share_bgm])
+                        rg_bgm_url = DownLoad.download_pq_video(file_path, rg_bgm_list)
+                        bgm_mp3_path = FFmpeg.get_pw_video_mp3(file_path, rg_bgm_url[0])
+                        pw_path = FFmpeg.video_add_bgm(pw_path, bgm_mp3_path, file_path)
+                        logger.info(f"[处理] 片尾bgm添加成功")
+                    except Exception as e:
+                        logger.error(f"[处理] 片尾bgm添加失败")
+                video_path = FFmpeg.h_b_video(video_path, pw_path, file_path)
+                video_path = FFmpeg.single_video(video_path, file_path, data["video_share"])
+                if not os.path.exists(video_path) or os.path.getsize(video_path) == 0:
+                    data["transform_rule"] = "仅改造"
+                    RedisHelper().get_client().rpush(redis_name, json.dumps(data))
+                    logger.error(f"[处理] 数据添加片中字幕失败")
+                    AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
+                                         "改造失败,添加片中字幕失败", "3001", str(data))
+                    text = (
+                        f"**负责人**: {data['name']}\n"
+                        f"**内容**: {data}\n"
+                        f"**失败信息**: 视频片中增加字幕失败\n"
+                    )
+                    Feishu.finish_bot(text,
+                                      "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
+                                      "【 搬运&改造效率工具失败通知 】")
+                    return
+                logger.info(f"[处理] 数据添加片中字幕成功")
                 logger.info(f"[处理] 数据开始发送oss")
                 oss_object_key = Oss.stitching_sync_upload_oss(video_path, str(uuid.uuid4()))  # 视频发送OSS
                 logger.info(f"[处理] 数据发送oss成功")
@@ -454,13 +477,14 @@ class ConsumptionRecommend(object):
         # fs_data = '周仙琴,2WIcBU,task:carry_data_redis_zxq'
         fs_data_list = fs_data.split(',')
         redis_name = fs_data_list[2]
+        studio_key = fs_data_list[3]
         data = RedisHelper().get_client().rpop(name=redis_name)
         if not data:
             logger.info('[处理] 无待执行的扫描任务')
             return
         data = orjson.loads(data)
         try:
-            cls.data_handle(data, file_path, redis_name)
+            cls.data_handle(data, file_path, redis_name,studio_key)
             for filename in os.listdir(CACHE_DIR):
                 # 检查文件名是否包含关键字
                 if uid in filename: