Min / Comp
Perry1323's picture
Create Comp
5a7326b verified
import os
import time
import requests
import json
api_key = "Fill in the API Key"
prompt = "Description of your video"
model = "video-01"
output_file_name = "output.mp4" #Please enter the save path for the generated video here
def invoke_video_generation()->str:
print("-----------------Submit video generation task-----------------")
url = "https://api.minimaxi.chat/v1/video_generation"
payload = json.dumps({
"prompt": prompt,
"model": model
})
headers = {
'authorization': 'Bearer ' + api_key,
'content-type': 'application/json',
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
task_id = response.json()['task_id']
print("Video generation task submitted successfully, task ID.:"+task_id)
return task_id
def query_video_generation(task_id: str):
url = "https://api.minimaxi.chat/v1/query/video_generation?task_id="+task_id
headers = {
'authorization': 'Bearer ' + api_key
}
response = requests.request("GET", url, headers=headers)
status = response.json()['status']
if status == 'Preparing':
print("...Preparing...")
return "", 'Preparing'
elif status == 'Queueing':
print("...In the queue...")
return "", 'Queueing'
elif status == 'Processing':
print("...Generating...")
return "", 'Processing'
elif status == 'Success':
return response.json()['file_id'], "Finished"
elif status == 'Fail':
return "", "Fail"
else:
return "", "Unknown"
def fetch_video_result(file_id: str):
print("---------------Video generated successfully, downloading now---------------")
url = "https://api.minimaxi.chat/v1/files/retrieve?file_id="+file_id
headers = {
'authorization': 'Bearer '+api_key,
}
response = requests.request("GET", url, headers=headers)
print(response.text)
download_url = response.json()['file']['download_url']
print("Video download link:" + download_url)
with open(output_file_name, 'wb') as f:
f.write(requests.get(download_url).content)
print("THe video has been downloaded in:"+os.getcwd()+'/'+output_file_name)
if __name__ == '__main__':
task_id = invoke_video_generation()
print("-----------------Video generation task submitted -----------------")
while True:
time.sleep(10)
file_id, status = query_video_generation(task_id)
if file_id != "":
fetch_video_result(file_id)
print("---------------Successful---------------")
break
elif status == "Fail" or status == "Unknown":
print("---------------Failed---------------")
break