|
@@ -1,216 +0,0 @@
|
|
|
-"""
|
|
|
-@author: luojunhui
|
|
|
-"""
|
|
|
-import time
|
|
|
-import asyncio
|
|
|
-
|
|
|
-from uuid import uuid4
|
|
|
-
|
|
|
-from applications.functions.log import logging
|
|
|
-from applications.static.config import db_article
|
|
|
-from applications.schedule import search_videos
|
|
|
-
|
|
|
-
|
|
|
-class SearchDeal(object):
|
|
|
- """
|
|
|
- 搜索接口处理逻辑
|
|
|
- """
|
|
|
-
|
|
|
- def __init__(self, params, mysql_client):
|
|
|
- self.content_id = None
|
|
|
- self.account_name = None
|
|
|
- self.contents = None
|
|
|
- self.title = None
|
|
|
- self.gh_id = None
|
|
|
- self.params = params
|
|
|
- self.mysql_client = mysql_client
|
|
|
- self.trace_id = "search-{}-{}".format(str(uuid4()), str(int(time.time())))
|
|
|
-
|
|
|
- def check_params(self):
|
|
|
- """
|
|
|
- 检查请求params
|
|
|
- :return:
|
|
|
- """
|
|
|
- try:
|
|
|
- self.gh_id = self.params['ghId']
|
|
|
- self.title = self.params['title'].split("@@")[-1].replace("'", "")
|
|
|
- self.contents = self.params['content'].replace("'", "")
|
|
|
- self.account_name = self.params['accountName'].replace("'", "")
|
|
|
- self.content_id = self.params['articleId']
|
|
|
- logging(
|
|
|
- code="1001",
|
|
|
- info="搜索视频内容接口请求成功, 参数校验成功",
|
|
|
- port="title_to_search",
|
|
|
- trace_id=self.trace_id,
|
|
|
- data=self.params
|
|
|
- )
|
|
|
- return None
|
|
|
- except Exception as e:
|
|
|
- result = {
|
|
|
- "status": "fail",
|
|
|
- "code": 1,
|
|
|
- "message": str(e),
|
|
|
- "info": "params check error"
|
|
|
- }
|
|
|
- logging(
|
|
|
- code="4001",
|
|
|
- info="搜索视频内容接口请求成功, 参数校验失败",
|
|
|
- port="title_to_search",
|
|
|
- trace_id=self.trace_id,
|
|
|
- data=self.params
|
|
|
- )
|
|
|
- return result
|
|
|
-
|
|
|
- async def record(self):
|
|
|
- """
|
|
|
- 把数据插入
|
|
|
- :return:
|
|
|
- """
|
|
|
- insert_sql = f"""
|
|
|
- INSERT INTO {db_article}
|
|
|
- (trace_id, gh_id, article_title, article_text, account_name, content_id)
|
|
|
- VALUES
|
|
|
- (%s, %s, %s, %s, %s, %s);
|
|
|
- """
|
|
|
- await self.mysql_client.async_insert(
|
|
|
- sql=insert_sql,
|
|
|
- params=(self.trace_id, self.gh_id, self.title, self.contents, self.account_name, self.content_id)
|
|
|
- )
|
|
|
- logging(
|
|
|
- code="1002",
|
|
|
- info="成功记录请求数据到mysql中",
|
|
|
- trace_id=self.trace_id
|
|
|
- )
|
|
|
-
|
|
|
- async def process_video_id(self):
|
|
|
- """
|
|
|
- 如果video_id在标题中,则做特殊处理
|
|
|
- :return:
|
|
|
- """
|
|
|
- video_id = self.title.split("video_id=")[-1]
|
|
|
- update_sql = f"""
|
|
|
- UPDATE
|
|
|
- {db_article}
|
|
|
- SET
|
|
|
- recall_video_id1 = %s
|
|
|
- WHERE
|
|
|
- trace_id = %s;"""
|
|
|
- await self.mysql_client.async_insert(
|
|
|
- sql=update_sql,
|
|
|
- params=(video_id, self.trace_id)
|
|
|
- )
|
|
|
- res = {
|
|
|
- "status": "success",
|
|
|
- "code": 0,
|
|
|
- "traceId": self.trace_id
|
|
|
- }
|
|
|
- logging(
|
|
|
- code="1003",
|
|
|
- info="视频生成文本服务请求,video_id = {}".format(video_id),
|
|
|
- trace_id=self.trace_id
|
|
|
- )
|
|
|
- return res
|
|
|
-
|
|
|
- async def insert_history_contents_videos(self, vid1, vid2, vid3, kimi_title):
|
|
|
- """
|
|
|
- 插入历史视频id
|
|
|
- :return:
|
|
|
- """
|
|
|
- update_sql = f"""
|
|
|
- UPDATE {db_article}
|
|
|
- SET
|
|
|
- kimi_title=%s,
|
|
|
- recall_video_id1=%s,
|
|
|
- recall_video_id2=%s,
|
|
|
- recall_video_id3=%s
|
|
|
- WHERE trace_id = %s
|
|
|
- """
|
|
|
- print(update_sql)
|
|
|
- await self.mysql_client.async_insert(
|
|
|
- sql=update_sql,
|
|
|
- params=(
|
|
|
- kimi_title,
|
|
|
- vid1,
|
|
|
- {"NULL" if vid2 is None else vid2},
|
|
|
- {"NULL" if vid3 is None else vid3},
|
|
|
- self.trace_id
|
|
|
- )
|
|
|
- )
|
|
|
-
|
|
|
- async def get_history_contents(self):
|
|
|
- """
|
|
|
- check whether the content id exists
|
|
|
- :return:
|
|
|
-
|
|
|
- """
|
|
|
- select_sql = f"""
|
|
|
- SELECT recall_video_id1, recall_video_id2, recall_video_id3, kimi_title
|
|
|
- FROM {db_article}
|
|
|
- WHERE content_id = '{self.content_id}' and trace_id != '{self.trace_id}'
|
|
|
- ORDER BY id DESC;
|
|
|
- """
|
|
|
- result = await self.mysql_client.async_select(select_sql)
|
|
|
- if result:
|
|
|
- for item in result:
|
|
|
- video_1, video_2, video_3, kimi_title = item
|
|
|
- if video_1 and kimi_title:
|
|
|
- return [video_1, video_2, video_3, kimi_title]
|
|
|
- else:
|
|
|
- continue
|
|
|
- return None
|
|
|
- else:
|
|
|
- return None
|
|
|
-
|
|
|
- async def deal(self):
|
|
|
- """
|
|
|
- deal
|
|
|
- :return:
|
|
|
- """
|
|
|
- params_error = self.check_params()
|
|
|
- if params_error:
|
|
|
- return params_error
|
|
|
- else:
|
|
|
- # 记录
|
|
|
- await self.record()
|
|
|
- if "video_id=" in self.title:
|
|
|
- return await self.process_video_id()
|
|
|
- else:
|
|
|
- video_ids = await self.get_history_contents()
|
|
|
- if video_ids:
|
|
|
- logging(
|
|
|
- code="1004",
|
|
|
- info="获取历史到文章视频",
|
|
|
- data=video_ids,
|
|
|
- trace_id=self.trace_id
|
|
|
- )
|
|
|
- await self.insert_history_contents_videos(
|
|
|
- video_ids[0],
|
|
|
- video_ids[1],
|
|
|
- video_ids[2],
|
|
|
- video_ids[3]
|
|
|
- )
|
|
|
- return {"status": "success", "code": 0, "traceId": self.trace_id}
|
|
|
- else:
|
|
|
- # search from the Internet
|
|
|
- try:
|
|
|
- asyncio.ensure_future(
|
|
|
- search_videos(
|
|
|
- params={"title": self.title, "content": self.contents, "trace_id": self.trace_id},
|
|
|
- trace_id=self.trace_id,
|
|
|
- gh_id=self.gh_id,
|
|
|
- mysql_client=self.mysql_client
|
|
|
- )
|
|
|
- )
|
|
|
- res = {
|
|
|
- "status": "success",
|
|
|
- "code": 0,
|
|
|
- "traceId": self.trace_id
|
|
|
- }
|
|
|
- return res
|
|
|
- except Exception as e:
|
|
|
- res = {
|
|
|
- "status": "fail",
|
|
|
- "code": 1,
|
|
|
- "message": str(e)
|
|
|
- }
|
|
|
- return res
|