|  | @@ -3,8 +3,7 @@
 | 
											
												
													
														|  |  """
 |  |  """
 | 
											
												
													
														|  |  import asyncio
 |  |  import asyncio
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -from static.config import db_article
 |  | 
 | 
											
												
													
														|  | -from applications.schedule import search_videos
 |  | 
 | 
											
												
													
														|  | 
 |  | +from static.config import db_article, db_video
 | 
											
												
													
														|  |  from applications.functions.log import logging
 |  |  from applications.functions.log import logging
 | 
											
												
													
														|  |  from static.config import mysql_coroutines
 |  |  from static.config import mysql_coroutines
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -52,75 +51,66 @@ class MatchTask2(object):
 | 
											
												
													
														|  |          )
 |  |          )
 | 
											
												
													
														|  |          return task_obj_list
 |  |          return task_obj_list
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    async def get_history_contents(self, content_id):
 |  | 
 | 
											
												
													
														|  | 
 |  | +    async def get_history_videos(self, content_id):
 | 
											
												
													
														|  |          """
 |  |          """
 | 
											
												
													
														|  | -        check whether the content id exists
 |  | 
 | 
											
												
													
														|  | -        :return: trace_id or None
 |  | 
 | 
											
												
													
														|  | 
 |  | +        check whether the contents videos exists
 | 
											
												
													
														|  | 
 |  | +        :param content_id:
 | 
											
												
													
														|  | 
 |  | +        :return:
 | 
											
												
													
														|  |          """
 |  |          """
 | 
											
												
													
														|  |          select_sql = f"""
 |  |          select_sql = f"""
 | 
											
												
													
														|  | -               SELECT trace_id, content_status
 |  | 
 | 
											
												
													
														|  | -               FROM {db_article}
 |  | 
 | 
											
												
													
														|  | -               WHERE content_id = '{content_id}'
 |  | 
 | 
											
												
													
														|  | -               ORDER BY id DESC;
 |  | 
 | 
											
												
													
														|  | -           """
 |  | 
 | 
											
												
													
														|  | -        result = await self.mysql_client.async_select(select_sql)
 |  | 
 | 
											
												
													
														|  | -        if result:
 |  | 
 | 
											
												
													
														|  | -            for item in result:
 |  | 
 | 
											
												
													
														|  | -                trace_id, content_status = item
 |  | 
 | 
											
												
													
														|  | -                if content_status == 2:
 |  | 
 | 
											
												
													
														|  | -                    return trace_id
 |  | 
 | 
											
												
													
														|  | -                elif content_status == 3:
 |  | 
 | 
											
												
													
														|  | -                    update_sql = f"""
 |  | 
 | 
											
												
													
														|  | -                    UPDATE {db_article}
 |  | 
 | 
											
												
													
														|  | -                    SET content_status = 3
 |  | 
 | 
											
												
													
														|  | -                    WHERE trace_id = %s;
 |  | 
 | 
											
												
													
														|  | -                    """
 |  | 
 | 
											
												
													
														|  | -                    await self.mysql_client.async_insert(update_sql, trace_id)
 |  | 
 | 
											
												
													
														|  | -                else:
 |  | 
 | 
											
												
													
														|  | -                    continue
 |  | 
 | 
											
												
													
														|  | -            return None
 |  | 
 | 
											
												
													
														|  | 
 |  | +            SELECT video_id
 | 
											
												
													
														|  | 
 |  | +            FROM {db_video}
 | 
											
												
													
														|  | 
 |  | +            where content_id = '{content_id}' and video_status = 1 order by request_time DESC;
 | 
											
												
													
														|  | 
 |  | +        """
 | 
											
												
													
														|  | 
 |  | +        content_videos = await self.mysql_client.async_select(select_sql)
 | 
											
												
													
														|  | 
 |  | +        videos = [vid for vid in content_videos]
 | 
											
												
													
														|  | 
 |  | +        if len(videos) >= 3:
 | 
											
												
													
														|  | 
 |  | +            return videos
 | 
											
												
													
														|  |          else:
 |  |          else:
 | 
											
												
													
														|  |              return None
 |  |              return None
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    async def insert_history_contents_videos(self, history_trace_id, params):
 |  | 
 | 
											
												
													
														|  | 
 |  | +    async def use_exists_contents_videos(self, video_id_list, params):
 | 
											
												
													
														|  |          """
 |  |          """
 | 
											
												
													
														|  | -        插入历史视频id
 |  | 
 | 
											
												
													
														|  | 
 |  | +        使用已经存在的视频id
 | 
											
												
													
														|  |          :return:
 |  |          :return:
 | 
											
												
													
														|  |          """
 |  |          """
 | 
											
												
													
														|  | 
 |  | +        trace_id = params['trace_id']
 | 
											
												
													
														|  | 
 |  | +        content_id = params['content_id']
 | 
											
												
													
														|  |          select_sql = f"""
 |  |          select_sql = f"""
 | 
											
												
													
														|  | -            SELECT kimi_title, recall_video_id1, recall_video_id2, recall_video_id3
 |  | 
 | 
											
												
													
														|  | 
 |  | +            SELECT kimi_title
 | 
											
												
													
														|  |              FROM {db_article}
 |  |              FROM {db_article}
 | 
											
												
													
														|  | -            WHERE trace_id = '{history_trace_id}';
 |  | 
 | 
											
												
													
														|  | 
 |  | +            WHERE content_id = '{content_id}' and kimi_title is not null limit 1;
 | 
											
												
													
														|  |          """
 |  |          """
 | 
											
												
													
														|  |          info = await self.mysql_client.async_select(sql=select_sql)
 |  |          info = await self.mysql_client.async_select(sql=select_sql)
 | 
											
												
													
														|  | -        kimi_title, vid1, vid2, vid3 = info[0]
 |  | 
 | 
											
												
													
														|  | 
 |  | +        kimi_title = info[0]
 | 
											
												
													
														|  |          update_sql = f"""
 |  |          update_sql = f"""
 | 
											
												
													
														|  | -        UPDATE {db_article}
 |  | 
 | 
											
												
													
														|  | -        SET 
 |  | 
 | 
											
												
													
														|  | -            kimi_title=%s,
 |  | 
 | 
											
												
													
														|  | -            recall_video_id1=%s, 
 |  | 
 | 
											
												
													
														|  | -            recall_video_id2=%s, 
 |  | 
 | 
											
												
													
														|  | -            recall_video_id3=%s,
 |  | 
 | 
											
												
													
														|  | -            content_status=%s,
 |  | 
 | 
											
												
													
														|  | -            process_times = %s
 |  | 
 | 
											
												
													
														|  | -        WHERE  trace_id = %s;
 |  | 
 | 
											
												
													
														|  | 
 |  | +            UPDATE {db_article}
 | 
											
												
													
														|  | 
 |  | +            SET 
 | 
											
												
													
														|  | 
 |  | +                kimi_title=%s,
 | 
											
												
													
														|  | 
 |  | +                recall_video_id1=%s, 
 | 
											
												
													
														|  | 
 |  | +                recall_video_id2=%s, 
 | 
											
												
													
														|  | 
 |  | +                recall_video_id3=%s,
 | 
											
												
													
														|  | 
 |  | +                content_status=%s,
 | 
											
												
													
														|  | 
 |  | +                process_times = %s
 | 
											
												
													
														|  | 
 |  | +            WHERE  trace_id = %s
 | 
											
												
													
														|  |          """
 |  |          """
 | 
											
												
													
														|  | 
 |  | +        vid1, vid2, vid3 = video_id_list[0], video_id_list[1], video_id_list[2]
 | 
											
												
													
														|  |          await self.mysql_client.async_insert(
 |  |          await self.mysql_client.async_insert(
 | 
											
												
													
														|  | -            update_sql,
 |  | 
 | 
											
												
													
														|  | 
 |  | +            sql=update_sql,
 | 
											
												
													
														|  |              params=(
 |  |              params=(
 | 
											
												
													
														|  |                  kimi_title,
 |  |                  kimi_title,
 | 
											
												
													
														|  | -                vid1,
 |  | 
 | 
											
												
													
														|  | -                {"NULL" if vid2 is None else vid2},
 |  | 
 | 
											
												
													
														|  | -                {"NULL" if vid2 is None else vid3},
 |  | 
 | 
											
												
													
														|  | 
 |  | +                video_id_list[0],
 | 
											
												
													
														|  | 
 |  | +                "NULL" if vid2 is None else vid2,
 | 
											
												
													
														|  | 
 |  | +                "NULL" if vid3 is None else vid3,
 | 
											
												
													
														|  |                  2,
 |  |                  2,
 | 
											
												
													
														|  |                  int(params['process_times']) + 1,
 |  |                  int(params['process_times']) + 1,
 | 
											
												
													
														|  | -                params['trace_id']
 |  | 
 | 
											
												
													
														|  | 
 |  | +                trace_id
 | 
											
												
													
														|  |              )
 |  |              )
 | 
											
												
													
														|  |          )
 |  |          )
 | 
											
												
													
														|  |          logging(
 |  |          logging(
 | 
											
												
													
														|  |              code="9002",
 |  |              code="9002",
 | 
											
												
													
														|  | -            info="已从历史文章更新,历史id: {}".format(history_trace_id),
 |  | 
 | 
											
												
													
														|  | -            trace_id=params['trace_id']
 |  | 
 | 
											
												
													
														|  | 
 |  | +            info="已从历史文章更新,文章id: {}".format(content_id),
 | 
											
												
													
														|  | 
 |  | +            trace_id=trace_id
 | 
											
												
													
														|  |          )
 |  |          )
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      async def process_video_id(self, title, trace_id, process_times):
 |  |      async def process_video_id(self, title, trace_id, process_times):
 | 
											
										
											
												
													
														|  | @@ -143,104 +133,6 @@ class MatchTask2(object):
 | 
											
												
													
														|  |              params=(video_id, 2, int(process_times) + 1, trace_id)
 |  |              params=(video_id, 2, int(process_times) + 1, trace_id)
 | 
											
												
													
														|  |          )
 |  |          )
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    async def start_process(self, params):
 |  | 
 | 
											
												
													
														|  | -        """
 |  | 
 | 
											
												
													
														|  | -        开始处理
 |  | 
 | 
											
												
													
														|  | -        :param params:
 |  | 
 | 
											
												
													
														|  | -        :return:
 |  | 
 | 
											
												
													
														|  | -        """
 |  | 
 | 
											
												
													
														|  | -        # 更新文章contentId为1, 说明该文章正在处理中
 |  | 
 | 
											
												
													
														|  | -        update_sql = f"""
 |  | 
 | 
											
												
													
														|  | -            UPDATE {db_article}
 |  | 
 | 
											
												
													
														|  | -            SET 
 |  | 
 | 
											
												
													
														|  | -                content_status = %s
 |  | 
 | 
											
												
													
														|  | -            WHERE 
 |  | 
 | 
											
												
													
														|  | -                trace_id = %s;
 |  | 
 | 
											
												
													
														|  | -        """
 |  | 
 | 
											
												
													
														|  | -        await self.mysql_client.async_insert(
 |  | 
 | 
											
												
													
														|  | -            sql=update_sql,
 |  | 
 | 
											
												
													
														|  | -            params=(1, params['trace_id'])
 |  | 
 | 
											
												
													
														|  | -        )
 |  | 
 | 
											
												
													
														|  | -        try:
 |  | 
 | 
											
												
													
														|  | -            # 判断标题中是否包含video_id
 |  | 
 | 
											
												
													
														|  | -            if "video_id=" in params['title']:
 |  | 
 | 
											
												
													
														|  | -                logging(
 |  | 
 | 
											
												
													
														|  | -                    code="9006",
 |  | 
 | 
											
												
													
														|  | -                    info="视频生成文本测试",
 |  | 
 | 
											
												
													
														|  | -                    trace_id=params['trace_id']
 |  | 
 | 
											
												
													
														|  | -                )
 |  | 
 | 
											
												
													
														|  | -                await self.process_video_id(
 |  | 
 | 
											
												
													
														|  | -                    title=params['title'],
 |  | 
 | 
											
												
													
														|  | -                    trace_id=params['trace_id'],
 |  | 
 | 
											
												
													
														|  | -                    process_times=params['process_times']
 |  | 
 | 
											
												
													
														|  | -                )
 |  | 
 | 
											
												
													
														|  | -            else:
 |  | 
 | 
											
												
													
														|  | -                await search_videos(
 |  | 
 | 
											
												
													
														|  | -                    params={"title": params['title'], "content": params['text'], "trace_id": params['trace_id']},
 |  | 
 | 
											
												
													
														|  | -                    trace_id=params['trace_id'],
 |  | 
 | 
											
												
													
														|  | -                    gh_id=params['gh_id'],
 |  | 
 | 
											
												
													
														|  | -                    mysql_client=self.mysql_client
 |  | 
 | 
											
												
													
														|  | -                )
 |  | 
 | 
											
												
													
														|  | -                # 执行完成之后,判断是否存在视频id
 |  | 
 | 
											
												
													
														|  | -                select_sql = f"""
 |  | 
 | 
											
												
													
														|  | -                    SELECT recall_video_id1, recall_video_id2, recall_video_id3
 |  | 
 | 
											
												
													
														|  | -                    FROM {db_article}
 |  | 
 | 
											
												
													
														|  | -                    WHERE trace_id = '{params["trace_id"]}';
 |  | 
 | 
											
												
													
														|  | -                """
 |  | 
 | 
											
												
													
														|  | -                result = await self.mysql_client.async_select(sql=select_sql)
 |  | 
 | 
											
												
													
														|  | -                vid1, vid2, vid3 = result[0]
 |  | 
 | 
											
												
													
														|  | -                if vid1:
 |  | 
 | 
											
												
													
														|  | -                    update_sql2 = f"""
 |  | 
 | 
											
												
													
														|  | -                        UPDATE {db_article}
 |  | 
 | 
											
												
													
														|  | -                        SET 
 |  | 
 | 
											
												
													
														|  | -                           content_status = %s,
 |  | 
 | 
											
												
													
														|  | -                           process_times = %s
 |  | 
 | 
											
												
													
														|  | -                           WHERE trace_id = %s;
 |  | 
 | 
											
												
													
														|  | -                    """
 |  | 
 | 
											
												
													
														|  | -                    await self.mysql_client.async_insert(
 |  | 
 | 
											
												
													
														|  | -                        sql=update_sql2,
 |  | 
 | 
											
												
													
														|  | -                        params=(2, int(params['process_times']) + 1, params['trace_id'])
 |  | 
 | 
											
												
													
														|  | -                    )
 |  | 
 | 
											
												
													
														|  | -                    logging(
 |  | 
 | 
											
												
													
														|  | -                        code="9008",
 |  | 
 | 
											
												
													
														|  | -                        info="视频搜索成功, 状态修改为2",
 |  | 
 | 
											
												
													
														|  | -                        trace_id=params['trace_id']
 |  | 
 | 
											
												
													
														|  | -                    )
 |  | 
 | 
											
												
													
														|  | -                else:
 |  | 
 | 
											
												
													
														|  | -                    update_sql3 = f"""
 |  | 
 | 
											
												
													
														|  | -                        UPDATE {db_article}
 |  | 
 | 
											
												
													
														|  | -                        SET 
 |  | 
 | 
											
												
													
														|  | -                           content_status = %s,
 |  | 
 | 
											
												
													
														|  | -                           process_times = %s
 |  | 
 | 
											
												
													
														|  | -                        WHERE trace_id = %s;
 |  | 
 | 
											
												
													
														|  | -                    """
 |  | 
 | 
											
												
													
														|  | -                    await self.mysql_client.async_insert(
 |  | 
 | 
											
												
													
														|  | -                        sql=update_sql3,
 |  | 
 | 
											
												
													
														|  | -                        params=(0, int(params['process_times']) + 1, params["trace_id"])
 |  | 
 | 
											
												
													
														|  | -                    )
 |  | 
 | 
											
												
													
														|  | -                    logging(
 |  | 
 | 
											
												
													
														|  | -                        code="9018",
 |  | 
 | 
											
												
													
														|  | -                        info="视频搜索失败,回退状态为0",
 |  | 
 | 
											
												
													
														|  | -                        trace_id=params['trace_id']
 |  | 
 | 
											
												
													
														|  | -                    )
 |  | 
 | 
											
												
													
														|  | -        except Exception as e:
 |  | 
 | 
											
												
													
														|  | -            logging(
 |  | 
 | 
											
												
													
														|  | -                code="9018",
 |  | 
 | 
											
												
													
														|  | -                info="{}异常错误:{}, 回退状态为0".format(params['trace_id'], e),
 |  | 
 | 
											
												
													
														|  | -                trace_id=params['trace_id']
 |  | 
 | 
											
												
													
														|  | -            )
 |  | 
 | 
											
												
													
														|  | -            update_sql4 = f"""
 |  | 
 | 
											
												
													
														|  | -                UPDATE {db_article}
 |  | 
 | 
											
												
													
														|  | -                SET 
 |  | 
 | 
											
												
													
														|  | -                   content_status = %s,
 |  | 
 | 
											
												
													
														|  | -                   process_times = %s
 |  | 
 | 
											
												
													
														|  | -                WHERE trace_id = %s;
 |  | 
 | 
											
												
													
														|  | -            """
 |  | 
 | 
											
												
													
														|  | -            await self.mysql_client.async_insert(
 |  | 
 | 
											
												
													
														|  | -                sql=update_sql4,
 |  | 
 | 
											
												
													
														|  | -                params=(0, int(params['process_times']) + 1, params["trace_id"])
 |  | 
 | 
											
												
													
														|  | -            )
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |      async def process_task(self, params):
 |  |      async def process_task(self, params):
 | 
											
												
													
														|  |          """
 |  |          """
 | 
											
												
													
														|  |          异步执行
 |  |          异步执行
 | 
											
										
											
												
													
														|  | @@ -249,24 +141,18 @@ class MatchTask2(object):
 | 
											
												
													
														|  |          """
 |  |          """
 | 
											
												
													
														|  |          content_id = params['content_id']
 |  |          content_id = params['content_id']
 | 
											
												
													
														|  |          trace_id = params['trace_id']
 |  |          trace_id = params['trace_id']
 | 
											
												
													
														|  | -        # 判断该文章是否已经生成了
 |  | 
 | 
											
												
													
														|  | -        history_trace_id = await self.get_history_contents(content_id)
 |  | 
 | 
											
												
													
														|  | -        if history_trace_id:
 |  | 
 | 
											
												
													
														|  | 
 |  | +        # 判断该篇文章是否存在未下架的视频,且判断是否有3条, 如果没有三条,则启动新抓取任务,后续优化点
 | 
											
												
													
														|  | 
 |  | +        video_id_list = await self.get_history_videos(content_id=content_id)
 | 
											
												
													
														|  | 
 |  | +        if video_id_list:
 | 
											
												
													
														|  |              # 说明已经存在了结果, 将该条记录下的video_id拿出来
 |  |              # 说明已经存在了结果, 将该条记录下的video_id拿出来
 | 
											
												
													
														|  |              logging(
 |  |              logging(
 | 
											
												
													
														|  |                  code="9001",
 |  |                  code="9001",
 | 
											
												
													
														|  |                  info="存在历史文章",
 |  |                  info="存在历史文章",
 | 
											
												
													
														|  | -                trace_id=trace_id,
 |  | 
 | 
											
												
													
														|  | -                function="find_history_article"
 |  | 
 | 
											
												
													
														|  | 
 |  | +                trace_id=trace_id
 | 
											
												
													
														|  |              )
 |  |              )
 | 
											
												
													
														|  | -            await self.insert_history_contents_videos(history_trace_id, params)
 |  | 
 | 
											
												
													
														|  | 
 |  | +            await self.use_exists_contents_videos(video_id_list=video_id_list, params=params)
 | 
											
												
													
														|  |          else:
 |  |          else:
 | 
											
												
													
														|  | -            logging(
 |  | 
 | 
											
												
													
														|  | -                code="9003",
 |  | 
 | 
											
												
													
														|  | -                info="未找到历史文章",
 |  | 
 | 
											
												
													
														|  | -                trace_id=trace_id,
 |  | 
 | 
											
												
													
														|  | -                function="find_history_article"
 |  | 
 | 
											
												
													
														|  | -            )
 |  | 
 | 
											
												
													
														|  | 
 |  | +            pass
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      async def deal(self):
 |  |      async def deal(self):
 | 
											
												
													
														|  |          """
 |  |          """
 |