recall.py 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399
  1. """
  2. @author: luojunhui
  3. """
  4. import os
  5. import json
  6. import time
  7. import asyncio
  8. from concurrent.futures import ThreadPoolExecutor
  9. import httpx
  10. import requests
  11. from applications.log import logging
  12. from applications.functions.mysql import select, select_pq_videos
  13. from applications.functions.ask_kimi import ask_kimi
  14. gh_id_dict = {
  15. "gh_01f8afd03366": {
  16. "uid": 69637520,
  17. "nick_name": "非亲非故"
  18. },
  19. "gh_058e41145a0c": {
  20. "uid": 69637476,
  21. "nick_name": "甜腻梦话"
  22. },
  23. "gh_084a485e859a": {
  24. "uid": 69637472,
  25. "nick_name": "梦星月"
  26. },
  27. "gh_0921c03402cd": {
  28. "uid": 69637531,
  29. "nick_name": "你的女友"
  30. },
  31. "gh_0c89e11f8bf3": {
  32. "uid": 69637508,
  33. "nick_name": "粟米"
  34. },
  35. "gh_171cec079b2a": {
  36. "uid": 69637501,
  37. "nick_name": "海上"
  38. },
  39. "gh_183d80deffb8": {
  40. "uid": 69637491,
  41. "nick_name": "论趣"
  42. },
  43. "gh_1ee2e1b39ccf": {
  44. "uid": 69637473,
  45. "nick_name": "纵有疾风起"
  46. },
  47. "gh_234ef02cdee5": {
  48. "uid": 69637513,
  49. "nick_name": "夹逼"
  50. },
  51. "gh_26a307578776": {
  52. "uid": 69637490,
  53. "nick_name": "最宝贝的宝贝"
  54. },
  55. "gh_29074b51f2b7": {
  56. "uid": 69637530,
  57. "nick_name": "沉舸"
  58. },
  59. "gh_2b8c6aa035ae": {
  60. "uid": 69637470,
  61. "nick_name": "懶得取名"
  62. },
  63. "gh_34318194fd0e": {
  64. "uid": 69637517,
  65. "nick_name": "徒四壁"
  66. },
  67. "gh_3845af6945d0": {
  68. "uid": 69637545,
  69. "nick_name": "秋水娉婷"
  70. },
  71. "gh_3ac6d7208961": {
  72. "uid": 69637497,
  73. "nick_name": "小熊的少女梦"
  74. },
  75. "gh_3c7d38636846": {
  76. "uid": 69637519,
  77. "nick_name": "油腻腻"
  78. },
  79. "gh_3df10391639c": {
  80. "uid": 69637541,
  81. "nick_name": "六郎娇面"
  82. },
  83. "gh_40a0ad154478": {
  84. "uid": 69637516,
  85. "nick_name": "禁止"
  86. },
  87. "gh_424c8eeabced": {
  88. "uid": 69637522,
  89. "nick_name": "认命"
  90. },
  91. "gh_4568b5a7e2fe": {
  92. "uid": 69637482,
  93. "nick_name": "香腮"
  94. },
  95. "gh_45beb952dc74": {
  96. "uid": 69637488,
  97. "nick_name": "毋庸"
  98. },
  99. "gh_484de412b0ef": {
  100. "uid": 69637481,
  101. "nick_name": "婪"
  102. },
  103. "gh_4c058673c07e": {
  104. "uid": 69637474,
  105. "nick_name": "影帝"
  106. },
  107. "gh_538f78f9d3aa": {
  108. "uid": 69637478,
  109. "nick_name": "伤痕"
  110. },
  111. "gh_56a6765df869": {
  112. "uid": 69637514,
  113. "nick_name": "风月"
  114. },
  115. "gh_56ca3dae948c": {
  116. "uid": 69637538,
  117. "nick_name": "留下太多回忆"
  118. },
  119. "gh_5e543853d8f0": {
  120. "uid": 69637543,
  121. "nick_name": "不知春秋"
  122. },
  123. "gh_5ff48e9fb9ef": {
  124. "uid": 69637494,
  125. "nick_name": "寻她找他"
  126. },
  127. "gh_671f460c856c": {
  128. "uid": 69637523,
  129. "nick_name": "绝不改悔"
  130. },
  131. "gh_6b7c2a257263": {
  132. "uid": 69637528,
  133. "nick_name": "奶牙"
  134. },
  135. "gh_6d205db62f04": {
  136. "uid": 69637509,
  137. "nick_name": "怕羞"
  138. },
  139. "gh_6d9f36e3a7be": {
  140. "uid": 69637498,
  141. "nick_name": "望长安"
  142. },
  143. "gh_73be0287bb94": {
  144. "uid": 69637537,
  145. "nick_name": "戏剧"
  146. },
  147. "gh_744cb16f6e16": {
  148. "uid": 69637505,
  149. "nick_name": "反駁"
  150. },
  151. "gh_7b4a5f86d68c": {
  152. "uid": 69637477,
  153. "nick_name": "我很想你"
  154. },
  155. "gh_7bca1c99aea0": {
  156. "uid": 69637511,
  157. "nick_name": "从小就很傲"
  158. },
  159. "gh_7e5818b2dd83": {
  160. "uid": 69637532,
  161. "nick_name": "二八佳人"
  162. },
  163. "gh_89ef4798d3ea": {
  164. "uid": 69637533,
  165. "nick_name": "彼岸花"
  166. },
  167. "gh_901b0d722749": {
  168. "uid": 69637518,
  169. "nick_name": "深情不为我"
  170. },
  171. "gh_9161517e5676": {
  172. "uid": 69637495,
  173. "nick_name": "折磨"
  174. },
  175. "gh_93e00e187787": {
  176. "uid": 69637504,
  177. "nick_name": "理会"
  178. },
  179. "gh_9877c8541764": {
  180. "uid": 69637506,
  181. "nick_name": "我沿着悲伤"
  182. },
  183. "gh_9cf3b7ff486b": {
  184. "uid": 69637492,
  185. "nick_name": "hoit"
  186. },
  187. "gh_9e559b3b94ca": {
  188. "uid": 69637471,
  189. "nick_name": "我与你相遇"
  190. },
  191. "gh_9f8dc5b0c74e": {
  192. "uid": 69637496,
  193. "nick_name": "港口"
  194. },
  195. "gh_a182cfc94dad": {
  196. "uid": 69637539,
  197. "nick_name": "四海八荒"
  198. },
  199. "gh_a2901d34f75b": {
  200. "uid": 69637535,
  201. "nick_name": "听腻了谎话"
  202. },
  203. "gh_a307072c04b9": {
  204. "uid": 69637521,
  205. "nick_name": "踏步"
  206. },
  207. "gh_a6351b447819": {
  208. "uid": 69637540,
  209. "nick_name": "七猫酒馆"
  210. },
  211. "gh_ac43e43b253b": {
  212. "uid": 69637499,
  213. "nick_name": "一厢情愿"
  214. },
  215. "gh_adca24a8f429": {
  216. "uid": 69637483,
  217. "nick_name": "对你何止一句喜欢"
  218. },
  219. "gh_b15de7c99912": {
  220. "uid": 69637536,
  221. "nick_name": "糖炒板栗"
  222. },
  223. "gh_b32125c73861": {
  224. "uid": 69637493,
  225. "nick_name": "发尾"
  226. },
  227. "gh_b3ffc1ca3a04": {
  228. "uid": 69637546,
  229. "nick_name": "主宰你心"
  230. },
  231. "gh_b8baac4296cb": {
  232. "uid": 69637489,
  233. "nick_name": "生性"
  234. },
  235. "gh_b9b99173ff8a": {
  236. "uid": 69637524,
  237. "nick_name": "养一只月亮"
  238. },
  239. "gh_bd57b6978e06": {
  240. "uid": 69637527,
  241. "nick_name": "厌遇"
  242. },
  243. "gh_be8c29139989": {
  244. "uid": 69637502,
  245. "nick_name": "不负"
  246. },
  247. "gh_bfe5b705324a": {
  248. "uid": 69637529,
  249. "nick_name": "乐极"
  250. },
  251. "gh_bff0bcb0694a": {
  252. "uid": 69637534,
  253. "nick_name": "简迷离"
  254. },
  255. "gh_c69776baf2cd": {
  256. "uid": 69637512,
  257. "nick_name": "骄纵"
  258. },
  259. "gh_c91b42649690": {
  260. "uid": 69637503,
  261. "nick_name": "荟萃"
  262. },
  263. "gh_d2cc901deca7": {
  264. "uid": 69637487,
  265. "nick_name": "恶意调笑"
  266. },
  267. "gh_d5f935d0d1f2": {
  268. "uid": 69637500,
  269. "nick_name": "青少年哪吒"
  270. },
  271. "gh_da76772d8d15": {
  272. "uid": 69637526,
  273. "nick_name": "独揽风月"
  274. },
  275. "gh_de9f9ebc976b": {
  276. "uid": 69637475,
  277. "nick_name": "剑出鞘恩怨了"
  278. },
  279. "gh_e0eb490115f5": {
  280. "uid": 69637486,
  281. "nick_name": "赋别"
  282. },
  283. "gh_e24da99dc899": {
  284. "uid": 69637484,
  285. "nick_name": "恋雨夏季"
  286. },
  287. "gh_e2576b7181c6": {
  288. "uid": 69637515,
  289. "nick_name": "满天星"
  290. },
  291. "gh_e75dbdc73d80": {
  292. "uid": 69637542,
  293. "nick_name": "情战"
  294. },
  295. "gh_e9d819f9e147": {
  296. "uid": 69637525,
  297. "nick_name": "与卿"
  298. },
  299. "gh_efaf7da157f5": {
  300. "uid": 69637547,
  301. "nick_name": "心野性子浪"
  302. },
  303. "gh_f4594783f5b8": {
  304. "uid": 69637544,
  305. "nick_name": "自缚"
  306. },
  307. "gh_fe6ef3a65a48": {
  308. "uid": 69637480,
  309. "nick_name": "风间"
  310. }
  311. }
  312. def ask_kimi_and_save_to_local(info_tuple):
  313. """
  314. save file to local
  315. :return:
  316. """
  317. title, trace_id, save_path = info_tuple[0], info_tuple[1], info_tuple[2]
  318. if os.path.exists(save_path):
  319. logging(
  320. code="1002",
  321. info="该 video 信息已经挖掘完成---{}".format(title),
  322. function="ask_kimi_and_save_to_local",
  323. trace_id=trace_id,
  324. )
  325. else:
  326. os.makedirs(os.path.dirname(save_path), exist_ok=True)
  327. if not title:
  328. result = {}
  329. else:
  330. result = ask_kimi(title)
  331. logging(
  332. code="1002",
  333. info="kimi-result",
  334. data=result,
  335. trace_id=trace_id,
  336. function="ask_kimi_and_save_to_local"
  337. )
  338. with open(save_path, "w", encoding="utf-8") as f:
  339. f.write(json.dumps(result, ensure_ascii=False))
  340. async def recall_videos(params, trace_id):
  341. """
  342. 通过请求的数据来召回视频
  343. :param trace_id:
  344. :param params: 请求参数
  345. :return: file_list
  346. """
  347. title = params['title']
  348. # content = params['content']
  349. ghId = params['ghId']
  350. user_id = gh_id_dict[ghId]['uid']
  351. # 在外面搜索视频
  352. # payload = {
  353. # "ghId": ghId,
  354. # "search_keys": [title],
  355. # "trace_id": trace_id
  356. # }
  357. # # print(payload)
  358. # url = "http://61.48.133.26:8111/search_videos"
  359. # requests.post(url, json=payload)
  360. # # print("请求完成")
  361. await asyncio.sleep(15)
  362. # select_sql = "select video_id, video_title from crawler_video where platform='weixin_search' and user_id = '{}' order by update_time DESC limit 10".format(
  363. # user_id)
  364. # out_video_list = select(sql=select_sql)
  365. # dir_path = os.path.join(os.getcwd(), 'applications', 'static', "out_videos")
  366. # os.makedirs(os.path.dirname(dir_path), exist_ok=True)
  367. # done_list = os.listdir(dir_path)
  368. # process_list = [
  369. # (
  370. # i[1],
  371. # trace_id,
  372. # os.path.join(dir_path, "{}.json".format(i[0]))
  373. # ) for i in out_video_list if not "{}.json".format(i[0]) in done_list
  374. # ]
  375. # with ThreadPoolExecutor(max_workers=10) as pool:
  376. # pool.map(ask_kimi_and_save_to_local, process_list)
  377. # 在两边召回视频
  378. # pq_videos
  379. recall_video_list = select_pq_videos()
  380. dirs_1 = os.path.join(os.getcwd(), 'applications', 'static', 'out_videos')
  381. file_list = [os.path.join(dirs_1, file) for file in os.listdir(dirs_1) if file.endswith(".json")]
  382. search_list = []
  383. for file in file_list:
  384. with open(file, encoding="utf-8") as f:
  385. obj = json.loads(f.read())
  386. if obj:
  387. obj['video_id'] = file.split("/")[-1].replace('.json', '')
  388. search_list.append(obj)
  389. return recall_video_list, search_list