material.py 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  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. summary = Feishu.get_values_batch("summary", "gGiXDp")
  41. list = []
  42. for row in summary[1:]:
  43. mark = row[0]
  44. mark_name = row[1]
  45. feishu_id = row[3]
  46. video_call = row[4]
  47. pq_id = row[7]
  48. sum_count = row[8]
  49. sheet = row[5]
  50. zd_count = row[8]
  51. platform_list = []
  52. if sheet:
  53. parts = sheet.split(',')
  54. for part in parts:
  55. sub_parts = part.split('--')
  56. platform_list.append(sub_parts)
  57. number = {"mark": mark, "feishu_id": feishu_id, "video_call": video_call, "pq_id": pq_id,
  58. "mark_name": mark_name, "sum_count": sum_count, "platform_list": platform_list, "zd_count": zd_count}
  59. list.append(number)
  60. return list
  61. # 获取管理后台cookie
  62. @classmethod
  63. def get_houtai_cookie(cls):
  64. douyin_token = Feishu.get_values_batch("MW7VsTb1vhctEot34g7ckrjdnIe", "pLWwBm")
  65. for item in douyin_token:
  66. if item[0] == '管理后台':
  67. return item[1]
  68. # 获取汇总表所有待抓取 用户
  69. @classmethod
  70. def get_all_user(cls, type):
  71. summary = Feishu.get_values_batch("summary", "n9xlLF")
  72. list = []
  73. try:
  74. for row in summary[2:]:
  75. mark = row[0]
  76. mark_name = row[1]
  77. feishu_id = row[3]
  78. sheet = row[5]
  79. token = row[6]
  80. parts = sheet.split(',')
  81. result = []
  82. for part in parts:
  83. sub_parts = part.split('--')
  84. result.append(sub_parts)
  85. douyin = result[0]
  86. kuaishou = result[1]
  87. if type == "douyin":
  88. number = {"mark": mark, "feishu_id": feishu_id, "channel": douyin, "token": token, "mark_name": mark_name}
  89. list.append(number)
  90. elif type == "kuaishou":
  91. number = {"mark": mark, "feishu_id": feishu_id, "channel": kuaishou, "token": token, "mark_name": mark_name}
  92. list.append(number)
  93. except Exception as e:
  94. Common.logger("zhuaqu").warning(f"抓取异常:{e}\n")
  95. return ''
  96. return list
  97. # 获取跟随任务汇总表所有待抓取 用户
  98. @classmethod
  99. def get_all_gs_user(cls, type):
  100. summary = Feishu.get_values_batch("summary", "gGiXDp")
  101. list = []
  102. for row in summary[1:]:
  103. mark = row[0]
  104. mark_name = row[1]
  105. feishu_id = row[3]
  106. sheet = row[5]
  107. token = row[6]
  108. zn_id = row[4]
  109. parts = zn_id.split(',')
  110. zn_result = []
  111. for part in parts:
  112. sub_parts = part.split('--')
  113. zn_result.append(sub_parts)
  114. zn_link = zn_result[0][0] # 脚本链接
  115. if sheet:
  116. parts = sheet.split(',')
  117. result = []
  118. for part in parts:
  119. sub_parts = part.split('--')
  120. result.append(sub_parts)
  121. douyin = result[0]
  122. kuaishou = result[1]
  123. if type == "douyin":
  124. number = {"mark": mark, "feishu_id": feishu_id, "channel": douyin, "token": token,
  125. "mark_name": mark_name, "sheet": "1"}
  126. list.append(number)
  127. elif type == "kuaishou":
  128. number = {"mark": mark, "feishu_id": feishu_id, "channel": kuaishou, "token": token,
  129. "mark_name": mark_name, "sheet": "1"}
  130. list.append(number)
  131. elif type == "zhannei":
  132. number = {"mark": mark, "feishu_id": feishu_id, "channel": zn_link, "token": token,
  133. "mark_name": mark_name, "sheet": None}
  134. list.append(number)
  135. return list
  136. # 获取抖音 cookie
  137. @classmethod
  138. def get_cookie(cls, feishu_id, token, channel):
  139. token = Feishu.get_values_batch(feishu_id, token)
  140. for item in token:
  141. if item[0] == channel:
  142. return item[1]
  143. # 获取抖音视频链接 存入数据库
  144. @classmethod
  145. def insert_user(cls, feishu_id, channel_id, mark, channel):
  146. user_list = []
  147. # 获取抖音视频链接
  148. douyin = Feishu.get_values_batch(feishu_id, channel_id)
  149. # 提取账号昵称和账号主页链接
  150. for row in douyin[1:]:
  151. if channel == "站内":
  152. uid = row[0]
  153. else:
  154. uid = row[1]
  155. if uid:
  156. insert_sql = f"""INSERT INTO agc_channel_data (user_id, channel, mark) values ('{uid}', '{channel}', '{mark}')"""
  157. MysqlHelper.update_values(
  158. sql=insert_sql,
  159. env="prod",
  160. machine="",
  161. )
  162. user_list.append(uid)
  163. return user_list
  164. @classmethod
  165. def get_uid(cls, uid, mark):
  166. current_time = datetime.now()
  167. formatted_time = current_time.strftime("%Y-%m-%d")
  168. uid_list = f"""select account_id FROM agc_video_deposit where time = '{formatted_time}' AND audio = '{uid}' and mark = '{mark}' GROUP BY account_id """
  169. id_list = MysqlHelper.get_values(uid_list, "prod")
  170. return id_list
  171. # 获取音频类型+字幕+标题
  172. @classmethod
  173. def get_all_data(cls, feishu_id, link, mark):
  174. list = []
  175. video_list = []
  176. # 获取音频类型+字幕
  177. all_data = Feishu.get_values_batch(feishu_id, link)
  178. for row in all_data[1:]:
  179. uid = row[1]
  180. text = row[2]
  181. video = row[0]
  182. number = {"uid": uid, "text": text}
  183. if uid:
  184. list.append(number)
  185. if video:
  186. video_list.append(video)
  187. while True:
  188. list1 = random.choice(list)
  189. uid1 = list1['uid']
  190. srt = list1['text']
  191. id_list = cls.get_uid(uid1, mark)
  192. if len(id_list) < 2:
  193. return uid1, srt, video_list
  194. # 获取站内视频id
  195. @classmethod
  196. def get_zn_user(cls, feishu_id, link):
  197. video_list = []
  198. # 获取音频类型+字幕
  199. all_data = Feishu.get_values_batch(feishu_id, link)
  200. for row in all_data[1:]:
  201. video = row[0]
  202. if video:
  203. video_list.append(video)
  204. return video_list
  205. # 获取用户名
  206. @classmethod
  207. def get_user_id(cls, feishu_id, channel_id):
  208. user_list = []
  209. # 获取抖音视频链接
  210. douyin = Feishu.get_values_batch(feishu_id, channel_id)
  211. # 提取账号昵称和账号主页链接
  212. for row in douyin[1:]:
  213. uid = row[1]
  214. user_list.append(uid)
  215. return user_list