如何用curl调用ReClip:10分钟写出你的第一个命令行视频下载脚本
2026/9/16 18:28:56 网站建设 项目流程

如何用curl调用ReClip:10分钟写出你的第一个命令行视频下载脚本

【免费下载链接】reclipDownload videos from almost any website. Lightweight, self-hosted media downloader with a clean web UI.项目地址: https://gitcode.com/GitHub_Trending/rec/reclip

ReClip 是一款开源、轻量、可自托管的视频下载器,自带简洁的 Web 界面,支持从 YouTube、TikTok、Instagram 等 1000+ 网站下载 MP4 视频或提取 MP3 音频。它的后端只有约 150 行 Python 代码,并暴露了干净的 REST 接口——这意味着你可以完全绕开浏览器,用curl直接驱动它。本文带你 10 分钟走完"启动服务 → 调接口 → 拼脚本"的全流程,写出你的第一个命令行视频下载脚本。

准备工作:一键启动 ReClip 下载服务

在调用接口之前,需要先让 ReClip 跑起来。

1. 安装依赖:ReClip 的下载引擎依赖yt-dlpffmpeg,安装脚本会自动检测缺失项:

# macOS (Homebrew) brew install yt-dlp ffmpeg # Debian / Ubuntu sudo apt install ffmpeg && pip install yt-dlp

2. 获取项目代码

git clone https://gitcode.com/GitHub_Trending/rec/reclip cd reclip

3. 启动服务

./reclip.sh

启动脚本 reclip.sh 会自动检查 python3、yt-dlp、ffmpeg 是否齐全,创建虚拟环境并安装 requirements.txt 中仅有的两个依赖(flask 和 yt-dlp),然后监听http://localhost:8899

启动后打开浏览器,你会看到 ReClip 的界面:左侧粘贴一条或多条视频链接(支持空格、逗号、换行分隔),选择 MP4 或 MP3 模式,点击FETCH加载视频信息,再点DOWNLOADDOWNLOAD ALL批量下载:

💡 界面逻辑其实就对应后端几个接口,下面我们会用 curl 逐一把它们调通。源码参考:templates/index.html、app.py。

认识 ReClip 的 5 个 REST 接口(curl 调用的核心)

ReClip 的全部后端逻辑都在 app.py 中,接口非常直白:

方法路径作用
POST/api/info获取视频标题、时长、封面、清晰度列表
POST/api/playlist展开播放列表,返回各条视频的 URL
POST/api/download提交下载任务,返回任务 ID
GET/api/status/<job_id>查询任务状态(downloading / done / error)
GET/api/file/<job_id>下载完成后的文件

其中三个关键接口:获取视频信息在 app.py,提交任务与查询状态在 app.py。

第一步:用 curl 获取视频标题与清晰度

/api/info发送一个包含 URL 的 JSON,即可拿到视频元信息:

curl -s -X POST http://localhost:8899/api/info \ -H "Content-Type: application/json" \ -d '{"url": "https://www.youtube.com/watch?v=xxx"}'

返回示例:

{ "title": "My awesome video", "thumbnail": "https://.../thumb.jpg", "duration": 87, "uploader": "SomeChannel", "formats": [ {"id": "137", "label": "1080p", "height": 1080}, {"id": "18", "label": "360p", "height": 360} ] }

formats数组中的id就是下一步选清晰度时要用的format_id

第二步:用 curl 提交下载任务,拿到任务 ID

下载是异步的:先提交任务,ReClip 在后台线程里跑yt-dlp(单任务最长 5 分钟),接口立即返回一个job_id

curl -s -X POST http://localhost:8899/api/download \ -H "Content-Type: application/json" \ -d '{"url": "https://www.youtube.com/watch?v=xxx", "format": "video"}'

返回:

{"job_id": "a1b2c3d4e5"}

format字段有两个取值:video下载 MP4,audio提取 MP3。如果第一步拿到了清晰度列表,还可以带上"format_id": "137"指定 1080p。

第三步:用 curl 轮询下载状态

拿着job_id反复查询状态,直到doneerror

curl -s http://localhost:8899/api/status/a1b2c3d4e5
{"status": "done", "error": null, "filename": "My awesome video.mp4"}
  • downloading:还在下载,等 2 秒再查
  • done:完成,可以取文件
  • error:失败,error字段里是 yt-dlp 的报错信息(如"该视频受地区限制")

第四步:用 curl 保存文件到本地

任务完成后,请求文件接口并用-OJ自动按服务端建议的文件名保存:

curl -s -OJ http://localhost:8899/api/file/a1b2c3d4e5

ReClip 会自动清理非法字符、把标题当作文件名,并删除下载过程中的临时分片文件。

完整脚本:一行命令完成视频下载

把四步拼起来,就是你要的第一个命令行视频下载脚本dl.sh

#!/bin/bash # 用法: ./dl.sh <视频URL> URL="$1" # 提交下载任务 JOB_ID=$(curl -s -X POST http://localhost:8899/api/download \ -H "Content-Type: application/json" \ -d "{\"url\": \"$URL\"}" | grep -o '"job_id":"[^"]*"' | cut -d'"' -f4) # 轮询状态 while true; do RESP=$(curl -s http://localhost:8899/api/status/$JOB_ID) STATUS=$(echo "$RESP" | grep -o '"status":"[^"]*"' | cut -d'"' -f4) [ "$STATUS" = "done" ] && break [ "$STATUS" = "error" ] && { echo "下载失败: $RESP"; exit 1; } sleep 2 done # 保存文件 curl -s -OJ http://localhost:8899/api/file/$JOB_ID echo "✅ 下载完成"

以后下载任何支持站点的视频,只需:

./dl.sh "https://www.youtube.com/watch?v=xxx"

配合/api/playlist接口(见 app.py),你还可以先展开播放列表拿到全部视频 URL,再循环调用这个脚本实现批量命令行下载

进阶技巧:用 curl 提取 MP3 音频

想只留声音不要画面?把format改成audio即可,ReClip 会用yt-dlp -x --audio-format mp3帮你转码:

curl -s -X POST http://localhost:8899/api/download \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com/podcast-ep01", "format": "audio"}'

同样轮询状态、下载文件后,你得到的就是一个 MP3。

常见问题

Q1:curl 提示连接被拒绝?服务没启动,或端口不对。ReClip 默认监听 8899 端口,可通过环境变量PORT/HOST修改(见 app.py)。启动时终端会明确提示ReClip is running at http://localhost:8899

Q2:想在服务器上长期运行?用 Docker 更省事。项目自带 Dockerfile(内置 ffmpeg、以非 root 用户运行)和 docker-compose.yml(下载文件挂载到独立卷):

docker compose up -d

Q3:下载失败提示超时?单任务有 5 分钟上限,大文件建议改用 Web 界面批量下载,或检查网络。

Q4:可以商用吗?工具仅限个人用途,请尊重版权和平台服务条款。项目采用 MIT 协议(见 LICENSE)。

小结

ReClip 把"视频下载"拆成了 4 个语义清晰的接口:info → download → status → file。用 curl 逐个调通它们,你就能在终端里完成从获取信息到保存文件的全流程,并轻松扩展出批量下载、MP3 提取、接入 CI 等玩法——这就是命令行视频下载脚本的最小闭环。

【免费下载链接】reclipDownload videos from almost any website. Lightweight, self-hosted media downloader with a clean web UI.项目地址: https://gitcode.com/GitHub_Trending/rec/reclip

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询