| 
					
				 | 
			
			
				@@ -1,64 +1,30 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import os 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import concurrent.futures 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import re 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import schedule 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import time 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import threading 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from common import Material 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from video_rewriting.video_processor import VideoProcessor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 控制读写速度的参数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 MAX_BPS = 120 * 1024 * 1024  # 120MB/s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 MAX_WORKERS = os.cpu_count() * 2  # 线程池最大工作线程数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 READ_WRITE_CHUNK_SIZE = 1024 * 1024  # 每次读写的块大小 (1MB) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 SLEEP_INTERVAL = READ_WRITE_CHUNK_SIZE / MAX_BPS  # 控制每次读写的延迟时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # 全局锁,用于同步读写操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 lock = threading.Lock() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-def video_task_start(data): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    mark = VideoProcessor.main(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    print(f"返回用户名{mark}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# data = Material.feishu_list() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# video_task_start(data[0]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-def controlled_io_operation(data): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    with lock: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        start_time = time.time() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        time.sleep(SLEEP_INTERVAL) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        end_time = time.time() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        elapsed_time = end_time - start_time 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if elapsed_time < SLEEP_INTERVAL: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            time.sleep(SLEEP_INTERVAL - elapsed_time) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    video_task_start(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-def video_start(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    print("开始执行生成视频脚本.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    data = Material.feishu_list() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    data = data[1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    with concurrent.futures.ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        futures = {executor.submit(controlled_io_operation, data)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for future in concurrent.futures.as_completed(futures): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                future.result() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                print("处理结果: 成功") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            except concurrent.futures.TimeoutError: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                print("任务超时,已取消.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            except Exception as e: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                print("处理任务时出现异常:", e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    print("执行生成视频脚本结束.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-video_start() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-schedule.every(6).hours.do(video_start) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-while True: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    schedule.run_pending() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    time.sleep(1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+def video_task_start(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = Material.feishu_list()[1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """处理视频任务,返回用户名并根据结果决定延迟时间""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    while True: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            mark = VideoProcessor.main(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            print(f"返回用户名: {mark}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            time.sleep(10 if mark else 120)  # 根据 mark 是否为空设置延迟 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        except Exception as e: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            print("处理任务时出现异常:", e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            time.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if __name__ == '__main__': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    video_task_start() 
			 |