update_history_kimi_title.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. """
  2. @author: luojunhui
  3. """
  4. from tqdm import tqdm
  5. from pymysql.cursors import DictCursor
  6. from applications.api import fetch_deepseek_response
  7. from applications import longArticlesMySQL
  8. lam = longArticlesMySQL()
  9. def generate_prompt(article_title):
  10. """
  11. generate prompt
  12. """
  13. prompt = f"""
  14. 输入标题: {article_title}
  15. 请将以上标题改写成适合小程序点击和传播的小程序标题,小程序标题的写作规范如下,请学习后进行小程序标题的编写。直接输出最终的小程序标题
  16. 小程序标题写作规范:
  17. 1.要点前置:将最重要的信息放在标题的最前面,以快速吸引读者的注意力。例如,“5月一辈子同学,三辈子亲,送给我的老同学,听哭无数人!”中的“5月”和“一辈子同学,三辈子亲”都是重要的信息点。
  18. 2.激发情绪:使用能够触动人心的语言,激发读者的情感共鸣。如“只剩两人同学聚会,看后感动落泪。”使用“感动落泪”激发读者的同情和怀旧情绪。
  19. 3.使用数字和特殊符号:数字可以提供具体性,而特殊符号如“🔴”、“😄”、“🔥”等可以吸引视觉注意力,增加点击率。
  20. 4.悬念和好奇心:创建悬念或提出问题,激发读者的好奇心。
  21. 5.名人效应:如果内容与知名人士相关,提及他们的名字可以增加标题的吸引力。
  22. 6.社会价值观:触及读者的文化和社会价值观,如家庭、友情、国家荣誉等。
  23. 7.标点符号的运用:使用感叹号、问号等标点来增强语气和情感表达。
  24. 8.直接的语言:使用直白、口语化的语言,易于理解,如“狗屁股,笑死我了!”。
  25. 9.热点人物或事件:提及当前的热点人物或事件,利用热点效应吸引读者。
  26. 10.字数适中:保持标题在10-20个字之间,既不过长也不过短,确保信息的完整性和吸引力。
  27. 11.情感或价值诉求:使用如“感动”、“泪目”、“经典”等词汇,直接与读者的情感或价值观产生共鸣。
  28. 避免误导:确保标题准确反映内容,避免夸大或误导读者。
  29. """
  30. return prompt
  31. def update_status(content_id, ori, new_):
  32. """
  33. update status
  34. """
  35. sql = """
  36. update long_articles_temp
  37. set status = %s
  38. where content_id = %s and status = %s;
  39. """
  40. rows = lam.update(sql=sql, params=(new_, content_id, ori))
  41. return rows
  42. def get_task_list():
  43. """
  44. get task list
  45. """
  46. sql = """
  47. select t1.content_id, t2.article_title from long_articles_temp t1
  48. join long_articles_text t2 on t1.content_id = t2.content_id
  49. where t1.status = 0;
  50. """
  51. resp = lam.select(sql, cursor_type=DictCursor)
  52. return resp
  53. def update_temp(content_id, new_title):
  54. """
  55. update temp
  56. """
  57. sql = """
  58. update long_articles_temp
  59. set new_kimi_title = %s, status = %s
  60. where content_id = %s and status = %s;
  61. """
  62. lam.update(sql=sql, params=(new_title, 1, content_id, 101))
  63. def process_task(task):
  64. """
  65. print
  66. """
  67. content_id = task['content_id']
  68. article_title = task['article_title']
  69. prompt = generate_prompt(article_title)
  70. # lock
  71. r = update_status(content_id=content_id, ori=0, new_=101)
  72. if not r:
  73. return
  74. try:
  75. title = fetch_deepseek_response(model="DeepSeek-V3", prompt=prompt)
  76. update_temp(content_id, title)
  77. except Exception as e:
  78. # roll back
  79. update_status(content_id=content_id, ori=101, new_=0)
  80. print(e)
  81. def main():
  82. """
  83. main function
  84. """
  85. task_list = get_task_list()
  86. for task in tqdm(task_list):
  87. process_task(task)
  88. if __name__ == '__main__':
  89. main()