游乐游手机版
首页/AI热点日报/热点详情

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

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

提到批量生成AI视频,不少人第一反应就是手动操作网页、一条条提交提示词、再逐一下载——几十条视频弄完,手都酸了。其实换个思路,用几行命令行脚本就能让跃问AI自动跑完从提交提示词到保存MP4的完整流程,而且可重复、可批量、可实时监控。这篇就详细拆解一下具体的实现方法,帮助您快速掌握跃问API视频生成的自动化技巧。

准备环境与获取API密钥

首先登录跃问AI官网账号,进入「开发者中心」→「API管理」→「创建新密钥」,把生成的密钥字符串复制下来。这个密钥就是调用视频生成接口的唯一凭证,千万别在公开代码或Git仓库中直接硬编码它——这几乎是所有API事故的根源。

本地环境需要安装Python 3.9以上版本,然后安装两个依赖库:pip install requests tqdm。requests负责HTTP请求,tqdm用来显示下载进度条,后面你会看到它的实用之处。

构造基础生成请求

新建一个Python文件,比如 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 才能获取视频链接。下面这套代码封装了完整的轮询逻辑,仅依赖 requeststime.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,运行一次脚本就能坐等所有视频自动下载完毕。如果想加上重试机制、通知推送、或自动上传到云存储,思路也是一样的,在循环中扩展即可。

来源:https://www.php.cn/faq/2769109.html?uid=1221864

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。