material.py 7.7 KB

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