material.py 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. # -*- coding: utf-8 -*-
  2. # @Time: 2023/12/26
  3. import os
  4. import random
  5. import sys
  6. import datetime
  7. sys.path.append(os.getcwd())
  8. from datetime import datetime, timedelta
  9. from common.db import MysqlHelper
  10. from common.feishu import Feishu
  11. from common import Common
  12. class Material():
  13. # 获取所有用户名
  14. @classmethod
  15. def feishu_name(cls):
  16. summary = Feishu.get_values_batch("summary", "n9xlLF")
  17. list = []
  18. for row in summary[2:]:
  19. mark = row[0]
  20. mark_name = row[1]
  21. list.append({"mark": mark, "mark_name": mark_name})
  22. return list
  23. # 获取常规任务汇总表所有
  24. @classmethod
  25. def feishu_list(cls):
  26. summary = Feishu.get_values_batch("summary", "n9xlLF")
  27. list = []
  28. for row in summary[1:]:
  29. mark = row[0]
  30. mark_name = row[1]
  31. feishu_id = row[3]
  32. video_call = row[4]
  33. video_count = row[5]
  34. pq_id = row[8]
  35. if mark:
  36. number = {"mark": mark, "feishu_id": feishu_id, "video_call": video_call, "pq_id": pq_id, "video_count": video_count, "mark_name": mark_name}
  37. list.append(number)
  38. else:
  39. return list
  40. return list
  41. # 获取跟随汇总表所有
  42. @classmethod
  43. def feishu_gs_list(cls):
  44. summary = Feishu.get_values_batch("summary", "gGiXDp")
  45. list = []
  46. for row in summary[1:]:
  47. mark = row[0]
  48. mark_name = row[1]
  49. feishu_id = row[3]
  50. video_call = row[4]
  51. video_count = row[5]
  52. pq_id = row[7]
  53. sum_count = row[8]
  54. if mark:
  55. number = {"mark": mark, "feishu_id": feishu_id, "video_call": video_call, "pq_id": pq_id,
  56. "mark_name": mark_name, "sum_count": sum_count, "video_count": video_count}
  57. list.append(number)
  58. else:
  59. return list
  60. return list
  61. # 获取爆款汇总表所有
  62. @classmethod
  63. def feishu_bk_list(cls):
  64. summary = Feishu.get_values_batch("summary", "xJxEUH")
  65. list = []
  66. for row in summary[1:]:
  67. mark = row[0]
  68. mark_name = row[1]
  69. feishu_id = row[3]
  70. video_call = row[4]
  71. pq_id = row[5]
  72. if pq_id:
  73. number = {"mark": mark, "feishu_id": feishu_id, "video_call": video_call, "pq_id": pq_id,
  74. "mark_name": mark_name}
  75. list.append(number)
  76. return list
  77. # 获取管理后台cookie
  78. @classmethod
  79. def get_houtai_cookie(cls):
  80. douyin_token = Feishu.get_values_batch("MW7VsTb1vhctEot34g7ckrjdnIe", "pLWwBm")
  81. for item in douyin_token:
  82. if item[0] == '管理后台':
  83. return item[1]
  84. # 获取汇总表所有待抓取 用户
  85. @classmethod
  86. def get_all_user(cls, type):
  87. summary = Feishu.get_values_batch("summary", "n9xlLF")
  88. list = []
  89. try:
  90. for row in summary[1:]:
  91. mark = row[0]
  92. mark_name = row[1]
  93. feishu_id = row[3]
  94. sheet = row[6]
  95. token = row[7]
  96. parts = sheet.split(',')
  97. result = []
  98. for part in parts:
  99. sub_parts = part.split('--')
  100. result.append(sub_parts)
  101. douyin = result[0]
  102. kuaishou = result[1]
  103. if type == "douyin":
  104. number = {"mark": mark, "feishu_id": feishu_id, "channel": douyin, "token": token, "mark_name": mark_name}
  105. list.append(number)
  106. elif type == "kuaishou":
  107. number = {"mark": mark, "feishu_id": feishu_id, "channel": kuaishou, "token": token, "mark_name": mark_name}
  108. list.append(number)
  109. except Exception as e:
  110. Common.logger("zhuaqu").warning(f"抓取异常:{e}\n")
  111. return ''
  112. return list
  113. # 获取跟随任务汇总表所有待抓取 用户
  114. @classmethod
  115. def get_all_gs_user(cls, type):
  116. summary = Feishu.get_values_batch("summary", "gGiXDp")
  117. list = []
  118. for row in summary[1:]:
  119. mark = row[0]
  120. mark_name = row[1]
  121. feishu_id = row[3]
  122. sheet = row[5]
  123. token = row[6]
  124. zn_id = row[4]
  125. parts = zn_id.split(',')
  126. zn_result = []
  127. for part in parts:
  128. sub_parts = part.split('--')
  129. zn_result.append(sub_parts)
  130. zn_link = zn_result[0][0] # 脚本链接
  131. if sheet:
  132. parts = sheet.split(',')
  133. result = []
  134. for part in parts:
  135. sub_parts = part.split('--')
  136. result.append(sub_parts)
  137. douyin = result[0]
  138. kuaishou = result[1]
  139. if type == "douyin":
  140. number = {"mark": mark, "feishu_id": feishu_id, "channel": douyin, "token": token,
  141. "mark_name": mark_name, "sheet": "1"}
  142. list.append(number)
  143. elif type == "kuaishou":
  144. number = {"mark": mark, "feishu_id": feishu_id, "channel": kuaishou, "token": token,
  145. "mark_name": mark_name, "sheet": "1"}
  146. list.append(number)
  147. elif type == "zhannei":
  148. number = {"mark": mark, "feishu_id": feishu_id, "channel": zn_link, "token": token,
  149. "mark_name": mark_name, "sheet": None}
  150. list.append(number)
  151. return list
  152. # 获取抖音 cookie
  153. @classmethod
  154. def get_cookie(cls, feishu_id, token, channel):
  155. token = Feishu.get_values_batch(feishu_id, token)
  156. for item in token:
  157. if item[0] == channel:
  158. return item[1]
  159. # 获取抖音视频链接 存入数据库
  160. @classmethod
  161. def insert_user(cls, feishu_id, channel_id, mark, channel):
  162. user_list = []
  163. # 获取抖音视频链接
  164. douyin = Feishu.get_values_batch(feishu_id, channel_id)
  165. # 提取账号昵称和账号主页链接
  166. for row in douyin[1:]:
  167. if channel == "站内":
  168. uid = row[0]
  169. else:
  170. uid = row[1]
  171. if uid:
  172. insert_sql = f"""INSERT INTO agc_channel_data (user_id, channel, mark) values ('{uid}', '{channel}', '{mark}')"""
  173. MysqlHelper.update_values(
  174. sql=insert_sql,
  175. env="prod",
  176. machine="",
  177. )
  178. user_list.append(uid)
  179. return user_list
  180. @classmethod
  181. def get_uid(cls, uid, mark):
  182. current_time = datetime.now()
  183. formatted_time = current_time.strftime("%Y-%m-%d")
  184. uid_list = f"""select account_id FROM agc_video_deposit where time = '{formatted_time}' AND audio = '{uid}' and mark = '{mark}' GROUP BY account_id """
  185. id_list = MysqlHelper.get_values(uid_list, "prod")
  186. return id_list
  187. # 获取音频类型+字幕+标题
  188. @classmethod
  189. def get_all_data(cls, feishu_id, link, mark):
  190. list = []
  191. video_list = []
  192. # 获取音频类型+字幕
  193. all_data = Feishu.get_values_batch(feishu_id, link)
  194. for row in all_data[1:]:
  195. video = row[0]
  196. uid = row[1]
  197. text = row[2]
  198. if len(row) == 3:
  199. cover = None
  200. else:
  201. cover = row[3]
  202. if len(row) <= 4:
  203. title = None
  204. else:
  205. title = row[4]
  206. number = {"uid": uid, "text": text, "cover": cover, "title": title, }
  207. if uid:
  208. list.append(number)
  209. if video:
  210. video_list.append(video)
  211. else:
  212. return list, video_list
  213. return list, video_list
  214. # 获取音频类型+字幕+标题
  215. @classmethod
  216. def get_allbk_data(cls, feishu_id, link):
  217. list_data = []
  218. # 获取音频类型+字幕
  219. all_data = Feishu.get_values_batch(feishu_id, link)
  220. for row in all_data[1:]:
  221. uid = row[0]
  222. text = row[1]
  223. video = row[2]
  224. if len(row) == 3:
  225. cover = None
  226. else:
  227. cover = row[3]
  228. if len(row) <= 4:
  229. title = None
  230. else:
  231. title = row[4]
  232. number = {"uid": uid, "text": text, "video": video, "cover": cover, "title": title}
  233. if uid:
  234. list_data.append(number)
  235. else:
  236. return list_data
  237. return list_data
  238. # 获取站内视频id
  239. @classmethod
  240. def get_zn_user(cls, feishu_id, link):
  241. video_list = []
  242. # 获取音频类型+字幕
  243. all_data = Feishu.get_values_batch(feishu_id, link)
  244. for row in all_data[1:]:
  245. video = row[0]
  246. if video:
  247. video_list.append(video)
  248. else:
  249. return video_list
  250. return video_list
  251. # 获取用户名
  252. @classmethod
  253. def get_user_id(cls, feishu_id, channel_id):
  254. user_list = []
  255. # 获取抖音视频链接
  256. douyin = Feishu.get_values_batch(feishu_id, channel_id)
  257. # 提取账号昵称和账号主页链接
  258. for row in douyin[1:]:
  259. uid = row[1]
  260. user_list.append(uid)
  261. return user_list