| 
														
															@@ -1,59 +1,22 @@ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-import asyncio 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import uvicorn 
														 | 
														
														 | 
														
															 import uvicorn 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 from fastapi import FastAPI 
														 | 
														
														 | 
														
															 from fastapi import FastAPI 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 from pydantic import BaseModel 
														 | 
														
														 | 
														
															 from pydantic import BaseModel 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 from google_ai.generativeai_video import main 
														 | 
														
														 | 
														
															 from google_ai.generativeai_video import main 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 app = FastAPI() 
														 | 
														
														 | 
														
															 app = FastAPI() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-api_keys = [ 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    {'key': 'AIzaSyDs4FWRuwrEnQzu1M_Skio6NII6Mp4whAw', 'locked': False}, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    {'key': 'AIzaSyC-IxUvJhbiKWA7uN1RTtVbOjt3pj_-Apc', 'locked': False}, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    {'key': 'AIzaSyB43Pvugb-CMkEXJUSubXEAxKxYflCPPNU', 'locked': False}, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    {'key': 'AIzaSyAYgOeHS2NUlVuVe14rgNDaxXRNRt4smuY', 'locked': False}, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    {'key': 'AIzaSyAa4H7YzIOiqA0QIDuO6kNErFBoWT-BEtc', 'locked': False}, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    {'key': 'AIzaSyAUvBSpjFcm7b8FsgRUTG6anzoalDp9gYg', 'locked': False}, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    {'key': 'AIzaSyB43Pvugb-CMkEXJUSubXEAxKxYflCPPNU', 'locked': False} 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-] 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-lock = asyncio.Lock() 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 class VideoRequest(BaseModel): 
														 | 
														
														 | 
														
															 class VideoRequest(BaseModel): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     video_path: str 
														 | 
														
														 | 
														
															     video_path: str 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     prompt: str 
														 | 
														
														 | 
														
															     prompt: str 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     mark: str 
														 | 
														
														 | 
														
															     mark: str 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-async def get_available_api_key(): 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    """获取一个未锁定的 API key,如果没有可用的则等待 60 秒后重试""" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    while True: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        async with lock: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            for key_data in api_keys: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                if not key_data['locked']: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    key_data['locked'] = True  # 锁定该 key 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    return key_data['key'] 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        print("没有可用的 API key,等待 60 秒后重试...") 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        await asyncio.sleep(60) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-async def release_api_key(api_key): 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    """释放已锁定的 API key,并将其放到列表末尾""" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    async with lock: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        for i, key_data in enumerate(api_keys): 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            if key_data['key'] == api_key: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                key_data['locked'] = False  # 释放该 key 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                # 将释放的 key 移动到列表末尾 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                api_keys.append(api_keys.pop(i)) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                break 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 @app.post("/process_video/") 
														 | 
														
														 | 
														
															 @app.post("/process_video/") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 async def process_video(request: VideoRequest): 
														 | 
														
														 | 
														
															 async def process_video(request: VideoRequest): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     """处理视频请求""" 
														 | 
														
														 | 
														
															     """处理视频请求""" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    print( f"Received request: {request.model_dump()}" ) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     video_path = request.video_path 
														 | 
														
														 | 
														
															     video_path = request.video_path 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     prompt = request.prompt 
														 | 
														
														 | 
														
															     prompt = request.prompt 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     mark = request.mark 
														 | 
														
														 | 
														
															     mark = request.mark 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    # 获取一个可用的 API key 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    # api_key = await get_available_api_key() 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     api_key = "AIzaSyCor0q5w37Dy6fGxloLlCT7KqyEFU3PWP8" 
														 | 
														
														 | 
														
															     api_key = "AIzaSyCor0q5w37Dy6fGxloLlCT7KqyEFU3PWP8" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     try: 
														 | 
														
														 | 
														
															     try: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         print("来一个请求,使用 API key:", api_key) 
														 | 
														
														 | 
														
															         print("来一个请求,使用 API key:", api_key) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -72,9 +35,7 @@ async def process_video(request: VideoRequest): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             "result": f"视频处理失败: {e}", 
														 | 
														
														 | 
														
															             "result": f"视频处理失败: {e}", 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             "mark": f"视频处理失败: {e}" 
														 | 
														
														 | 
														
															             "mark": f"视频处理失败: {e}" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    # finally: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    #     # 释放 API key,确保后续请求可以使用 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    #     await release_api_key(api_key) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 if __name__ == "__main__": 
														 | 
														
														 | 
														
															 if __name__ == "__main__": 
														 |