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