import os
import sys
import time
from gmicloud import Client
from gmicloud._internal._models import SubmitRequestRequest
def time_to_str(time_in_seconds):
"""Convert seconds to a human-readable format."""
hours, remainder = divmod(time_in_seconds, 3600)
minutes, seconds = divmod(remainder, 60)
return f"{hours:02d}:{minutes:02d}:{seconds:02d}"
# Initialize client
client = Client()
# 1. Get available models
print("=== Available Models ===")
models = client.video_manager.get_models()
for model in models:
print(f"- {model.model}: {model.brief_description}")
# 2. Get model details
model_id = "Wan-AI_Wan2.1-T2V-14B"
print(f"\n=== Model Details for {model_id} ===")
model_detail = client.video_manager.get_model_detail(model_id)
print(f"Description: {model_detail.detailed_description}")
print(f"Parameters: {model_detail.parameters}")
# 3. Submit video generation request
print("\n=== Submitting Video Generation Request ===")
request = SubmitRequestRequest(
model=model_id,
payload={
"prompt": "A majestic eagle soaring through a clear blue sky",
"video_length": 5,
"negative_prompt": "blurry, low quality, distorted",
"cfg_scale": 7.5
}
)
response = client.video_manager.create_request(request)
request_id = response.request_id
print(f"Request submitted with ID: {request_id}")
# 4. Monitor progress
print("\n=== Monitoring Progress ===")
count = 0
while True:
request_detail = client.video_manager.get_request_detail(request_id)
time_str = time_to_str(count * 5)
print(f"[{time_str}] Status: {request_detail.status}")
if request_detail.status == "success":
print("✅ Video generation completed successfully!")
print(f"Result: {request_detail.outcome}")
break
elif request_detail.status == "failed":
print("❌ Video generation failed!")
break
elif request_detail.status == "cancelled":
print("🚫 Request was cancelled!")
break
time.sleep(5)
count += 1
# 5. Get all requests for this model
print(f"\n=== All Requests for {model_id} ===")
all_requests = client.video_manager.get_requests(model_id)
for req in all_requests:
print(f"ID: {req.request_id}, Status: {req.status}, Created: {req.created_at}")