feishu_form.py 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. # -*- coding: utf-8 -*-
  2. import json
  3. import os
  4. import random
  5. import sys
  6. import datetime
  7. sys.path.append(os.getcwd())
  8. from common.feishu_utils import Feishu
  9. class Material():
  10. """
  11. 获取汇总表所有负责人列表
  12. """
  13. @classmethod
  14. def feishu_list(cls):
  15. summary = Feishu.get_values_batch("summary", "bc154d")
  16. list = []
  17. for row in summary[1:]:
  18. mark = row[0]
  19. name = row[1]
  20. feishu_id = row[3]
  21. feishu_sheet = row[4]
  22. cookie_sheet = row[5]
  23. number = {"mark": mark, "name": name, "feishu_id": feishu_id, "feishu_sheet": feishu_sheet, "cookie_sheet": cookie_sheet}
  24. if mark:
  25. list.append(number)
  26. else:
  27. return list
  28. return list
  29. """
  30. 获取对应负责人任务明细
  31. """
  32. @classmethod
  33. def get_task_data(cls, feishu_id, feishu_sheet):
  34. data = Feishu.get_values_batch(feishu_id, feishu_sheet)
  35. processed_list = []
  36. try:
  37. for row in data[1:]:
  38. channel_id = row[1]
  39. channel_url = str(row[2])
  40. piaoquan_id = row[3]
  41. number = row[4]
  42. video_share = row[5]
  43. video_ending = row[6]
  44. crop_tool = row[7]
  45. gg_duration = row[8]
  46. title = row[9]
  47. if channel_url == None or channel_url == "" or len(channel_url) == 0:
  48. continue
  49. try:
  50. ls_number = int(row[10])
  51. except:
  52. ls_number = None
  53. def count_items(item, separator):
  54. if item and item not in {'None', ''}:
  55. return len(item.split(separator))
  56. return 0
  57. video_id_total = count_items(str(channel_url), ',')
  58. title_total = count_items(str(title), '/')
  59. video_ending_total = count_items(str(video_ending), ',')
  60. values = [channel_id, video_id_total, piaoquan_id, video_share, video_ending_total, crop_tool, gg_duration, title_total]
  61. filtered_values = [str(value) for value in values if value is not None and value != "None"]
  62. task_mark = "_".join(map(str, filtered_values))
  63. if piaoquan_id and piaoquan_id not in {'None', ''}:
  64. if ',' in channel_url:
  65. channel_url = channel_url.split(',')
  66. else:
  67. channel_url = [channel_url]
  68. for user in channel_url:
  69. number_dict = {
  70. "task_mark": task_mark,
  71. "channel_id": channel_id,
  72. "channel_url": user,
  73. "piaoquan_id": piaoquan_id,
  74. "number": number,
  75. "title": title,
  76. "video_share": video_share,
  77. "video_ending": video_ending,
  78. "crop_total": crop_tool,
  79. "gg_duration_total": gg_duration,
  80. }
  81. processed_list.append(json.dumps(number_dict, ensure_ascii=False))
  82. if ls_number and ls_number not in {'None', ''}:
  83. if channel_id == "抖音":
  84. new_channel_id = "抖音历史"
  85. if channel_id == "快手":
  86. new_channel_id = "快手历史"
  87. values = [new_channel_id, video_id_total, piaoquan_id, video_share, video_ending_total, crop_tool,
  88. gg_duration, title_total]
  89. filtered_values = [str(value) for value in values if value is not None and value != "None"]
  90. task_mark = "_".join(map(str, filtered_values))
  91. number_dict = {
  92. "task_mark": task_mark,
  93. "channel_id": new_channel_id,
  94. "channel_url": user,
  95. "piaoquan_id": piaoquan_id,
  96. "number": ls_number,
  97. "title": title,
  98. "video_share": video_share,
  99. "video_ending": video_ending,
  100. "crop_total": crop_tool,
  101. "gg_duration_total": gg_duration,
  102. }
  103. processed_list.append(json.dumps(number_dict, ensure_ascii=False))
  104. else:
  105. return processed_list
  106. return processed_list
  107. except:
  108. return processed_list
  109. """
  110. 获取对应片尾+srt
  111. """
  112. @classmethod
  113. def get_pwsrt_data(cls, feishu_id, feishu_sheet, video_ending):
  114. data = Feishu.get_values_batch(feishu_id, feishu_sheet)
  115. for row in data[1:]:
  116. pw_mark = row[0]
  117. pw_id = row[1]
  118. pw_srt = row[2]
  119. if pw_id != 'None' and pw_id != '' and pw_id != None:
  120. if pw_mark == video_ending:
  121. number = {"pw_id": pw_id, "pw_srt": pw_srt}
  122. return number
  123. return ''
  124. """
  125. 获取对应固定字幕
  126. """
  127. @classmethod
  128. def get_pzsrt_data(cls, feishu_id, feishu_sheet, video_share_name):
  129. data = Feishu.get_values_batch(feishu_id, feishu_sheet)
  130. for row in data[1:]:
  131. pz_mark = row[0]
  132. pz_zm = row[1]
  133. if pz_zm != 'None' and pz_zm != '' and pz_zm != None:
  134. if pz_mark == video_share_name:
  135. return pz_zm
  136. return ''
  137. """
  138. 获取 cookie 信息
  139. """
  140. @classmethod
  141. def get_cookie_data(cls, feishu_id, cookie_sheet, channel):
  142. data = Feishu.get_values_batch(feishu_id, cookie_sheet)
  143. for row in data[1:]:
  144. channel_mask = row[0]
  145. cookie = row[1]
  146. if channel_mask == channel:
  147. return cookie