agc_assign_main.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. from common import Material, Common
  2. from video_agc.agc_video_method import AgcVidoe
  3. import concurrent.futures
  4. import schedule
  5. import time
  6. # 记录今天已经返回的用户名
  7. returned_usernames_today = []
  8. def video_start(user_data):
  9. global returned_usernames_today
  10. user_data_mark = user_data["mark"]
  11. video_call = user_data["video_call"]
  12. # 开始准备执行生成视频脚本
  13. if user_data_mark is not None and user_data_mark in returned_usernames_today:
  14. Common.logger("video").info(f"视频脚本参数中的用户名 {user_data_mark} 今天已经返回过,不再启动线程。今天已经返回的用户名:{returned_usernames_today}")
  15. print(f"视频脚本参数中的用户名 {user_data_mark} 今天已经返回过,不再启动线程。")
  16. return # 如果返回了某个用户名,并且今天已经返回过,则不启动线程
  17. if video_call is not None and video_call in returned_usernames_today:
  18. print(f"视频脚本参数中的脚本{user_data_mark} 今天已经返回过,不再启动线程。")
  19. return # 如果返回了某个用户名,并且今天已经返回过,则不启动线程
  20. else:
  21. print(f"视频脚本参数{user_data}")
  22. mark = AgcVidoe.video_gs_stitching(user_data)
  23. print(f"返回用户名{mark}")
  24. if mark:
  25. Common.logger("video").info(f"返回用户名{mark}")
  26. returned_usernames_today.append(mark)
  27. # gs_name_list = Material.feishu_gs_list()
  28. # video_start(gs_name_list[0])
  29. def clear_returned_usernames():
  30. returned_usernames_today.clear()
  31. print("returned_usernames_today 已清空")
  32. # 定义定时任务
  33. def video_task():
  34. print("开始执行生成视频脚.")
  35. data = Material.feishu_gs_list()
  36. # 创建一个线程池
  37. with concurrent.futures.ThreadPoolExecutor() as executor:
  38. futures = [executor.submit(video_start, user_data) for user_data in data]
  39. # 等待所有任务执行完成
  40. for future in concurrent.futures.as_completed(futures):
  41. try:
  42. # 获取每个任务的执行结果
  43. result = future.result()
  44. print("处理结果:", result)
  45. except Exception as e:
  46. print("处理任务时出现异常:", e)
  47. print("执行生成视频脚结束")
  48. # 每天0点10清空集合
  49. schedule.every().day.at("00:05").do(clear_returned_usernames)
  50. #每10分钟执行次脚本
  51. schedule.every(10).minutes.do(video_task)
  52. while True:
  53. schedule.run_pending()
  54. time.sleep(1)