去水印批量下载: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 是命令行抖音去水印批量下载工具,视频、图集、合集、音乐原声都能整页拉走,适合内容创作者和竞品分析师。它自动挑无水印源、按作者分目录、用 SQLite 防重复。过去逐条点开抠水印的事,现在一条命令出原片。
为什么不用手动搞了
把旧做法和工具的做法放一起看,差别一下就清楚了:
| 你原来要做的 | douyin-downloader 帮你做的 |
|---|---|
| 逐条点开、单独下载,再手动抠掉水印 | 自动选无水印源,多条并发一起拉 |
| 下过第二遍,重复文件占硬盘 | SQLite 历史 + 磁盘双查重,跳过已有 |
| 下到一半断了就从头再来 | 失败按 1s/2s/5s 指数退避自动重试 |
| 文件堆一个文件夹,找不到 | 按作者/模式/日期自动建子目录 |
一句话:省掉的是"点、抠、判重、归档"这几件纯体力活,你只负责给链接。
五分钟跑通:环境、认证到首次下载
📌第 1 步:装环境和依赖
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt要求 Python 3.8+,macOS / Linux / Windows 都行。跑完最后一行没有红字报错,就说明依赖装好了。
📌第 2 步:拿 Cookie(新手最容易卡的一步)
Cookie 是访问抖音接口的登录凭证,没有它分页和去水印都受限。先装浏览器组件(供自动抓取用):
pip install playwright python -m playwright install chromium自动获取(推荐新手):复制一份配置,再跑抓取脚本:
cp config.example.yml config.yml python -m tools.cookie_fetcher --config config.yml它会弹出一个浏览器窗口,你在里面登录抖音,回到终端按回车,Cookie 就自动写进config.yml了。
手动配置(适合能自己抠 Cookie 的老手):打开config.yml最下面的cookies段,把ttwid、odin_tt、passport_csrf_token等字段填上,来源是浏览器登录抖音后从开发者工具复制出来的同名 Cookie。
📌第 3 步:首次下载
配置里link填一条视频或主页地址,然后:
python run.py -c config.yml执行后你会看到终端滚出并发进度条,Downloaded/下按作者名分好文件夹。如果你更习惯图形界面,项目自带桌面端 Douzy(与命令行共享同一套后端),粘个链接就能一键开始:
完整工作流:把一位博主的 20 条作品存下来
选一个真实场景走一遍——把某位创作者最近的 20 条作品整批存下来。
1. 编辑config.yml,只留这几行就够:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: - post # 只下作者自己发的作品 number: post: 20 # 20 = 最近 20 条;0 = 全量2. 运行:
python run.py -c config.yml3. 预期结果:20 条作品并发拉取,每条一个子目录,目录里是...mp4视频本体,加上可选的封面、音乐、JSON 元数据。文件落在Downloaded/作者名/post/日期_标题_id/。
4. 再看一次任务状态(桌面端任务中心会列出每个任务的成败和数量统计,还能一键打开输出目录):
5. 增量再跑:博主又更新了新作品时,把increase.post设为true再跑一次,磁盘里已有的作品会被跳过,只补新增的。整个过程你只改了数字、跑了两条命令。
进阶玩法:增量定时、自定义命名与 API 服务
✅如果你需要每天凌晨自动拉新:配合系统定时任务 + 增量开关,不用盯着它跑。
# crontab -e 里加一行:每天 2 点增量拉取 0 2 * * * cd /path/to/douyin-downloader && python run.py -c config.yml配置里保留increase.post: true,本地已存在的主文件会被自动跳过,只补新作品。
✅如果你想自己定文件怎么放:命名模板支持一组变量,目录层级也能按年月排:
filename_template: "{author}_{date}_{title}_{id}" folder_template: "{year}/{month}/{author}" author_dir: nickname_uid # 昵称_唯一ID,避免重名博主被合并模板里必须带{id},否则重名会互相覆盖。完整变量列表和取值见 config.example.yml。
✅如果你想把它变成服务被别的程序调用:装两个可选依赖,起一个本地 REST 接口:
pip install fastapi uvicorn python run.py --serve --serve-port 8000 curl -X POST http://127.0.0.1:8000/api/v1/download -d '{"url": "https://www.douyin.com/video/xxx"}'提交后返回job_id,再GET /api/v1/jobs/{job_id}查进度和结果。
踩坑速查:高频问题一句话解法
⚠️只拉到约 20 条就停了原因:触发了分页风控,接口不再往后翻页。 解法:browser_fallback.enabled: true且headless: false,会弹出浏览器让你手动过一次验证,别关早了。
Cookie 过期、请求被拒、下不动原因:登录凭证失效。 解法:重跑python -m tools.cookie_fetcher --config config.yml,重新登录一次。
想强制重新下载某一条,却跳过了原因:工具用"数据库记录 + 本地文件"双查重,只删一处不够。 解法:删掉含该aweme_id的本地文件夹,再用sqlite3从dy_downloader.db删对应记录。
进度刷屏、日志吵原因:日志静默没打开。 解法:配置里progress.quiet_logs: true;需要排查时临时加--show-warnings或-v。
想要原画,拿到的却偏糊原因:默认video_quality: highest只挑最高转码档,不是上传原片。 解法:改video_quality: original去探测原片(每条多一次探测请求,失败会退回转码档)。
谁最适合用 + 收尾
它最对路的三类人:追素材的自媒体创作者、攒课程案例的教育工作者、盯竞品内容的分析师——共同点都是"要存得多、要存得齐、不想重复劳动"。项目基于 MIT 协议开源,可自由使用、修改和分发。觉得哪里不顺用,欢迎去提 issue 或直接提个 PR。
【免费下载链接】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),仅供参考