agc_job.py 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. # import os
  2. # import concurrent.futures
  3. # import re
  4. #
  5. # import schedule
  6. # import time
  7. # import threading
  8. # from common import Material, Common, Feishu
  9. # from video_agc.agc_video_method import AgcVidoe
  10. #
  11. # # 控制读写速度的参数
  12. # MAX_BPS = 1 * 1024 * 1024 # 120MB/s
  13. # MAX_WORKERS = os.cpu_count() # 线程池最大工作线程数量
  14. # READ_WRITE_CHUNK_SIZE = 512 * 1024 # 每次读写的块大小 (1MB)
  15. # SLEEP_INTERVAL = READ_WRITE_CHUNK_SIZE / MAX_BPS # 控制每次读写的延迟时间
  16. #
  17. # # 全局锁,用于同步读写操作
  18. # lock = threading.Lock()
  19. #
  20. # # 记录今天已经返回的用户名
  21. # gs_today = []
  22. # cg_today = []
  23. # bk_today = []
  24. #
  25. # def gs_video_start(user_data):
  26. # global gs_today
  27. # user_data_mark = user_data["mark"]
  28. # video_call = user_data["video_call"]
  29. # mark_name = user_data['mark_name']
  30. #
  31. # if user_data_mark is not None and user_data_mark in gs_today:
  32. # Common.logger("video").info(f"视频脚本参数中的用户名 {user_data_mark} 今天已经返回过,不再启动线程")
  33. # print(f"视频脚本参数中的用户名 {user_data_mark} 今天已经返回过,不再启动线程。")
  34. # return # 如果返回了某个用户名,并且今天已经返回过,则不启动线程
  35. # if video_call is not None and video_call in gs_today:
  36. # print(f"视频脚本参数中的脚本{user_data_mark} 今天已经返回过,不再启动线程。")
  37. # return # 如果返回了某个用户名,并且今天已经返回过,则不启动线程
  38. # else:
  39. # print(f"视频脚本参数{user_data}")
  40. # mark = AgcVidoe.video_gs_stitching(user_data)
  41. # print(f"返回用户名{mark}")
  42. # if mark:
  43. # Common.logger("video").info(f"返回用户名{mark}")
  44. # gs_today.append(mark)
  45. # zd_count = user_data["zd_count"] # 生成总条数
  46. # # 总条数
  47. # result = re.match(r'([^0-9]+)', user_data_mark).group()
  48. # all_count = AgcVidoe.get_link_gs_count(result)
  49. # if all_count >= int(zd_count):
  50. # Feishu.bot('recommend', 'AGC完成通知', '今日脚本跟随视频拼接任务完成啦~', user_data_mark.split("-")[0], mark_name)
  51. #
  52. # def cg_video_start(user_data):
  53. # global cg_today
  54. # user_data_mark = user_data["mark"]
  55. # if user_data_mark and user_data_mark in cg_today:
  56. # Common.logger("video").info(f"视频脚本参数中的用户名 {user_data_mark} 今天已经返回过,不再启动线程。")
  57. # print(f"视频脚本参数中的用户名 {user_data_mark} 今天已经返回过,不再启动线程。")
  58. # return
  59. # print(f"视频脚本参数 {user_data}")
  60. # mark = AgcVidoe.video_stitching(user_data)
  61. # print(f"返回用户名 {mark}")
  62. # if mark:
  63. # Common.logger("video").info(f"返回用户名 {mark}")
  64. # cg_today.append(user_data_mark)
  65. #
  66. # def bk_video_start(user_data):
  67. # global bk_today
  68. # user_data_mark = user_data["mark"]
  69. # # 开始准备执行生成视频脚本
  70. # if user_data_mark is not None and user_data_mark in bk_today:
  71. # Common.logger("video").info(f"视频脚本参数中的用户名 {user_data_mark} 今天已经返回过,不再启动线程。")
  72. # print(f"视频脚本参数中的用户名 {user_data_mark} 今天已经返回过,不再启动线程。")
  73. # return
  74. # mark = AgcVidoe.video_bk_stitching(user_data)
  75. # print(f"返回用户名{mark}")
  76. # if mark:
  77. # bk_today.append(mark)
  78. # Common.logger("video").info(f"返回用户名{mark}")
  79. #
  80. # def controlled_io_operation(platform, data):
  81. # with lock:
  82. # start_time = time.time()
  83. # time.sleep(SLEEP_INTERVAL)
  84. # end_time = time.time()
  85. # elapsed_time = end_time - start_time
  86. # if elapsed_time < SLEEP_INTERVAL:
  87. # time.sleep(SLEEP_INTERVAL - elapsed_time)
  88. # if platform == "gs":
  89. # gs_video_start(data)
  90. # elif platform == "cg":
  91. # cg_video_start(data)
  92. # elif platform == "bk":
  93. # bk_video_start(data)
  94. #
  95. # def video_start(platform):
  96. # print("开始执行生成视频脚本.")
  97. # if platform == "cg":
  98. # data = Material.feishu_list()
  99. # elif platform == "gs":
  100. # data = Material.feishu_gs_list()
  101. # elif platform == "bk":
  102. # data = Material.feishu_bk_list()
  103. # with concurrent.futures.ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor:
  104. # futures = {executor.submit(controlled_io_operation, platform, user_data): user_data for user_data in data}
  105. # for future in concurrent.futures.as_completed(futures):
  106. # try:
  107. # future.result()
  108. # print("处理结果: 成功")
  109. # except concurrent.futures.TimeoutError:
  110. # print("任务超时,已取消.")
  111. # except Exception as e:
  112. # print("处理任务时出现异常:", e)
  113. # print("执行生成视频脚本结束.")
  114. #
  115. # def gs_usernames_today():
  116. # gs_today.clear()
  117. # print("gs_usernames_today 已清空")
  118. # def cg_usernames_today():
  119. # cg_today.clear()
  120. # print("cg_usernames_today 已清空")
  121. # def bk_usernames_today():
  122. # bk_today.clear()
  123. # print("bk_usernames_today 已清空")
  124. #
  125. # # 定时任务设置
  126. # schedule.every().day.at("21:10").do(gs_usernames_today)
  127. # schedule.every().day.at("04:10").do(cg_usernames_today)
  128. # schedule.every().day.at("00:10").do(bk_usernames_today)
  129. #
  130. # schedule.every(10).minutes.do(video_start, "cg")
  131. # schedule.every(10).minutes.do(video_start, "gs")
  132. # # schedule.every(10).minutes.do(video_start, "bk")
  133. # schedule.every().day.at("00:20").do(video_start, "bk")
  134. #
  135. #
  136. # if __name__ == "__main__":
  137. # while True:
  138. # try:
  139. # schedule.run_pending()
  140. # except Exception as e:
  141. # print("执行调度任务时出现异常:", e)
  142. # time.sleep(1)
  143. from common import Material
  144. from video_agc.agc_video import AGC
  145. data = Material.feishu_list()
  146. AGC.video(data[3], "常规")