|
@@ -11,7 +11,7 @@ from loguru import logger
|
|
|
import requests
|
|
|
from lxml.html.diff import tag_token
|
|
|
|
|
|
-from common import Oss, Feishu
|
|
|
+from common import Oss, Feishu, AliyunLogger
|
|
|
from common.download_video import DownLoad
|
|
|
from common.ffmpeg import FFmpeg
|
|
|
from common.gpt4o_help import GPT4o
|
|
@@ -103,6 +103,8 @@ class CarryViode:
|
|
|
return None, None
|
|
|
|
|
|
def main(self, data, REDIS_NAME, file_path):
|
|
|
+ AliyunLogger.logging(data["name"],"效率工具", data["tag_transport_channel"], data["video_url"], "扫描到一条视频", "2001", str(data))
|
|
|
+ AliyunLogger.logging(data["name"], "效率工具",data["tag_transport_channel"], data["video_url"], "符合规则等待改造", "2004", str(data))
|
|
|
url = data['video_url']
|
|
|
if "&vid=" not in url and data['tag_transport_channel'] != "抖音":
|
|
|
msg = html.unescape(url).split('?')[0]
|
|
@@ -117,10 +119,15 @@ class CarryViode:
|
|
|
url, original_title = self.get_text_ks_video(url=url)
|
|
|
else:
|
|
|
logger.error(f"[+] {url}该链接不是抖/快 不做处理")
|
|
|
+ AliyunLogger.logging(data["name"], "效率工具",data["tag_transport_channel"], data["video_url"],
|
|
|
+ "不是抖/快不做处理", "1001", str(data))
|
|
|
+
|
|
|
return
|
|
|
if not url:
|
|
|
in_carry_video_data(REDIS_NAME, data)
|
|
|
logger.info(f"[+] {url}没有获取到视频链接,等待重新处理")
|
|
|
+ AliyunLogger.logging(data["name"], "效率工具",data["tag_transport_channel"], data["video_url"],
|
|
|
+ "没有获取到视频链接,等待重新处理", "1002", str(data))
|
|
|
return
|
|
|
if data["title_category"] == "AI标题" or data["trailer_share"] == "AI标题":
|
|
|
title = GPT4o.get_ai_title(original_title if data["title_category"] == "原标题" else data["title_category"])
|
|
@@ -130,6 +137,8 @@ class CarryViode:
|
|
|
video_path = Oss.download_video_oss(url, file_path)
|
|
|
if not video_path:
|
|
|
logger.error(f"[+] {url}下载失败")
|
|
|
+ AliyunLogger.logging(data["name"],"效率工具", data["tag_transport_channel"], data["video_url"],
|
|
|
+ "视频下载失败", "3002", str(data))
|
|
|
print("飞书通知")
|
|
|
return
|
|
|
if data["transform_rule"] == '否':
|
|
@@ -138,6 +147,9 @@ class CarryViode:
|
|
|
status = oss_object_key.get("status")
|
|
|
if status != 200:
|
|
|
logger.error(f"[+] {REDIS_NAME}的{data}数据发送oss失败")
|
|
|
+ AliyunLogger.logging(data["name"], "效率工具",data["tag_transport_channel"], data["video_url"],
|
|
|
+ "改造失败,发送oss失败", "3001", str(data))
|
|
|
+ return
|
|
|
logger.info(f"[+] {REDIS_NAME}的{data}数据发送oss成功")
|
|
|
oss_object_key = oss_object_key.get("oss_object_key")
|
|
|
|
|
@@ -164,38 +176,55 @@ class CarryViode:
|
|
|
pw_url = TTS.get_pw_zm(pw_srt_text, voice)
|
|
|
if not pw_url:
|
|
|
logger.error(f"[+] {REDIS_NAME}的{data}数据片尾获取失败")
|
|
|
+ AliyunLogger.logging(data["name"],"效率工具", data["tag_transport_channel"], data["video_url"],
|
|
|
+ "改造失败,片尾获取失败", "3001", str(data))
|
|
|
return
|
|
|
logger.info(f"[+] {REDIS_NAME}的{data}数据片尾获取成功")
|
|
|
pw_srt = TTS.getSrt(pw_url)
|
|
|
pw_mp3_path = TTS.download_mp3(pw_url, file_path)
|
|
|
if not pw_mp3_path or not pw_mp3_path:
|
|
|
logger.error(f"[+] {REDIS_NAME}的{data}数据片尾音频下载失败")
|
|
|
+ AliyunLogger.logging(data["name"], "效率工具",data["tag_transport_channel"], data["video_url"],
|
|
|
+ "改造失败,片尾音频下载失败", "3001", str(data))
|
|
|
return
|
|
|
logger.info(f"[+] {REDIS_NAME}的{data}数据片尾音频下载成功")
|
|
|
jpg_path = FFmpeg.video_png(video_path, file_path) # 生成视频最后一帧jpg
|
|
|
if not os.path.isfile(jpg_path) or not jpg_path:
|
|
|
logger.error(f"[+] {REDIS_NAME}的{data}数据片尾获取最后一帧失败")
|
|
|
+ AliyunLogger.logging(data["name"], "效率工具",data["tag_transport_channel"], data["video_url"],
|
|
|
+ "改造失败,获取最后一帧失败", "3001", str(data))
|
|
|
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.isfile(pw_path) or not pw_path:
|
|
|
logger.error(f"[+] {REDIS_NAME}的{data}数据片尾拼接失败")
|
|
|
+ AliyunLogger.logging(data["name"], "效率工具",data["tag_transport_channel"], data["video_url"],
|
|
|
+ "改造失败,片尾拼接失败", "3001", str(data))
|
|
|
return
|
|
|
pw_video_list = [video_path, pw_path]
|
|
|
video_path = FFmpeg.concatenate_videos(pw_video_list, video_path) # 视频与片尾拼接到一起
|
|
|
if not os.path.isfile(video_path) or not video_path:
|
|
|
logger.error(f"[+] {REDIS_NAME}的{data}数据合并拼接失败")
|
|
|
+ AliyunLogger.logging(data["name"], "效率工具",data["tag_transport_channel"], data["video_url"],
|
|
|
+ "改造失败,合并拼接失败", "3001", str(data))
|
|
|
+ return
|
|
|
logger.info(f"[+] {REDIS_NAME}的{data}数据合并拼接成功")
|
|
|
if data["video_share"]:
|
|
|
video_path = FFmpeg.single_video(video_path, file_path, data["video_share"])
|
|
|
if not os.path.isfile(video_path) or not video_path:
|
|
|
logger.error(f"[+] {REDIS_NAME}的{data}数据添加片中字幕失败")
|
|
|
+ AliyunLogger.logging(data["name"], "效率工具",data["tag_transport_channel"], data["video_url"],
|
|
|
+ "改造失败,添加片中字幕失败", "3001", str(data))
|
|
|
+ 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"],"效率工具", data["tag_transport_channel"], data["video_url"],
|
|
|
+ "改造失败,发送oss失败", "3001", str(data))
|
|
|
+ return
|
|
|
logger.info(f"[+] {REDIS_NAME}的{data}数据发送oss成功")
|
|
|
oss_object_key = oss_object_key.get("oss_object_key")
|
|
|
logger.info(f"[+] {REDIS_NAME}的{data}开始写入票圈")
|
|
@@ -204,11 +233,15 @@ class CarryViode:
|
|
|
n_id_list = n_ids.split(',')
|
|
|
else:
|
|
|
n_id_list = [n_ids]
|
|
|
+ pq_list = []
|
|
|
for n_id in n_id_list:
|
|
|
code = PQ.insert_piaoquantv(oss_object_key, title, n_id)
|
|
|
if not code:
|
|
|
logger.error(f"[+] {REDIS_NAME}的{data}写入票圈后台失败")
|
|
|
+ AliyunLogger.logging(data["name"], "效率工具",data["tag_transport_channel"], data["video_url"],
|
|
|
+ "改造失败,写入票圈后台失败", "3001", str(data))
|
|
|
continue
|
|
|
+ pq_list.append(code)
|
|
|
logger.info(f"[+] {REDIS_NAME}的{data}写入票圈成功,返回视频id{code}")
|
|
|
if data["transform_rule"] == '否':
|
|
|
tag_s = "搬运"
|
|
@@ -226,49 +259,55 @@ class CarryViode:
|
|
|
tag_status = Tag.video_tag(code, str(tags))
|
|
|
if tag_status == 0:
|
|
|
logger.info(f"[+] {REDIS_NAME}的{data}写入标签成功,后台视频ID为{code}")
|
|
|
- current_time = datetime.now()
|
|
|
- formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S")
|
|
|
- values = [
|
|
|
- [
|
|
|
- str(code),
|
|
|
- str(n_id),
|
|
|
- formatted_time,
|
|
|
- data["channel_mark"],
|
|
|
- data["name"],
|
|
|
- data["pq_ids"],
|
|
|
- data["pq_label"],
|
|
|
- data["activate_data"],
|
|
|
- data["video_url"],
|
|
|
- data["title_category"],
|
|
|
- data["tag_transport_channel"],
|
|
|
- data["tag_transport_scene"],
|
|
|
- data["tag_transport_keyword"],
|
|
|
- data["tag"],
|
|
|
- data["transform_rule"],
|
|
|
- data["video_share"],
|
|
|
- data["trailer_share"],
|
|
|
- data["trailer_share_audio"],
|
|
|
- data["video_clipping"],
|
|
|
- data["video_clipping_time"],
|
|
|
- data["title_transform"],
|
|
|
+ try:
|
|
|
+ current_time = datetime.now()
|
|
|
+ formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S")
|
|
|
+ values = [
|
|
|
+ [
|
|
|
+ str(code),
|
|
|
+ str(n_id),
|
|
|
+ formatted_time,
|
|
|
+ data["channel_mark"],
|
|
|
+ data["name"],
|
|
|
+ data["pq_ids"],
|
|
|
+ data["pq_label"],
|
|
|
+ data["activate_data"],
|
|
|
+ data["video_url"],
|
|
|
+ data["title_category"],
|
|
|
+ data["tag_transport_channel"],
|
|
|
+ data["tag_transport_scene"],
|
|
|
+ data["tag_transport_keyword"],
|
|
|
+ data["tag"],
|
|
|
+ data["transform_rule"],
|
|
|
+ data["video_share"],
|
|
|
+ data["trailer_share"],
|
|
|
+ data["trailer_share_audio"],
|
|
|
+ data["video_clipping"],
|
|
|
+ data["video_clipping_time"],
|
|
|
+ data["title_transform"],
|
|
|
|
|
|
+ ]
|
|
|
]
|
|
|
- ]
|
|
|
- name_to_sheet = {
|
|
|
- "范军": "276ffc",
|
|
|
- "鲁涛": "QqrKRY",
|
|
|
- "余海涛": "dTzUlI",
|
|
|
- "罗情": "8JPv9g",
|
|
|
- "刘诗雨": "HqwG0o",
|
|
|
- "张峰": "vtWvle",
|
|
|
- "周仙琴": "MWUqWt"
|
|
|
- }
|
|
|
- name = re.sub(r"\s+", "", data.get("name", ""))
|
|
|
- sheet = name_to_sheet.get(name)
|
|
|
- Feishu.insert_columns("R4dLsce8Jhz9oCtDMr9ccpFHnbI", sheet, "ROWS", 1, 2)
|
|
|
- time.sleep(0.5)
|
|
|
- Feishu.update_values("R4dLsce8Jhz9oCtDMr9ccpFHnbI", sheet, "A2:Z2", values)
|
|
|
- logger.info(f"[+] {REDIS_NAME}的{data}写入飞书成功")
|
|
|
+ name_to_sheet = {
|
|
|
+ "范军": "276ffc",
|
|
|
+ "鲁涛": "QqrKRY",
|
|
|
+ "余海涛": "dTzUlI",
|
|
|
+ "罗情": "8JPv9g",
|
|
|
+ "刘诗雨": "HqwG0o",
|
|
|
+ "张峰": "vtWvle",
|
|
|
+ "周仙琴": "MWUqWt"
|
|
|
+ }
|
|
|
+ name = re.sub(r"\s+", "", data.get("name", ""))
|
|
|
+ sheet = name_to_sheet.get(name)
|
|
|
+ Feishu.insert_columns("R4dLsce8Jhz9oCtDMr9ccpFHnbI", sheet, "ROWS", 1, 2)
|
|
|
+ time.sleep(0.5)
|
|
|
+ Feishu.update_values("R4dLsce8Jhz9oCtDMr9ccpFHnbI", sheet, "A2:Z2", values)
|
|
|
+ logger.info(f"[+] {REDIS_NAME}的{data}写入飞书成功")
|
|
|
+ except Exception as e:
|
|
|
+ logger.error(f"[+] {REDIS_NAME}的{data}写入飞书失败{e}")
|
|
|
+ pass
|
|
|
+ AliyunLogger.logging(data["name"], "效率工具",data["tag_transport_channel"], data["video_url"],
|
|
|
+ "改造成功", "1000", str(data),str(pq_list))
|
|
|
|
|
|
|
|
|
|