routes.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. """
  2. @author: luojunhui
  3. """
  4. import json
  5. import time
  6. import uuid
  7. from quart import Blueprint, jsonify, request
  8. from applications.functions.log import logging
  9. from applications.schedule import recall_videos, search_videos
  10. from applications.functions.kimi import KimiServer
  11. my_blueprint = Blueprint('kimi', __name__)
  12. def Routes(mysql_client):
  13. """
  14. 路由代码
  15. """
  16. @my_blueprint.route('/healthcheck')
  17. def healthcheck():
  18. """
  19. Hello World Test
  20. :return:
  21. """
  22. logging(
  23. code="1001",
  24. info="请求接口成功",
  25. port="healthcheck"
  26. )
  27. return jsonify({'message': 'Hello, World!'})
  28. @my_blueprint.route('/search_videos', methods=['POST'])
  29. async def search_videos_from_the_web():
  30. """
  31. 从web 搜索视频并且存储到票圈的视频库中
  32. :return:
  33. """
  34. params = await request.get_json()
  35. K = KimiServer()
  36. gh_id = params['ghId']
  37. trace_id = "search-{}-{}".format(str(uuid.uuid4()), str(int(time.time())))
  38. params['trace_id'] = trace_id
  39. title = params['title'].split("@@")[-1]
  40. contents = params['content']
  41. account_name = params['accountName']
  42. logging(
  43. code="2000",
  44. info="搜索视频内容接口请求成功",
  45. port="title_to_search",
  46. function="search_videos_from_the_web",
  47. trace_id=trace_id
  48. )
  49. insert_sql = f"""
  50. INSERT INTO long_articles_video_dev
  51. (trace_id, gh_id, article_title, article_text, account_name)
  52. VALUES
  53. ('{trace_id}', '{gh_id}', '{title}', '{contents}', '{account_name}');"""
  54. await mysql_client.async_insert(insert_sql)
  55. try:
  56. kimi_info = await K.search_kimi_schedule(params=params)
  57. print(json.dumps(kimi_info, ensure_ascii=False, indent=4))
  58. kimi_title = kimi_info['k_title']
  59. content_title = kimi_info['content_title']
  60. content_keys = json.dumps(kimi_info['content_keys'], ensure_ascii=False)
  61. update_kimi_sql = f"""
  62. UPDATE long_articles_video_dev SET
  63. kimi_title = '{kimi_title}',
  64. kimi_summary = '{content_title}',
  65. kimi_keys = '{content_keys}'
  66. WHERE trace_id = '{trace_id}';
  67. """
  68. await mysql_client.async_insert(update_kimi_sql)
  69. await search_videos(
  70. kimi_info=kimi_info,
  71. trace_id=trace_id,
  72. gh_id=gh_id,
  73. mysql_client=mysql_client
  74. )
  75. res = {
  76. "status": "success",
  77. "code": 0,
  78. "traceId": trace_id
  79. }
  80. except Exception as e:
  81. res = {
  82. "status": "fail",
  83. "code": 1,
  84. "message": str(e)
  85. }
  86. return jsonify(res)
  87. @my_blueprint.route('/recall_videos', methods=['POST'])
  88. async def find_videos():
  89. """
  90. 请求接口代码
  91. :return:
  92. """
  93. data = await request.get_json()
  94. trace_id = data['traceId']
  95. logging(
  96. code="1001",
  97. info="请求接口成功",
  98. port="recall_videos",
  99. trace_id=trace_id
  100. )
  101. result = await recall_videos(
  102. trace_id=trace_id,
  103. mysql_client=mysql_client
  104. )
  105. return jsonify(result)
  106. return my_blueprint