material.py 10 KB

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