|
@@ -325,176 +325,191 @@ class CarryViode:
|
|
|
]))
|
|
|
self.insert_pq(REDIS_NAME, data, oss_object_key, title, tags, tag_transport_channel, channel_mark)
|
|
|
if data["transform_rule"] == "仅改造" or data["transform_rule"] == "是":
|
|
|
- width, height = FFmpeg.get_w_h_size(video_path)
|
|
|
- if width < height: # 判断是否需要修改为竖屏
|
|
|
- video_path = FFmpeg.update_video_h_w(video_path, file_path)
|
|
|
- logger.info(f"[+] {REDIS_NAME}的{data}视频更改分辨率处理")
|
|
|
- video_path = FFmpeg.video_640(video_path, file_path)
|
|
|
- if not os.path.exists(video_path) or os.path.getsize(video_path) == 0:
|
|
|
- in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
|
- logger.error(f"[+] {REDIS_NAME}的{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"[+] {REDIS_NAME}的{data}视频更改分辨率处理成功")
|
|
|
- if data["video_clipping"]: # 判断是否需要裁剪
|
|
|
- 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 data['trailer_share']:
|
|
|
- if data['trailer_share'] == "AI片尾引导":
|
|
|
- pw_srt_text = GPT4oMini.get_ai_mini_pw(title)
|
|
|
- else:
|
|
|
- pw_srt_text = str(data['trailer_share'])
|
|
|
- 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"[+] {REDIS_NAME}的{data}数据片尾获取失败")
|
|
|
- data["transform_rule"] = "仅改造"
|
|
|
- in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
|
- 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"[+] {REDIS_NAME}的{data}数据片尾获取成功")
|
|
|
- pw_srt = TTS.getSrt(pw_url)
|
|
|
- if not pw_srt:
|
|
|
- data["transform_rule"] = "仅改造"
|
|
|
+ try:
|
|
|
+ width, height = FFmpeg.get_w_h_size(video_path)
|
|
|
+ if width < height: # 判断是否需要修改为竖屏
|
|
|
+ video_path = FFmpeg.update_video_h_w(video_path, file_path)
|
|
|
+ logger.info(f"[+] {REDIS_NAME}的{data}视频更改分辨率处理")
|
|
|
+ video_path = FFmpeg.video_640(video_path, file_path)
|
|
|
+ if not os.path.exists(video_path) or os.path.getsize(video_path) == 0:
|
|
|
in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
|
- logger.error(f"[+] {REDIS_NAME}的{data}数据片尾音频srt获取失败")
|
|
|
+ logger.error(f"[+] {REDIS_NAME}的{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
|
|
|
- pw_mp3_path = TTS.download_mp3(pw_url, file_path)
|
|
|
- if not pw_mp3_path:
|
|
|
- data["transform_rule"] = "仅改造"
|
|
|
- in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
|
- logger.error(f"[+] {REDIS_NAME}的{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"[+] {REDIS_NAME}的{data}数据片尾音频下载成功")
|
|
|
- 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"] = "仅改造"
|
|
|
- in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
|
- logger.error(f"[+] {REDIS_NAME}的{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"[+] {REDIS_NAME}的{data}数据片尾获取最后一帧成功")
|
|
|
- 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"] = "仅改造"
|
|
|
- in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
|
- logger.error(f"[+] {REDIS_NAME}的{data}数据片尾拼接失败")
|
|
|
- AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"],
|
|
|
"改造失败,片尾拼接失败", "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"[+] {REDIS_NAME}的{data}数据合并开始拼接")
|
|
|
- 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"] = "仅改造"
|
|
|
- in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
|
- logger.error(f"[+] {REDIS_NAME}的{data}数据添加片中字幕失败")
|
|
|
- AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"],
|
|
|
- "改造失败,添加片中字幕失败", "3001", str(data))
|
|
|
+ logger.info(f"[+] {REDIS_NAME}的{data}视频更改分辨率处理成功")
|
|
|
+ if data["video_clipping"]: # 判断是否需要裁剪
|
|
|
+ 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 data['trailer_share']:
|
|
|
+ if data['trailer_share'] == "AI片尾引导":
|
|
|
+ pw_srt_text = GPT4oMini.get_ai_mini_pw(title)
|
|
|
+ else:
|
|
|
+ pw_srt_text = str(data['trailer_share'])
|
|
|
+ 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"[+] {REDIS_NAME}的{data}数据片尾获取失败")
|
|
|
+ data["transform_rule"] = "仅改造"
|
|
|
+ in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
|
+ 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"[+] {REDIS_NAME}的{data}数据片尾获取成功")
|
|
|
+ pw_srt = TTS.getSrt(pw_url)
|
|
|
+ if not pw_srt:
|
|
|
+ data["transform_rule"] = "仅改造"
|
|
|
+ in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
|
+ logger.error(f"[+] {REDIS_NAME}的{data}数据片尾音频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"] = "仅改造"
|
|
|
+ in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
|
+ logger.error(f"[+] {REDIS_NAME}的{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"[+] {REDIS_NAME}的{data}数据片尾音频下载成功")
|
|
|
+ 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"] = "仅改造"
|
|
|
+ in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
|
+ logger.error(f"[+] {REDIS_NAME}的{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"[+] {REDIS_NAME}的{data}数据片尾获取最后一帧成功")
|
|
|
+ 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"] = "仅改造"
|
|
|
+ in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
|
+ logger.error(f"[+] {REDIS_NAME}的{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"[+] {REDIS_NAME}的{data}数据合并开始拼接")
|
|
|
+ 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"] = "仅改造"
|
|
|
+ in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
|
+ logger.error(f"[+] {REDIS_NAME}的{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"[+] {REDIS_NAME}的{data}数据添加片中字幕成功")
|
|
|
+ logger.info(f"[+] {REDIS_NAME}的{data}数据开始发送oss")
|
|
|
+ oss_object_key = Oss.stitching_sync_upload_oss(video_path, str(uuid.uuid4())) # 视频发送OSS
|
|
|
+ status = oss_object_key.get("status")
|
|
|
+ if status != 200:
|
|
|
+ logger.error(f"[+] {REDIS_NAME}的{data}数据发送oss失败")
|
|
|
+ AliyunLogger.logging(data["name"],"效率工具", tag_transport_channel, data["video_url"],
|
|
|
+ "改造失败,发送oss失败", "3001", str(data))
|
|
|
text = (
|
|
|
f"**负责人**: {data['name']}\n"
|
|
|
f"**内容**: {data}\n"
|
|
|
- f"**失败信息**: 视频片中增加字幕失败\n"
|
|
|
+ f"**失败信息**: 视频发送OSS失败\n"
|
|
|
)
|
|
|
Feishu.finish_bot(text,
|
|
|
"https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
|
|
|
"【 搬运&改造效率工具失败通知 】")
|
|
|
return
|
|
|
- logger.info(f"[+] {REDIS_NAME}的{data}数据添加片中字幕成功")
|
|
|
- logger.info(f"[+] {REDIS_NAME}的{data}数据开始发送oss")
|
|
|
- oss_object_key = Oss.stitching_sync_upload_oss(video_path, str(uuid.uuid4())) # 视频发送OSS
|
|
|
- status = oss_object_key.get("status")
|
|
|
- if status != 200:
|
|
|
- logger.error(f"[+] {REDIS_NAME}的{data}数据发送oss失败")
|
|
|
- AliyunLogger.logging(data["name"],"效率工具", tag_transport_channel, data["video_url"],
|
|
|
- "改造失败,发送oss失败", "3001", str(data))
|
|
|
+ logger.info(f"[+] {REDIS_NAME}的{data}数据发送oss成功")
|
|
|
+ oss_object_key = oss_object_key.get("oss_object_key")
|
|
|
+
|
|
|
+ tags = ','.join(filter(None, [
|
|
|
+ data['pq_label'],
|
|
|
+ channel_mark,
|
|
|
+ tag_transport_channel,
|
|
|
+ data['tag_transport_scene'],
|
|
|
+ data['tag_transport_keyword'],
|
|
|
+ "搬运改造"
|
|
|
+ ]))
|
|
|
+ self.insert_pq(REDIS_NAME, data, oss_object_key, title, tags, tag_transport_channel, channel_mark)
|
|
|
+ return
|
|
|
+ except Exception as e:
|
|
|
+ data["transform_rule"] = "仅改造"
|
|
|
+ in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
|
+ logger.error(f"[+] 视频改造失败{e}")
|
|
|
text = (
|
|
|
f"**负责人**: {data['name']}\n"
|
|
|
f"**内容**: {data}\n"
|
|
|
- f"**失败信息**: 视频发送OSS失败\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"[+] {REDIS_NAME}的{data}数据发送oss成功")
|
|
|
- oss_object_key = oss_object_key.get("oss_object_key")
|
|
|
-
|
|
|
- tags = ','.join(filter(None, [
|
|
|
- data['pq_label'],
|
|
|
- channel_mark,
|
|
|
- tag_transport_channel,
|
|
|
- data['tag_transport_scene'],
|
|
|
- data['tag_transport_keyword'],
|
|
|
- "搬运改造"
|
|
|
- ]))
|
|
|
- self.insert_pq(REDIS_NAME, data, oss_object_key, title, tags, tag_transport_channel, channel_mark)
|
|
|
- return
|
|
|
+ return
|
|
|
|
|
|
|
|
|
|