kimi_task.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. """
  2. @author: luojunhui
  3. kimi 相关方法
  4. """
  5. import json
  6. from typing import Dict
  7. from applications.const import new_content_id_task_const
  8. from applications.functions.kimi import KimiServer
  9. async def get_kimi_status(content_id, article_text_table, db_client) -> int:
  10. """
  11. 通过 content_id 获取kimi info
  12. :return:
  13. """
  14. select_sql = f"""
  15. SELECT kimi_status
  16. FROM {article_text_table}
  17. WHERE content_id = '{content_id}';
  18. """
  19. response = await db_client.async_select(select_sql)
  20. if response:
  21. kimi_status = response[0][0]
  22. return kimi_status
  23. else:
  24. return new_content_id_task_const.ARTICLE_TEXT_TABLE_ERROR
  25. async def get_kimi_result(content_id, article_text_table, db_client) -> Dict:
  26. """
  27. 获取kimi的返回结果
  28. """
  29. get_kimi_sql = f"""
  30. SELECT article_title, kimi_title, kimi_summary, kimi_keys
  31. FROM {article_text_table}
  32. WHERE content_id = '{content_id}';
  33. """
  34. kimi_info = await db_client.async_select(get_kimi_sql)
  35. if kimi_info:
  36. print(kimi_info)
  37. return {
  38. "kimi_title": kimi_info[0][1],
  39. "ori_title": kimi_info[0][0],
  40. "kimi_summary": kimi_info[0][2],
  41. "kimi_keys": json.loads(kimi_info[0][3])
  42. }
  43. else:
  44. return {}
  45. async def generate_kimi_result(content_id, article_text_table, db_client) -> Dict:
  46. """
  47. 为content_id执行kimi操作
  48. """
  49. K = KimiServer()
  50. select_sql = f"""
  51. SELECT article_title, article_text
  52. FROM {article_text_table}
  53. WHERE content_id = '{content_id}';
  54. """
  55. res = await db_client.async_select(select_sql)
  56. article_obj = {
  57. "article_title": res[0][0],
  58. "article_text": res[0][1],
  59. "content_id": content_id
  60. }
  61. kimi_info = await K.search_kimi_schedule(params=article_obj)
  62. kimi_title = kimi_info['k_title']
  63. content_title = kimi_info['content_title'].replace("'", "").replace('"', "")
  64. content_keys = json.dumps(kimi_info['content_keys'], ensure_ascii=False)
  65. update_kimi_sql = f"""
  66. UPDATE {article_text_table}
  67. SET
  68. kimi_title = %s, kimi_summary = %s, kimi_keys = %s, kimi_status = %s
  69. WHERE content_id = %s;"""
  70. await db_client.async_insert(
  71. sql=update_kimi_sql,
  72. params=(
  73. kimi_title, content_title, content_keys, new_content_id_task_const.KIMI_SUCCESS_STATUS, content_id)
  74. )
  75. return {
  76. "kimi_title": kimi_title,
  77. "ori_title": article_obj['article_title'],
  78. "kimi_summary": content_title,
  79. "kimi_keys": kimi_info['content_keys']
  80. }