跃问AI视频创作进阶:命令行脚本批量生成自动下载

作者:技术拾光时间:2026-08-03 12:14:02浏览:644

使用Python脚本调用跃问AI视频生成API,通过requests库提交请求、轮询状态并自动下载MP4文件。在prompts.txt中逐行写入提示词,脚本循环处理实现批量生成,添加time.sleep防抖和tqdm进度条,文件名自动编号并截取提示词前20字符,完成从提交到保存的自动化流程。

想要实现批量生成AI视频,不少人首先想到的是手动操作网页、逐条提交、挨个下载——几十条视频搞下来,手指都点酸了。其实换个思路,用几行命令行脚本就能让跃问AI自动完成从提交提示词到保存MP4的完整流程,而且可重复、可批量、可监控。本文详细介绍如何用Python脚本调用跃问API实现自动化视频生成,帮助提升内容生产效率。

跃问AI视频创作进阶:命令行脚本批量生成自动下载

准备环境与获取API密钥

首先登录跃问AI官网,进入「开发者中心」→「API管理」→「创建新密钥」,将生成的密钥字符串复制保存。该密钥是调用视频生成接口的凭证,切勿在公开代码或Git仓库中硬编码——这是几乎所有API事故的根源。

本地环境需要Python 3.9以上版本,并安装两个库:pip install requests tqdm。其中requests负责HTTP请求,tqdm用于显示下载进度条。

构造基础生成请求

新建一个文件,例如 generate_video.py,先搭建基本框架:

import requests
import json

api_url = "https://api.yuewen.ai/v1/video/generate"
headers = {
    "Authorization": "Bearer YOUR_API_KEY_HERE",
    "Content-Type": "application/json"
}
payload = {
    "prompt": "一只橘猫戴着墨镜骑摩托车,赛博朋克风格",
    "aspect_ratio": "16:9",
    "duration": 4
}
response = requests.post(api_url, headers=headers, json=payload)
print(response.json())

将 YOUR_API_KEY_HERE 替换为刚才复制的密钥,保存后运行 python generate_video.py。如果返回的JSON中包含 task_id,说明请求已成功提交。

轮询任务状态并自动下载

跃问AI的视频生成采用异步模式:提交后仅获得任务ID,需要定时查询状态,直到 status 变为 completed 才能获取视频链接。以下代码封装了完整的轮询逻辑,仅依赖 requests 和 time.sleep:

import time

task_id = response.json().get("task_id")
if not task_id:
    raise ValueError("未获取到task_id")

status_url = f"https://api.yuewen.ai/v1/video/status/{task_id}"
for i in range(60):
    status_resp = requests.get(status_url, headers=headers)
    status_data = status_resp.json()
    if status_data.get("status") == "completed":
        video_url = status_data.get("video_url")
        if video_url:
            r = requests.get(video_url)
            with open(f"output_{task_id}.mp4", "wb") as f:
                f.write(r.content)
            print("视频已保存")
        exit(0)
    time.sleep(5)

代码每5秒查询一次状态,最多等待5分钟(60×5秒)。如果超时后状态仍为 processing 或变为 failed,脚本会自然退出,不会报错也不会重试——这样设计是为了避免批量流程中因某一条卡住而阻塞整个队列。

批量生成多条视频

单条测试通过后,即可进入批量操作。

第一步:准备提示词列表

新建一个 prompts.txt 文件,每行写一条提示词。例如:

一只柴犬在雪山顶上仰天长啸,8K高清
复古胶片风,东京街头雨夜,霓虹灯倒映水洼
水墨动画,竹林深处老僧扫落叶,留白构图

第二步:修改脚本主循环

将原来固定的 payload["prompt"] 替换为逐行读取:

with open("prompts.txt", "r", encoding="utf-8") as f:
    prompts = [line.strip() for line in f if line.strip()]

for idx, prompt in enumerate(prompts, 1):
    print(f"正在提交第{idx}条:{prompt[:30]}...")
    payload["prompt"] = prompt
    response = requests.post(api_url, headers=headers, json=payload)
    task_id = response.json().get("task_id")
    if not task_id:
        print(f"第{idx}条提交失败")
        continue
    # 此处接入上一步的轮询+下载逻辑(代码结构一致,略)

第三步:添加防抖延迟

在 for 循环末尾加入 time.sleep(2),避免连续请求触发频率限制。跃问AI接口默认限流为3次/秒,不加延迟可能导致后续请求返回429错误——很多开发者都曾踩过这个坑。

优化下载体验:添加进度条与文件命名

使用 tqdm 替代简单的 print,使下载过程可视化,用户体验更好。同时为文件名添加编号和部分提示词,方便后续整理:

from tqdm import tqdm

r = requests.get(video_url, stream=True)
total_size = int(r.headers.get('content-length', 0))
with open(f"video_{idx:03d}_{prompt[:20].replace('/', '_')}.mp4", "wb") as f:
    for data in tqdm(r.iter_content(1024), total=total_size//1024, unit="KB", desc=f"下载{idx}"):
        f.write(data)

idx:03d 保证编号按001、002……顺序排列;prompt[:20].replace('/', '_') 截取前20个字符,并将斜杠替换为下划线——Windows文件系统不允许斜杠,这一处理可避免保存失败。

整套流程搭建完成后,只需修改 prompts.txt,运行一次脚本即可自动完成所有视频的生成与下载。如需增加重试机制、通知推送或自动上传至云存储,思路相同,在循环内扩展即可。