三步跑起来的抖音批量下载工具: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 去重和浏览器兜底。
核心能力拆解
1. 多模式批量采集:一条链接自动路由
先说它最反直觉的一点:你不需要关心下载的是单条视频、图集还是整个博主主页。把链接丢给它,URL 解析器先判断链接类型,再由工厂模式分派到对应的下载器——这就是 core/downloader_factory.py 里DownloaderFactory.create(url_type, ...)做的事,video、user、gallery、mix、music各走各的流程。
# 工厂按链接类型分派下载器,新增类型只需注册新分支 if url_type == "user": return UserDownloader(**common_args)主页批量下载本身又拆成了"模式策略":core/user_modes/ 下每个文件是一种模式(post作品、like喜欢、mix合集、music音乐),通过注册表自动发现。想批量抓博主主页就用post,想把某人的喜欢列表存下来就用like——配置里加个模式名,代码一行不用改。
2. 增量下载:重复运行不重复劳动
批量下载最怕的不是失败,而是"重跑一遍等于白下两遍"。douyin-downloader 用两层机制去重:
- 磁盘主文件检查:
increase为true时,已存在非空媒体文件的作品直接跳过; - SQLite 历史记录:
database: true时把作品明细与每次任务快照写入dy_downloader.db,另有 append-only 的download_manifest.jsonl清单,每条作品一行 JSON,含发布日期、标签、文件路径,方便事后检索。
以前存档 1000 个作品中断后要人工对账,现在直接重跑命令,已下载的自动跳过、缺失的补下(redownload_missing_files默认开启),存储占用和请求次数都省下一大半。
3. 抗限流兜底:限速 + 重试 + 浏览器兜底
批量请求必然撞风控。项目没有靠"多试几次"硬扛,而是在 control/ 里把并发、限速、重试拆成了独立模块:thread: 5控制并发,retry_times: 3控制失败重试次数,速率限制器负责平滑请求节奏。当 API 翻页被卡住时,还能启用 Playwright 浏览器兜底(browser_fallback.enabled: true),用真实浏览器滚动加载补全作品列表——这也是 README 里推荐保持headless: false的原因:让你能在弹出的浏览器里手动完成验证。
桌面版(Douzy)把同样的批量能力做成了图形界面:勾选模式、设数量上限、提交任务
落地实操:三步跑起来
先看清楚现状:根据 README,自 2026 年起抖音风控已限制 CLI 的单视频/合集/音乐等接口,主页作品批量下载(post 模式)+ 浏览器兜底是当前 CLI 最稳的路径;日常高频使用建议配合 Douzy 桌面版。下文以 CLI 为准。
第一步:安装
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader python -m pip install -r requirements.txt playwright python -m playwright install chromium # 浏览器兜底与 Cookie 获取需要第二步:配置并登录
把 config.example.yml 复制为config.yml,然后跑一次 Cookie 抓取器——它会自动开浏览器让你扫码登录,回车后 Cookie 就落进配置了:
cp config.example.yml config.yml python -m tools.cookie_fetcher --config config.yml最小可用配置只需改四处:
link: - https://www.douyin.com/user/YOUR_SEC_UID # 换成目标博主主页 path: ./Downloaded/ mode: [post] number: post: 10 # 0 表示不限数量第三步:运行
python run.py -c config.yml # -v 可输出详细日志跑起来之后,每个作品按作者名/post/YYYY-MM-DD_标题_作品ID/归档,日期取自作品发布时间而非下载时间,回溯几个月的主页也不会全堆在"今天"。
进阶:容器化部署
仓库自带 Dockerfile,基于python:3.12-slim,已声明/app/Downloaded和config.yml两个挂载卷,适合挂在服务器上长期跑定时任务:
docker build -t douyin-dl . docker run -v $(pwd)/Downloaded:/app/Downloaded -v $(pwd)/config.yml:/app/config.yml douyin-dl进阶玩法与避坑指南
按时间范围存档。start_time/end_time(YYYY-MM-DD)做日期过滤,适合"只存这个博主 2025 年 Q4 的更新"这类需求;配合number.post: 0(不限数量)可以整段时期拉满。
画质与产物按需取。video_quality支持original(探测上传原片,失败自动退回最高转码档)到360p各档;music: true会额外保存原声,json: true保存元数据。做音频素材库时只开music+json,磁盘占用能省七成以上。
REST API 服务化。装好 fastapi + uvicorn 后执行python run.py --serve --serve-port 8000,就能把下载任务交给外部系统调度,server/ 里维护任务队列(默认上限 500 个 job)。
避坑清单:
| 坑 | 说明 |
|---|---|
| Cookie 失效 | 重跑python -m tools.cookie_fetcher --config config.yml即可,不要手改配置里的 Cookie 字段 |
| 主页只抓到少量作品 | 保持browser_fallback.enabled: true+headless: false,在弹出的浏览器里手动过验证 |
| 想强制重下 | 把increase.post设为false,不需要清数据库 |
| 直播录制 | 属于实验功能,HLS 源只保存播放列表,不是可直接播放的视频 |
| CLI 接口受限 | 点赞/合集/音乐等接口被风控拦截时,更新 Cookie 或重试都无解,建议用 Douzy 桌面版 |
Douzy 桌面版把抖音、TikTok、YouTube、Telegram、X 放进同一个任务中心
生态与参与
项目是标准的 Python 包结构:core/ 业务逻辑、control/ 并发控制、storage/ 文件与数据库、auth/ 登录态管理、config/ 配置加载(支持DOUYIN_*环境变量覆盖)。扩展一个新下载模式的路径很清晰:在core/user_modes/加一个策略类,注册表会自动发现。
贡献入口也很直接:
python -m pip install -e ".[dev]" python -m pytest tests/ # 70+ 测试用例 ruff check .协议为 MIT,LICENSE 与 PROJECT_SUMMARY.md 里有完整的架构说明。注意项目声明仅用于学习和个人数据管理,批量采集时请遵守平台规则与版权要求。
结语
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
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考