|
@@ -35,7 +35,7 @@ CACHE_DIR = '/app/cache/'
|
|
|
# CACHE_DIR = '/Users/z/Downloads/'
|
|
|
class ConsumptionRecommend(object):
|
|
|
@classmethod
|
|
|
- def insert_pq(cls, data, oss_object_key, title, tags, tag_transport_channel, channel_mark, task_mark):
|
|
|
+ def insert_pq(cls, data, oss_object_key, title, tags, tag_transport_channel, channel_mark, task_mark, dt):
|
|
|
logger.info(f"[+] 开始写入票圈")
|
|
|
n_ids = str(data["pq_ids"])
|
|
|
if ',' in n_ids:
|
|
@@ -44,39 +44,43 @@ class ConsumptionRecommend(object):
|
|
|
n_id_list = [n_ids]
|
|
|
pq_list = []
|
|
|
for n_id in n_id_list:
|
|
|
- code = PQ.insert_piaoquantv(oss_object_key, title, n_id, None)
|
|
|
- if not code:
|
|
|
+ pq_vid, pq_uid = PQ.insert_piaoquantv(oss_object_key, title, n_id, None, can_search=False)
|
|
|
+ if not pq_vid:
|
|
|
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"**失败信息**: 视频写入票圈后台失败,视频ID{code}\n"
|
|
|
+ f"**失败信息**: 视频写入票圈后台失败,视频ID{pq_vid}\n"
|
|
|
)
|
|
|
Feishu.finish_bot(text,
|
|
|
"https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
|
|
|
"【 搬运&改造效率工具失败通知 】")
|
|
|
continue
|
|
|
|
|
|
- pq_list.append(code)
|
|
|
- logger.info(f"[+] 写入票圈成功,返回视频id{code}")
|
|
|
- tag_status = Tag.video_tag(code, str(tags))
|
|
|
+ pq_list.append(pq_vid)
|
|
|
+ logger.info(f"[+] 写入票圈成功,返回视频id{pq_vid}")
|
|
|
+
|
|
|
+ key = orjson.dumps({'pq_vid': str(pq_vid), 'pq_uid': str(pq_uid)}).decode()
|
|
|
+ RedisHelper().get_client().zadd('task:carry_data_redis_finish', {key: dt})
|
|
|
+
|
|
|
+ tag_status = Tag.video_tag(pq_vid, str(tags))
|
|
|
if tag_status == 0:
|
|
|
- logger.info(f"[+] 写入标签成功,后台视频ID为{code}")
|
|
|
+ logger.info(f"[+] 写入标签成功,后台视频ID为{pq_vid}")
|
|
|
try:
|
|
|
current_time = datetime.now()
|
|
|
formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S")
|
|
|
sqlCollect.insert_machine_making_data(data["name"], task_mark, tag_transport_channel,
|
|
|
data["video_url"], data["video_url"], data["pq_ids"],
|
|
|
data["title_category"],
|
|
|
- code,
|
|
|
+ pq_vid,
|
|
|
formatted_time, data["title_category"], oss_object_key)
|
|
|
- pq_url = f'https://admin.piaoquantv.com/cms/post-detail/{code}/detail' # 站内视频链接
|
|
|
+ pq_url = f'https://admin.piaoquantv.com/cms/post-detail/{pq_vid}/detail' # 站内视频链接
|
|
|
|
|
|
values = [
|
|
|
[
|
|
|
- str(code),
|
|
|
+ str(pq_vid),
|
|
|
str(n_id),
|
|
|
formatted_time,
|
|
|
channel_mark,
|
|
@@ -127,10 +131,10 @@ class ConsumptionRecommend(object):
|
|
|
return
|
|
|
|
|
|
@classmethod
|
|
|
- def data_handle(cls, data, file_path, redis_name,studio_key):
|
|
|
+ def data_handle(cls, data, dt, 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))
|
|
|
+ RedisHelper().get_client().zadd(redis_name, {json.dumps(data, ensure_ascii=False): dt})
|
|
|
text = (
|
|
|
f"**负责人**: {data['name']}\n"
|
|
|
f"**内容**: {data}\n"
|
|
@@ -159,7 +163,7 @@ class ConsumptionRecommend(object):
|
|
|
logger.info(f"[处理] {url}开始下载视频")
|
|
|
video_path = DownLoad.download_video(url, file_path, tag_transport_channel, video_id)
|
|
|
if not os.path.exists(video_path) or os.path.getsize(video_path) == 0:
|
|
|
- RedisHelper().get_client().rpush(redis_name, json.dumps(data))
|
|
|
+ RedisHelper().get_client().zadd(redis_name, {json.dumps(data, ensure_ascii=False): dt})
|
|
|
logger.error(f"[处理] {url}下载失败")
|
|
|
AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
|
|
|
"视频下载失败等待重新处理", "3002", str(data))
|
|
@@ -202,7 +206,7 @@ class ConsumptionRecommend(object):
|
|
|
data['tag']
|
|
|
]))
|
|
|
cls.insert_pq(data, oss_object_key, title, tags, tag_transport_channel, channel_mark,
|
|
|
- "搬运工具")
|
|
|
+ "搬运工具", dt)
|
|
|
if data["transform_rule"] == "仅改造" or data["transform_rule"] == "是":
|
|
|
try:
|
|
|
width, height = FFmpeg.get_w_h_size(video_path)
|
|
@@ -211,7 +215,7 @@ class ConsumptionRecommend(object):
|
|
|
logger.info(f"[处理] 视频更改分辨率处理")
|
|
|
video_path = FFmpeg.video_640(video_path, file_path)
|
|
|
if not os.path.exists(video_path) or os.path.getsize(video_path) == 0:
|
|
|
- RedisHelper().get_client().rpush(redis_name, json.dumps(data))
|
|
|
+ RedisHelper().get_client().zadd(redis_name, {json.dumps(data, ensure_ascii=False): dt})
|
|
|
logger.error(f"[处理] 视频更改分辨率失败")
|
|
|
AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
|
|
|
"改造失败,片尾拼接失败", "3001", str(data))
|
|
@@ -234,7 +238,7 @@ class ConsumptionRecommend(object):
|
|
|
if not video_text:
|
|
|
logger.error(f"[处理] 视频内容分析获取内容信息失败")
|
|
|
data["transform_rule"] = "仅改造"
|
|
|
- RedisHelper().get_client().rpush(redis_name, json.dumps(data))
|
|
|
+ RedisHelper().get_client().zadd(redis_name, {json.dumps(data, ensure_ascii=False): dt})
|
|
|
AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
|
|
|
"改造失败,视频内容分析获取内容信息失败", "3001", str(data))
|
|
|
text = (
|
|
@@ -264,7 +268,7 @@ class ConsumptionRecommend(object):
|
|
|
if not pw_url:
|
|
|
logger.error(f"[处理] 数据片尾获取失败")
|
|
|
data["transform_rule"] = "仅改造"
|
|
|
- RedisHelper().get_client().rpush(redis_name, json.dumps(data))
|
|
|
+ RedisHelper().get_client().zadd(redis_name, {json.dumps(data, ensure_ascii=False): dt})
|
|
|
AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
|
|
|
"改造失败,片尾获取失败", "3001", str(data))
|
|
|
text = (
|
|
@@ -280,7 +284,7 @@ class ConsumptionRecommend(object):
|
|
|
pw_srt = TTS.getSrt(pw_url)
|
|
|
if not pw_srt:
|
|
|
data["transform_rule"] = "仅改造"
|
|
|
- RedisHelper().get_client().rpush(redis_name, json.dumps(data))
|
|
|
+ RedisHelper().get_client().zadd(redis_name, {json.dumps(data, ensure_ascii=False): dt})
|
|
|
logger.error(f"[处理] 数据片尾音频srt获取失败")
|
|
|
AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
|
|
|
"改造失败,片尾音频下载失败", "3001", str(data))
|
|
@@ -296,7 +300,7 @@ class ConsumptionRecommend(object):
|
|
|
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))
|
|
|
+ RedisHelper().get_client().zadd(redis_name, {json.dumps(data, ensure_ascii=False): dt})
|
|
|
logger.error(f"[处理] 数据片尾音频下载失败")
|
|
|
AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
|
|
|
"改造失败,片尾音频下载失败", "3001", str(data))
|
|
@@ -336,7 +340,7 @@ class ConsumptionRecommend(object):
|
|
|
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))
|
|
|
+ RedisHelper().get_client().zadd(redis_name, {json.dumps(data, ensure_ascii=False): dt})
|
|
|
logger.error(f"[处理] 数据片尾获取最后一帧失败")
|
|
|
AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
|
|
|
"改造失败,获取最后一帧失败", "3001", str(data))
|
|
@@ -355,7 +359,7 @@ class ConsumptionRecommend(object):
|
|
|
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))
|
|
|
+ RedisHelper().get_client().zadd(redis_name, {json.dumps(data, ensure_ascii=False): dt})
|
|
|
logger.error(f"[处理] 数据片尾拼接失败")
|
|
|
AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
|
|
|
"改造失败,片尾拼接失败", "3001", str(data))
|
|
@@ -375,7 +379,7 @@ class ConsumptionRecommend(object):
|
|
|
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))
|
|
|
+ RedisHelper().get_client().zadd(redis_name, {json.dumps(data, ensure_ascii=False): dt})
|
|
|
logger.error(f"[处理] 数据片尾获取最后一帧失败")
|
|
|
AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
|
|
|
"改造失败,获取最后一帧失败", "3001", str(data))
|
|
@@ -392,7 +396,7 @@ class ConsumptionRecommend(object):
|
|
|
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))
|
|
|
+ RedisHelper().get_client().zadd(redis_name, {json.dumps(data, ensure_ascii=False): dt})
|
|
|
logger.error(f"[处理] 数据片尾拼接失败")
|
|
|
AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
|
|
|
"改造失败,片尾拼接失败", "3001", str(data))
|
|
@@ -423,7 +427,7 @@ class ConsumptionRecommend(object):
|
|
|
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))
|
|
|
+ RedisHelper().get_client().zadd(redis_name, {json.dumps(data, ensure_ascii=False): dt})
|
|
|
logger.error(f"[处理] 数据添加片中字幕失败")
|
|
|
AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
|
|
|
"改造失败,添加片中字幕失败", "3001", str(data))
|
|
@@ -452,11 +456,11 @@ class ConsumptionRecommend(object):
|
|
|
data['tag']
|
|
|
]))
|
|
|
cls.insert_pq(data, oss_object_key, title, tags, tag_transport_channel, channel_mark,
|
|
|
- "搬运改造")
|
|
|
+ "搬运改造", dt)
|
|
|
return
|
|
|
except Exception as e:
|
|
|
data["transform_rule"] = "仅改造"
|
|
|
- RedisHelper().get_client().rpush(redis_name, json.dumps(data))
|
|
|
+ RedisHelper().get_client().zadd(redis_name, {json.dumps(data, ensure_ascii=False): dt})
|
|
|
logger.error(f"[+] 视频改造失败{e}")
|
|
|
text = (
|
|
|
f"**负责人**: {data['name']}\n"
|
|
@@ -478,13 +482,13 @@ class ConsumptionRecommend(object):
|
|
|
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)
|
|
|
+ data = RedisHelper().get_client().zpopmin(name=redis_name, count=1)
|
|
|
if not data:
|
|
|
logger.info('[处理] 无待执行的扫描任务')
|
|
|
return
|
|
|
- data = orjson.loads(data)
|
|
|
+ data, dt = orjson.loads(data[0][0]), int(data[0][1])
|
|
|
try:
|
|
|
- cls.data_handle(data, file_path, redis_name,studio_key)
|
|
|
+ cls.data_handle(data, dt, file_path, redis_name,studio_key)
|
|
|
for filename in os.listdir(CACHE_DIR):
|
|
|
# 检查文件名是否包含关键字
|
|
|
if uid in filename:
|
|
@@ -497,7 +501,7 @@ class ConsumptionRecommend(object):
|
|
|
logger.error(f"删除文件时出错: {file_path}, 错误: {e}")
|
|
|
return
|
|
|
except Exception as e:
|
|
|
- RedisHelper().get_client().rpush(redis_name, json.dumps(data))
|
|
|
+ RedisHelper().get_client().zadd(redis_name, {json.dumps(data, ensure_ascii=False): dt})
|
|
|
for filename in os.listdir(CACHE_DIR):
|
|
|
# 检查文件名是否包含关键字
|
|
|
if uid in filename:
|