- Backend: - Implemented robust Veo video generation including 'lastFrame' and 'referenceImages' support - Fixed video URI extraction with recursive search for API response stability - Implemented direct HTTP video download to resolve SDK method missing errors - Frontend (Video Generator): - Updated validation to allow Text-to-Video for Veo without requiring a first frame - Fixed job state clearing to prevent UI from showing previous completion status - Frontend (My Files & Library): - Moved batch actions toolbar to bottom-left to prevent blocking pagination - Added 'Deselect All' button to batch actions toolbar - Added file type indicators to asset cards - Components: - Added 'Clear Finished' button to Active Jobs tracker - Updated Asset Library modal toolbar positioning
39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
import httpx
|
|
import asyncio
|
|
import os
|
|
import sys
|
|
|
|
# Add current directory to path to find app module if needed
|
|
sys.path.append(os.getcwd())
|
|
|
|
try:
|
|
from app.config import settings
|
|
api_key = settings.google_api_key
|
|
except ImportError:
|
|
# Try reading .env manually if app config fails
|
|
print("Could not import settings, checking env...")
|
|
from dotenv import load_dotenv
|
|
load_dotenv()
|
|
api_key = os.getenv("GOOGLE_API_KEY")
|
|
|
|
if not api_key:
|
|
print("No API Key found")
|
|
sys.exit(1)
|
|
|
|
async def check_models():
|
|
url = f"https://generativelanguage.googleapis.com/v1beta/models?key={api_key}"
|
|
async with httpx.AsyncClient() as client:
|
|
resp = await client.get(url)
|
|
if resp.status_code != 200:
|
|
print(f"Error: {resp.status_code} {resp.text}")
|
|
return
|
|
|
|
data = resp.json()
|
|
print(f"Found {len(data.get('models', []))} models.")
|
|
for m in data.get('models', []):
|
|
if 'veo' in m['name'].lower() or 'video' in m['name'].lower():
|
|
print(f"Model: {m['name']}")
|
|
print(f" - Methods: {m.get('supportedGenerationMethods')}")
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(check_models())
|