123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- from common import Feishu
- from common.aliyun_log import AliyunLogger
- from common.cover_gpt4o import CoverAnalyzer
- from common.pq_cover import PQ
- from common.redis import insert_pq_data
- from common.sql_help import sqlCollect
- import time
- import random
- class CoverMethod:
- @staticmethod
- def cover_data_dispose(data_list):
- valid_records = [record for record in data_list if record['cover_sum'] > 0]
- if valid_records:
- # 获取最高的cover_sum
- highest_sum = max( record['cover_sum'] for record in valid_records )
- # 获取所有cover_sum等于最高分数的记录
- candidates = [record for record in valid_records if record['cover_sum'] == highest_sum]
- # 随机选择一个
- selected_record = random.choice(candidates)
- highest_cover_url = selected_record['cover_url']
- highest_cover_sum = selected_record['cover_sum']
- return highest_cover_url, highest_cover_sum
- else:
- return None, 0
- @staticmethod
- def cover_method(video_id):
- print( f"开始处理:{video_id}" )
- video_id_status = sqlCollect.select_video_cover_method(video_id) # 判断该视频id是否处理过
- if video_id_status:
- AliyunLogger.logging(video_id, "重复视频ID,不做封面处理", "2001")
- text = (
- f"**通知类型**: 重复视频ID,不做封面处理\n"
- f"**站内视频ID链接**: https://admin.piaoquantv.com/cms/post-detail/{video_id}/detail\n"
- )
- Feishu.finish_bot( text,
- "https://open.feishu.cn/open-apis/bot/v2/hook/63745308-c53e-4030-90b9-77383b057252",
- "【 封面修改通知 】" )
- return
- cover_list = PQ.get_pq_all_cover(video_id) # 获取所有封面
- if cover_list:
- print( f"{video_id}获取封面成功,共{len(cover_list)}条")
- # gpt 评分
- start_time = time.time()
- cover_all_data = CoverAnalyzer.cover_list_data(cover_list)
- if not cover_all_data:
- AliyunLogger.logging( video_id, "GPT评分失败", "3002", cover_all_data)
- insert_pq_data( [video_id] )
- return
- end_time = time.time()
- execution_time = end_time - start_time
- print(f"代码运行时间: {execution_time:.4f} 秒")
- highest_cover_url, highest_cover_sum = CoverMethod.cover_data_dispose(cover_all_data) # 获取分数最高的视频封面
- print(f"最高分封面{highest_cover_url},分数{highest_cover_sum}")
- if not highest_cover_url or highest_cover_sum == 0:
- AliyunLogger.logging( video_id, "视频封面分数都为0,不做封面更改", "2002", cover_all_data)
- text = (
- f"**通知类型**: 视频封面分数都为0,不做封面更改\n"
- f"**站内视频ID链接**: https://admin.piaoquantv.com/cms/post-detail/{video_id}/detail\n"
- )
- Feishu.finish_bot( text,
- "https://open.feishu.cn/open-apis/bot/v2/hook/63745308-c53e-4030-90b9-77383b057252",
- "【 封面修改通知 】" )
- return
- cover_id, old_cover_url = PQ.get_pq_cover_id(video_id) # 获取原封面 和 封面ID
- if not cover_id:
- AliyunLogger.logging( video_id, "获取视频原封面和封面ID失败", "3002", cover_all_data, old_cover_url, highest_cover_url)
- insert_pq_data( [video_id] )
- return
- print( f"{video_id}获取原封面 和 封面ID成功")
- old_cover_data = CoverAnalyzer.cover_list_data([old_cover_url])
- if not old_cover_data:
- old_cover_sum = 0
- else:
- old_cover_url, old_cover_sum = CoverMethod.cover_data_dispose( old_cover_data )
- if highest_cover_url == old_cover_url:
- AliyunLogger.logging( video_id, "原封面与新封面一致,不做封面修改", "2003", cover_all_data, old_cover_url,
- highest_cover_url )
- text = (
- f"**通知类型**: 原封面与新封面一致,不做封面修改\n"
- f"**站内视频ID链接**: https://admin.piaoquantv.com/cms/post-detail/{video_id}/detail\n"
- f"**原视频封面链接**: {old_cover_url}\n"
- f"**原视频封面分数**: {old_cover_sum}\n"
- f"**新视频封面链接**: {highest_cover_url}\n"
- f"**新视频封面分数**: {highest_cover_sum}\n"
- )
- Feishu.finish_bot( text,
- "https://open.feishu.cn/open-apis/bot/v2/hook/63745308-c53e-4030-90b9-77383b057252",
- "【 封面修改通知 】" )
- return
- if int(highest_cover_sum) < int(old_cover_sum):
- text = (
- f"**通知类型**: 原封面分数比新封面分数高,不做封面修改\n"
- f"**站内视频ID链接**: https://admin.piaoquantv.com/cms/post-detail/{video_id}/detail\n"
- f"**原视频封面链接**: {old_cover_url}\n"
- f"**原视频封面分数**: {old_cover_sum}\n"
- f"**新视频封面链接**: {highest_cover_url}\n"
- f"**新视频封面分数**: {highest_cover_sum}\n"
- )
- Feishu.finish_bot( text,
- "https://open.feishu.cn/open-apis/bot/v2/hook/63745308-c53e-4030-90b9-77383b057252",
- "【 封面修改通知 】" )
- return
- code = PQ.update_pq_video_cover(video_id, highest_cover_url, cover_id) # 修改封面
- print(f"修改封面成功{video_id}")
- if code == 0:
- AliyunLogger.logging( video_id, "修改封面成功", "1000", cover_all_data, old_cover_url, highest_cover_url)
- text = (
- f"**通知类型**: 视频封面修改成功\n"
- f"**站内视频ID链接**: https://admin.piaoquantv.com/cms/post-detail/{video_id}/detail\n"
- f"**原视频封面链接**: {old_cover_url}\n"
- f"**原视频封面分数**: {old_cover_sum}\n"
- f"**新视频封面链接**: {highest_cover_url}\n"
- f"**新视频封面分数**: {highest_cover_sum}\n"
- )
- Feishu.finish_bot( text,
- "https://open.feishu.cn/open-apis/bot/v2/hook/63745308-c53e-4030-90b9-77383b057252",
- "【 封面修改通知 】" )
- sqlCollect.insert_video_cover_method(video_id, cover_id, old_cover_url, highest_cover_url)
- return
- else:
- text = (
- f"**通知类型**: 视频封面修改失败\n"
- f"**站内视频ID链接**: https://admin.piaoquantv.com/cms/post-detail/{video_id}/detail\n"
- f"**原视频封面链接**: {old_cover_url}\n"
- f"**原视频封面分数**: {old_cover_sum}\n"
- f"**新视频封面链接**: {highest_cover_url}\n"
- f"**新视频封面分数**: {highest_cover_sum}\n"
- )
- Feishu.finish_bot( text,
- "https://open.feishu.cn/open-apis/bot/v2/hook/63745308-c53e-4030-90b9-77383b057252",
- "【 封面修改通知 】" )
- AliyunLogger.logging( video_id, "修改视频封面失败", "3003", cover_all_data, old_cover_url, highest_cover_url)
- insert_pq_data( [video_id] )
- else:
- AliyunLogger.logging(video_id, "没有获取到封面", "3001")
- text = (
- f"**通知类型**: 没有获取到封面\n"
- f"**站内视频ID链接**: https://admin.piaoquantv.com/cms/post-detail/{video_id}/detail\n"
- )
- Feishu.finish_bot( text,
- "https://open.feishu.cn/open-apis/bot/v2/hook/63745308-c53e-4030-90b9-77383b057252",
- "【 封面修改通知 】" )
- print(f"{video_id}没有获取到封面")
- return
- if __name__ == '__main__':
- CoverMethod.cover_method("30496823")
|