sql_help.py 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439
  1. import os
  2. import sys
  3. from typing import Optional
  4. from common.mysql_db_aigc import AigcMysqlHelper
  5. sys.path.append(os.getcwd())
  6. from datetime import datetime
  7. from common.mysql_db import MysqlHelper
  8. class sqlCollect():
  9. """
  10. 视频信息写入库中
  11. """
  12. @classmethod
  13. def insert_task(cls, task_mark, video_id, mark, channel):
  14. current_time = datetime.now()
  15. formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S")
  16. insert_sql = f"""INSERT INTO pj_video_data (task_name, used_video_id, mark_name, data_time, channel) values ('{task_mark}' ,'{video_id}','{mark}', '{formatted_time}', '{channel}')"""
  17. MysqlHelper.update_values(
  18. sql=insert_sql
  19. )
  20. """
  21. 判断该任务id是否用过
  22. """
  23. @classmethod
  24. def is_used(cls, video_id, mark_name, channel):
  25. sql = """
  26. SELECT used_video_id
  27. FROM pj_video_data
  28. WHERE used_video_id = %s AND mark_name = %s AND channel = %s
  29. ORDER BY data_time DESC
  30. LIMIT 1
  31. """
  32. data = MysqlHelper.get_values(sql, (str(video_id), mark_name, channel))
  33. if len(data) == 0 or data == ():
  34. return False
  35. return True
  36. """
  37. 根据时间判断该任务id是否用过
  38. """
  39. @classmethod
  40. def is_used_days(cls, video_id, mark_name, channel, day_count):
  41. sql = """
  42. SELECT used_video_id
  43. FROM pj_video_data
  44. WHERE used_video_id = %s AND mark_name = %s AND channel = %s
  45. ORDER BY data_time DESC
  46. LIMIT 1 AND create_time >= DATE_SUB(NOW(), INTERVAL %s DAY)
  47. """
  48. data = MysqlHelper.get_values(sql, (str(video_id), mark_name, channel,int(day_count)))
  49. if len(data) == 0 or data == ():
  50. return False
  51. return True
  52. """
  53. 快手小程序判断该任务id是否用过
  54. """
  55. @classmethod
  56. def ks_is_used_xcx(cls, video_id, channel):
  57. sql = """SELECT used_video_id FROM pj_video_data WHERE used_video_id = %s AND channel = %s AND data_time >= DATE_SUB(NOW(), INTERVAL 7 DAY) ORDER BY data_time DESC LIMIT 1;"""
  58. data = MysqlHelper.get_values(sql, (str(video_id), channel))
  59. if len(data) == 0 or data == ():
  60. return False
  61. return True
  62. @classmethod
  63. def get_history_id(cls, channel, url):
  64. """
  65. 从数据库表中读取 id
  66. """
  67. sql = f"""select name_id from accounts where name = %s and platform = %s and useful = 1 limit 1"""
  68. data = MysqlHelper.get_values(sql, (url, channel))
  69. if data:
  70. return data[0][0]
  71. else:
  72. return False
  73. @classmethod
  74. def insert_history_id(cls, account_name, target, channel):
  75. insert_sql = f"""INSERT INTO accounts (name, name_id, platform, useful) values ("{account_name}", "{target}", "{channel}", 1 )"""
  76. MysqlHelper.update_values(
  77. sql=insert_sql
  78. )
  79. @classmethod
  80. def insert_machine_making_data(cls, name: str, task_mark: str, channel_id: str, url: str, v_id: str, piaoquan_id: str, new_title: str, code: str, formatted_time, old_title: str, oss_object_key: str):
  81. insert_sql = f"""INSERT INTO machine_making_data (name, task_mark, channel, user, v_id, pq_uid, title, pq_vid, data_time, old_title, oss_object_key) values ("{name}", "{task_mark}", "{channel_id}", "{url}", "{v_id}" , "{piaoquan_id}", "{new_title}", "{code}", "{formatted_time}", "{old_title}", "{oss_object_key}")"""
  82. MysqlHelper.update_values(
  83. sql=insert_sql
  84. )
  85. @classmethod
  86. def get_feed_count(cls, channel):
  87. sql = """SELECT count(0) FROM machine_making_data where channel = %s and DATE(data_time) = CURRENT_DATE AND HOUR(data_time) <= HOUR(NOW());"""
  88. count = MysqlHelper.get_values(sql, (str(channel)))
  89. return count
  90. @classmethod
  91. def get_crawler_count(cls, platform):
  92. sql = """SELECT count(0) FROM crawler_video where platform = %s and DATE(create_time) = CURRENT_DATE AND HOUR(create_time) < HOUR(NOW());"""
  93. count = MysqlHelper.get_values(sql, (str(platform)))
  94. return count
  95. @classmethod
  96. def get_ytd_crawler_count(cls, platform):
  97. sql = """SELECT count(0) FROM crawler_video where platform = %s and create_time >= CURRENT_DATE - INTERVAL 1 DAY AND create_time < CURRENT_DATE - INTERVAL 1 DAY + INTERVAL HOUR(NOW()) HOUR;"""
  98. count = MysqlHelper.get_values(sql, (str(platform)))
  99. return count
  100. @classmethod
  101. def get_bygj_count(cls, name):
  102. sql = """SELECT count(0) FROM machine_making_data where name = %s and task_mark = "搬运工具" and DATE(data_time) = CURRENT_DATE AND HOUR(data_time) <= HOUR(NOW());"""
  103. count = MysqlHelper.get_values(sql, (str(name)))
  104. return count
  105. @classmethod
  106. def get_mark_count(cls, mark):
  107. sql = """SELECT count(0) FROM machine_making_data where task_mark = %s and DATE(data_time) = CURRENT_DATE AND HOUR(data_time) <= HOUR(NOW());"""
  108. count = MysqlHelper.get_values(sql, (str(mark)))
  109. return count
  110. @classmethod
  111. def get_bygj_all_count(cls):
  112. sql = """SELECT count(0) FROM machine_making_data where task_mark = %s and DATE(data_time) = CURRENT_DATE AND HOUR(data_time) <= HOUR(NOW());"""
  113. count = MysqlHelper.get_values(sql, (str("搬运工具")))
  114. return count
  115. @classmethod
  116. def get_ytd_bygj_count(cls, name):
  117. sql = """SELECT count(0) FROM machine_making_data where name = %s and task_mark = "搬运工具" and data_time >= CURRENT_DATE - INTERVAL 1 DAY AND data_time <= CURRENT_DATE - INTERVAL 1 DAY + INTERVAL HOUR(NOW()) HOUR;"""
  118. count = MysqlHelper.get_values(sql, (str(name)))
  119. return count
  120. @classmethod
  121. def get_channel_count(cls, channel, name):
  122. sql = """SELECT count(0) FROM machine_making_data where channel = %s and name = %s and DATE(data_time) = CURRENT_DATE AND HOUR(data_time) <= HOUR(NOW());"""
  123. count = MysqlHelper.get_values(sql, (str(channel),name))
  124. return count
  125. @classmethod
  126. def get_ytd_channel_count(cls, channel, name):
  127. sql = """SELECT count(0) FROM machine_making_data where channel = %s and name = %s and data_time >= CURRENT_DATE - INTERVAL 1 DAY AND data_time <= CURRENT_DATE - INTERVAL 1 DAY + INTERVAL HOUR(NOW()) HOUR;"""
  128. count = MysqlHelper.get_values(sql, (str(channel), name))
  129. return count
  130. @classmethod
  131. def get_name_count(cls, name):
  132. sql = """SELECT count(0) FROM machine_making_data where name = %s and DATE(data_time) = CURRENT_DATE AND HOUR(data_time) <= HOUR(NOW());"""
  133. count = MysqlHelper.get_values(sql, (str(name)))
  134. return count
  135. @classmethod
  136. def get_ytd_name_count(cls, name):
  137. sql = """SELECT count(0) FROM machine_making_data where name = %s and data_time >= CURRENT_DATE - INTERVAL 1 DAY AND data_time <= CURRENT_DATE - INTERVAL 1 DAY + INTERVAL HOUR(NOW()) HOUR;"""
  138. count = MysqlHelper.get_values(sql, (str(name)))
  139. return count
  140. """
  141. 判断该任务id是否用过
  142. """
  143. @classmethod
  144. def ks_is_used(cls, photo_id):
  145. sql = """
  146. SELECT photo_id
  147. FROM ks_category_video
  148. WHERE photo_id = %s
  149. """
  150. data = MysqlHelper.get_values(sql, (str(photo_id)))
  151. if len(data) == 0 or data == ():
  152. return False
  153. return True
  154. """查询视频号user是否添加过"""
  155. @classmethod
  156. def sph_channel_user(cls, user_id):
  157. sql = """
  158. SELECT user_id
  159. FROM sph_channel_user
  160. WHERE user_id = %s
  161. """
  162. data = MysqlHelper.get_values(sql, (str(user_id)))
  163. if len(data) == 0 or data == ():
  164. return True
  165. return False
  166. """抓取视频号数据入库"""
  167. @classmethod
  168. def sph_data_info(cls, channel: str, objectId: str, video_url: str, cover: str, video_title: str, share_cnt: str, like_cnt: str, oss_video_key: str, oss_cover_key: str, nick_name: str, user_name: str, comment_count: str, fav_count: str, create_time: str, duration: str):
  169. insert_sql = f"""INSERT INTO sph_data_info (channel, video_id, video_url, video_cover, video_title, share_cnt, like_cnt, oss_url, oss_cover, nick_name, user_name, comment_count, fav_count, create_time, duration)
  170. values
  171. ("{channel}", "{objectId}", "{video_url}", "{cover}", "{video_title}", "{share_cnt}", "{like_cnt}", "{oss_video_key}", "{oss_cover_key}", "{nick_name}", "{user_name}", "{comment_count}", "{fav_count}", "{create_time}", "{duration}")"""
  172. res = MysqlHelper.update_values(
  173. sql=insert_sql
  174. )
  175. return res
  176. """查询是否有视频号是否插入过数据库"""
  177. @classmethod
  178. def sph_data_info_v_id(cls, video_id, channel):
  179. sql = """
  180. SELECT video_id
  181. FROM sph_data_info
  182. WHERE video_id = %s and channel = %s
  183. """
  184. data = MysqlHelper.get_values(sql, (str(video_id), channel))
  185. if data:
  186. return True
  187. return False
  188. @classmethod
  189. def sph_data_info_count(cls, user, channel):
  190. sql = """SELECT count(*) FROM sph_data_info WHERE nick_name = %s and channel = %s """
  191. data = MysqlHelper.get_values(sql, (user, channel))
  192. return data[0]
  193. """获取视频号历史数据"""
  194. @classmethod
  195. def sph_data_info_list(cls, user):
  196. sql = """SELECT video_id, video_title, share_cnt, like_cnt, oss_url, oss_cover, duration FROM sph_data_info WHERE nick_name = %s ORDER BY share_cnt DESC"""
  197. data = MysqlHelper.get_values(sql, (user))
  198. if data:
  199. return data
  200. return None
  201. """查询是否有视频号数据"""
  202. @classmethod
  203. def sph_channel_user_list(cls):
  204. sql = """
  205. SELECT user_id
  206. FROM sph_channel_user
  207. WHERE status = %s
  208. """
  209. data = MysqlHelper.get_values(sql, (0))
  210. if len(data) == 0 or data == ():
  211. return None
  212. return data
  213. @classmethod
  214. def update_sph_channel_user_status(cls, user):
  215. """
  216. 视频号账号状态改为1 代表已经抓取过
  217. """
  218. sql = f"""UPDATE sph_channel_user set status = 1 where user_id = '{user}'"""
  219. res = MysqlHelper.update_values(
  220. sql=sql
  221. )
  222. return res
  223. """插入视频号信息"""
  224. @classmethod
  225. def insert_sph_channel_user(cls, channel, user_id):
  226. insert_sql = f"""INSERT INTO sph_channel_user (channel, user_id, status) values ("{channel}", "{user_id}", 0)"""
  227. res = MysqlHelper.update_values(
  228. sql=insert_sql
  229. )
  230. @classmethod
  231. def insert_ks_data(cls, user_name: str, user_sex: str, time_data, caption: str, view_count: str, like_count: str,
  232. share_count: str, duration: str, main_mv_url: str, thumbnail_url: str, user_id: str, status: str,
  233. photo_id: str, category_name: str, age: str, oss_object: Optional[str] = None,
  234. video_uid: Optional[str] = None):
  235. current_time = datetime.now()
  236. formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S")
  237. insert_sql = f"""INSERT INTO ks_category_video (user_name, user_sex, time_data, caption, view_count, like_count, share_count, duration, main_mv_url, thumbnail_url, user_id, status, age_proportion, video_oss_path, pq_video_id, update_time, photo_id, category_name) values ("{user_name}", "{user_sex}", "{time_data}", "{caption}", "{view_count}", "{like_count}", "{share_count}", "{duration}", "{main_mv_url}", "{thumbnail_url}", "{user_id}", "{status}", "{age}", "{oss_object}", "{video_uid}", "{formatted_time}", "{photo_id}", "{category_name}")"""
  238. res = MysqlHelper.update_values(
  239. sql=insert_sql
  240. )
  241. @classmethod
  242. def get_shp_dd_data(cls, url):
  243. """
  244. 获取视频号单点内容
  245. """
  246. sql = f"""select video_id,title,author_id,author_name,cover_url,video_url,video_duration,from_user_id,from_user_name,from_group_id,from_group_name,source,wx_msg, is_encrypted, decode_key from dandian_content where from_user_name = %s and has_used = 0 ORDER BY create_timestamp DESC limit 2"""
  247. data = AigcMysqlHelper.get_values(sql, (url,))
  248. return data
  249. @classmethod
  250. def get_feed_data(cls, channel):
  251. """
  252. 获取feed流视频
  253. """
  254. sql = f"""select video_id,channel,video_url,cover_url,title from automator_feed_video where channel = %s and has_used = 0 and if_50_like = 1 ORDER BY create_time DESC limit 1"""
  255. data = AigcMysqlHelper.get_values(sql, (channel,))
  256. return data
  257. @classmethod
  258. def update_feed_vid(cls, vid):
  259. """
  260. 视频号单点修改状态为1
  261. """
  262. sql = f"""UPDATE automator_feed_video set has_used = 1 where video_id = '{vid}'"""
  263. res = AigcMysqlHelper.update_values(
  264. sql=sql
  265. )
  266. return res
  267. @classmethod
  268. def update_feed_vid_2(cls, vid):
  269. """
  270. 视频号单点修改状态为1
  271. """
  272. sql = f"""UPDATE automator_feed_video set has_used = 2 where video_id = '{vid}'"""
  273. res = AigcMysqlHelper.update_values(
  274. sql=sql
  275. )
  276. return res
  277. @classmethod
  278. def update_shp_dd_vid(cls, vid):
  279. """
  280. 视频号单点修改状态为1
  281. """
  282. sql = f"""UPDATE dandian_content set has_used = 1 where video_id = '{vid}'"""
  283. res = AigcMysqlHelper.update_values(
  284. sql=sql
  285. )
  286. return res
  287. @classmethod
  288. def update_shp_dd_vid_4(cls, vid):
  289. """
  290. 视频号单点修改状态为4
  291. """
  292. sql = f"""UPDATE dandian_content set has_used = 4 where video_id = '{vid}'"""
  293. res = AigcMysqlHelper.update_values(
  294. sql=sql
  295. )
  296. return res
  297. @classmethod
  298. def select_ks_star_data(cls, profile_id):
  299. sql = """SELECT * FROM ks_star_info where profile_id = %s"""
  300. data = MysqlHelper.get_values(sql, (profile_id))
  301. if data:
  302. return data
  303. return None
  304. @classmethod
  305. def insert_ks_star_data(cls, user_id: str, star_id: str, name, kwai_id: str, gender: str, fans_number: str,
  306. profile_id: str, star_tag_str: str, industry_tag_str: str, photo_expect_play: str, photo_expect_cpm: str, photo_interaction_rate: str,
  307. photo_complete_play_rate: str, fans_increase_num: str, fans_increase_rate: str,):
  308. insert_sql = f"""INSERT INTO ks_star_info (user_id, star_id, name, kwai_id, gender, fans_number, profile_id, star_tag_str, industry_tag_str, photo_expect_play, photo_expect_cpm, photo_interaction_rate, photo_complete_play_rate, fans_increase_num, fans_increase_rate) values ("{user_id}", "{star_id}", "{name}", "{kwai_id}", "{gender}", "{fans_number}", "{profile_id}", "{star_tag_str}", "{industry_tag_str}", "{photo_expect_play}", "{photo_expect_cpm}", "{photo_interaction_rate}", "{photo_complete_play_rate}", "{fans_increase_num}", "{fans_increase_rate}")"""
  309. res = MysqlHelper.update_values(
  310. sql=insert_sql
  311. )
  312. return res
  313. @classmethod
  314. def insert_ks_star_works_info(cls, star_id: str, profile_id: str, pplay_median_data_90: str, pplay_median_data_30: str, pphoto_cnt_data_90: str, pphoto_cnt_data_30: str, pavg_video_duration_data_90: str, pavg_video_duration_data_30: str, star_work_report_90: str, star_work_report_30: str, pavg_share_cnt_90: str, pavg_share_cnt_30: str):
  315. insert_sql = f"""INSERT INTO ks_star_works_info
  316. (star_id, profile_id, pplay_median_data_90, pplay_median_data_30, pphoto_cnt_data_90, pphoto_cnt_data_30, pavg_video_duration_data_90, pavg_video_duration_data_30, star_work_report_90, star_work_report_30, pavg_share_cnt_90, pavg_share_cnt_30)
  317. values
  318. ("{star_id}", "{profile_id}", "{pplay_median_data_90}", "{pplay_median_data_30}", "{pphoto_cnt_data_90}", "{pphoto_cnt_data_30}", "{pavg_video_duration_data_90}", "{pavg_video_duration_data_30}", "{star_work_report_90}", "{star_work_report_30}", "{pavg_share_cnt_90}", "{pavg_share_cnt_30}")"""
  319. res = MysqlHelper.update_values(
  320. sql=insert_sql
  321. )
  322. return res
  323. @classmethod
  324. def insert_ks_list_portrait_info(cls, star_id: str, profile_id: str, type: str,
  325. name: str, proportion: str):
  326. insert_sql = f"""INSERT INTO ks_list_portrait_info
  327. (star_id, profile_id, type, name, proportion)
  328. values
  329. ("{star_id}", "{profile_id}", "{type}", "{name}", "{proportion}")"""
  330. res = MysqlHelper.update_values(
  331. sql=insert_sql
  332. )
  333. return res
  334. """品类视频新条数记录"""
  335. @classmethod
  336. def insert_spider_supply_targetcnt(cls, channel_id: str, name: str, url: str,
  337. number: str, new_count: str, s_cnt: str):
  338. insert_sql = f"""INSERT INTO spider_supply_targetcnt
  339. (channel_id, name, url, o_cnt, n_cnt, s_cnt)
  340. values
  341. ("{channel_id}", "{name}", "{url}", "{number}", "{new_count}", "{s_cnt}")"""
  342. res = MysqlHelper.update_values(
  343. sql=insert_sql
  344. )
  345. return res
  346. """
  347. 获取相似溯源基础账号
  348. """
  349. @classmethod
  350. def get_machine_making_reflux(cls, channel, channel1, channel2, channel3, channel4):
  351. sql = """SELECT user FROM machine_making_reflux WHERE (channel = %s or channel = %s or channel = %s or channel = %s or channel = %s) and status = 0"""
  352. data = MysqlHelper.get_values(sql, (channel, channel1, channel2, channel3, channel4))
  353. if len(data) == 0 or data == ():
  354. return None
  355. return data
  356. """
  357. 修改相似溯源基础账号状态
  358. """
  359. @classmethod
  360. def update_machine_making_reflux(cls, user_id):
  361. sql = f"""UPDATE machine_making_reflux set status = 1 where user = '{user_id}'"""
  362. res = MysqlHelper.update_values(
  363. sql=sql
  364. )
  365. return res
  366. """插入符合规则的用户主页"""
  367. @classmethod
  368. def insert_user_data(cls, uid, name, account_id, channel, status):
  369. insert_sql = f"""INSERT INTO machine_making_traceability (old_account_id, name, new_account_id, channel, status) values ("{uid}", "{name}","{account_id}","{channel}", {status})"""
  370. res = MysqlHelper.update_values(
  371. sql=insert_sql
  372. )
  373. return res
  374. """相似溯源-视频号数据插入"""
  375. @classmethod
  376. def insert_xssy_sph_info(cls, account_user: str, traceable_user: str, channel: str, traceable_user_v2: str, has_used: str, appid:Optional[str] = None, pq_id:Optional[str] = None):
  377. insert_sql = f"""INSERT INTO xssy_sph (account_user, traceable_user, channel, traceable_user_v2, pq_id, has_used, appid) values ("{account_user}", "{traceable_user}","{channel}", "{traceable_user_v2}","{pq_id}", {has_used},"{appid}")"""
  378. res = MysqlHelper.update_values(
  379. sql=insert_sql
  380. )
  381. return res
  382. """查询该账号是否存在"""
  383. @classmethod
  384. def select_crawler_uesr_v3(cls, link: str):
  385. sql = """SELECT uid FROM crawler_user_v3 WHERE link = %s and source = 'jiqizidonggaizao'"""
  386. data = MysqlHelper.get_values(sql, (link))
  387. if data:
  388. return data
  389. return None