douyin-downloader 实操指南:抖音作品批量下载去水印完整教程
【免费下载链接】douyin-downloaderA practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量下载工具,去水印,支持视频、图集、合集、音乐(原声)。项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader
douyin-downloader 是一个开源的抖音批量下载工具:给它一个作者主页链接,它按无水印源把作品批量存档到本地,并自动去重、可断点续跑。你不需要会 Python 开发,会开终端就够。
先跑通:一条命令下完第一条作品
跑通后的样子是这样的:终端里进度条走完,Downloaded/目录下出现作者名/post/日期_标题_作品ID/子目录,里面的 mp4 就是无水印原片,而不是 App 里保存的带水印版本。
在跑到这一步之前,需要完成 4 个前置动作:
- 拿到项目并安装依赖(要求 Python 3.8 以上,macOS / Linux / Windows 均可):
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt- 复制一份配置模板,这是后面所有命令读取的唯一输入文件:
cp config.example.yml config.yml- 安装浏览器自动化依赖(Playwright,一个控制真实浏览器的库),自动获取 Cookie:
pip install playwright python -m playwright install chromium python -m tools.cookie_fetcher --config config.yml这一步会自动弹出抖音网页,你扫码登录后回到终端按 Enter,Cookie(网页版登录凭证,工具靠它读取作品数据)就写进 config.yml 了。手动从浏览器复制 Cookie 容易漏字段,不推荐。
- 首次运行:
python run.py -c config.yml示例配置里number.post是 1,所以第一次只下 1 条作品,专门用来验证环境是否配好。
这条命令背后做了什么
刚才那条命令做的事可以拆成三段:读配置、拉列表、落盘。
读配置。config.example.yml 里每一项都有注释,核心的是link(抖音链接,示例里是一个作者主页)、mode(下载模式,示例为post即作者作品)、number(每种模式的下载条数上限)、cookies(登录凭证)。加载逻辑在 config/config_loader.py,缺省的项会取默认值,你不必一次看懂全部字段。
拉列表。工具按发布时间倒序翻作者的作品列表,number.post: 1就只取第 1 条,0表示不限条数。每条视频自动选用无水印源,并根据video_quality(默认highest)从多档码率里挑合适画质。
落盘。文件按「作者名 / 模式 / 作品」三级目录整理,默认落在path指定的./Downloaded/下;同时 SQLite(一个本地数据库文件,这里就是dy_downloader.db)会记下已下载的作品。数据库记录和磁盘文件双重核对,是后面「增量下载」不重复下载的基础。
全量存档一个创作者的作品
默认配置只下 1 条,全量存档要改三处:link换成目标作者主页,number.post改成 0(不限条数),按需打开封面、原声、元数据开关。作品按发布时间倒序拉取,开关打开后对应文件会和 mp4 一起保存在作品子目录里。
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx path: ./Downloaded/ mode: - post number: post: 0 # 0 表示不限条数 video: true cover: true music: true json: true video_quality: highest # 可选 original / highest / lowest / 指定分辨率注意:作者作品量大时,建议先把number.post设成具体数字(比如 100)验证流程,确认目录和画质没问题再放开为 0。
每周只补新作品:增量下载
创作者持续更新时,你想每周跑一次同一份配置,只拿新增作品,已有的不再下一遍。打开数据库和增量开关即可,其余配置保持不动。
database: true database_path: dy_downloader.db increase: post: true原理:每次运行前,工具先查dy_downloader.db里有没有这条作品的记录,再核对磁盘上主文件是否还在,两者都确认才跳过。所以判断以本地媒体文件存在为准——你删掉文件,下次会重新下载;只删数据库记录,则不会触发重下。
只下载某个月份的作品
只想留上个月发布的作品时,不用爬完整主页:填两个日期边界,工具翻到早于start_time的作品后会提前停下,省掉大量翻页。
start_time: "2026-08-01" end_time: "2026-08-31"注意:日期格式固定为YYYY-MM-DD,end_time包含当天整天,不需要写下一天。
把下载能力接进自己的工作流
视频内容转成文字
想让每条视频附带文字稿,开启转写功能。它会调用 OpenAI 的音频转写接口,对每条视频作品在同目录生成.transcript.txt和.transcript.json两个文件,图文作品不会转写。
transcript: enabled: true api_key_env: OPENAI_API_KEY密钥通过环境变量提供,例如export OPENAI_API_KEY="sk-xxxx"。
以 REST API 形式被别的系统调用
想把自己的系统接到这套下载能力上,可以把工具起成 REST API(一种用 HTTP 接口暴露服务的方式):先装依赖,再启动服务。
pip install fastapi uvicorn python run.py --serve --serve-port 8000启动后,其他程序向POST /api/v1/download提交{"url": "..."}拿任务 ID,再向GET /api/v1/jobs/{job_id}查询状态,接口清单见 README.zh-CN.md。
配置速查
| 字段 | 作用 | 默认值 | 何时需要改 |
|---|---|---|---|
link | 抖音作品或作者主页链接 | 示例作者主页 | 每个新目标都要换 |
mode | 下载模式(post/like/mix/music 等) | [post] | 下载点赞、合集、音乐时切换 |
number.post | post 模式下载条数上限 | 示例配置为 1 | 全量存档改 0(不限) |
path | 输出目录 | ./Downloaded/ | 想换保存位置时 |
cover/music/json | 是否附带保存封面 / 原声 / 元数据 | 均false | 想留额外产物时 |
video_quality | 画质档位选择 | highest | 要原画或省流量时 |
start_time/end_time | 发布时间过滤 | ""(不限) | 只下某时间段作品时 |
database | 启用 SQLite 去重与历史记录 | true | 增量下载必须保持开启 |
database_path | 数据库文件路径 | dy_downloader.db | 想隔离不同任务历史时 |
increase.post | post 模式增量开关 | true | 周期性只补新作品时 |
thread | 并发下载数 | 5 | 大批量嫌慢时调高 |
proxy | API 请求与下载的 HTTP 代理 | "" | 网络不稳时配置 |
transcript.enabled | 视频转写开关 | false | 要生成文字稿时 |
transcript.api_key_env | 密钥所在的环境变量名 | OPENAI_API_KEY | 使用其他密钥来源时 |
browser_fallback.enabled | 翻页受限时启用浏览器兜底 | true | 抓不全时保持开启 |
browser_fallback.headless | 兜底浏览器是否隐藏窗口 | false | 需要手动过验证时保持 false |
cookies | 网页版登录凭证 | 占位符 | 过期失效时重新获取 |
排错附录
现象:批量下载只抓到 20 条左右就停,没有明确报错。
原因:抖音对作品列表翻页有风控限制,接口策略会随平台调整,以 README 的限制说明 为准。
处理:确认浏览器兜底打开,弹窗出现后手动完成验证再关:
browser_fallback: enabled: true headless: false现象:之前能跑,现在报 403 或提示未登录。
原因:Cookie 有有效期,一般只有几天到几周。
处理:重跑自动获取,重新扫码登录一次:
python -m tools.cookie_fetcher --config config.yml现象:大批量下载速度慢,进度推进很慢。
原因:默认并发 5、速率限制偏保守,稳定性优先于速度。
处理:调高并发(不建议超过 8),网络不稳时加代理:
thread: 8 proxy: "http://127.0.0.1:7890"文件在哪、下一步做什么
跑完之后,所有产物默认在Downloaded/里:三级目录按作者、模式、作品整理,dy_downloader.db记录下载历史,download_manifest.jsonl是一份清单快照。
下一步:把 config.yml 里的示例链接换成目标作者主页,直接运行python run.py -c config.yml。
命令行版面向抖音国内站;不想碰命令行可以关注内测中的桌面版 Douzy,粘贴链接即可开始批量下载,还支持 TikTok 和 YouTube。
任务中心里能查到每个批量下载任务的成功与失败条数,失败项可直接重试。
仅供个人学习与备份,不用于商业用途。
【免费下载链接】douyin-downloaderA practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量下载工具,去水印,支持视频、图集、合集、音乐(原声)。项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考