抖音批量下载完整教程:如何用 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 去重、浏览器兜底与直播录制,适合个人数据备份与素材收集的用户。
📋 核心功能清单
先用一张表过一遍这个抖音下载器能做什么。全部能力由一个 YAML 配置文件驱动,无需写代码:
| 能力 | 说明 |
|---|---|
| 单条链接下载 | 视频、图文、合集、音乐链接直接识别,v.douyin.com短链自动解析 |
| 主页批量下载 | 六种模式:post发布作品 /like点赞作品 /mix合集 /music原声 /collect收藏夹 /collectmix收藏合集 |
| 无水印与画质选择 | 优先取无水印源;video_quality可选最高转码档、原画探测或指定 1080p 等分辨率(匹配不到自动降级) |
| 并发与限速 | 默认 5 线程、2 请求/秒限速,失败按 1s/2s/5s 指数退避重试 |
| 双重去重 | SQLite 数据库记录 + 本地文件名检查,同一作品跨模式不重复下载 |
| 浏览器兜底 | post翻页受限时自动启动浏览器继续抓取,支持人工完成验证 |
| 扩展能力 | 评论采集、直播录制、热搜榜快照、关键词搜索、REST API 服务、Bark/Telegram/Webhook 完成通知、OpenAI 语音转写 |
文件默认按Downloaded/作者名/模式/日期_标题_aweme_id/组织,视频、封面、音乐、JSON 元数据同目录存放,另生成download_manifest.jsonl清单,便于后续检索。
同一套后端还提供桌面版 Douzy(内测中,从项目 Releases 页获取):粘贴链接开下、同步关注列表、在任务中心管理多链接队列。
🚀 安装到首次运行:从依赖到第一次下载
1. 安装依赖
Python 3.9+ 环境,三条命令:
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt需要浏览器兜底或自动取 Cookie 时再装:
pip install playwright python -m playwright install chromium2. 写配置
把 config.example.yml 复制为config.yml,改成最小配置即可:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx path: ./Downloaded/ mode: - post number: post: 50 thread: 5 database: truenumber为各模式的数量上限,0表示全量;更多字段含义见 README.zh-CN.md 的"关键配置项"。
3. 获取 Cookie
多数批量任务需要有效 Cookie。推荐用项目自带的自动脚本 tools/cookie_fetcher.py:
python -m tools.cookie_fetcher --config config.yml在弹出的浏览器里登录抖音,回终端按 Enter,Cookie 会自动写回配置。
4. 第一次下载
python run.py -c config.yml常用命令行参数:
| 参数 | 说明 |
|---|---|
-u, --url | 追加链接(可重复传),配合-c覆盖或补充配置 |
-t, --thread | 临时改并发数 |
-p, --path | 临时改下载目录 |
--hot-board [N] | 拉取抖音热搜榜导出 JSONL |
--search 关键词 | 关键词搜索,--search-max控制条数 |
--serve | REST API 服务模式(需另装 fastapi + uvicorn) |
🎯 典型场景:批量下载任务怎么写
场景一:博主内容归档
需求:把某博主的全部教程和合集存档,之后定期补新。
操作:number写 0 表示全量,加上music可顺带保存其使用过的原声:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: - post - mix - music number: post: 0 mix: 0 music: 0效果:作品按post/mix/music子目录归类,文件名用作品发布日期 + 标题 + ID(非下载时间)。同一配置重跑时配合increase增量开关,只拉取新发布的内容。
场景二:账号收藏夹批量保存
需求:把自己账号里的收藏作品、收藏合集备份下来。
操作:collect/collectmix只认当前 Cookie 对应账号,且必须单独使用,不能与post/like/mix/music混用:
link: - https://www.douyin.com/user/self?showTab=favorite_collection mode: - collect number: collect: 0效果:收藏内容进入collect/目录。桌面版里可以直接在"收藏与喜欢"页查看当前账号的收藏视频、收藏合集与喜欢列表,逐项发起下载。
场景三:直播录制(实验性)
需求:录一场重要的直播,不想手动切换录屏。
操作:链接指向直播间即可:
link: - https://live.douyin.com/123456789 live: max_duration_seconds: 3600 # 0 = 录到主播下播效果:FLV 文件与*_room.json房间快照保存在Downloaded/作者名/live/;主播下播、网络空闲或 Ctrl+C 中断时,已录制的字节都会保留。
🔧 进阶配置与常见坑
长期使用值得调整的几个开关:
- 增量下载:
increase.post: true(like/mix/music 同理),必须同时database: true; - 时间过滤:
start_time/end_time(YYYY-MM-DD),只拉取区间内发布的作品; - 画质控制:
video_quality: original会探测原片(每条作品多一次探测请求),highest是默认档,也可指定1080p等; - 完成通知:
notifications.providers配 Bark / Telegram / Webhook(企业微信、飞书、钉钉 bot 均可),单个通道失败不阻塞下载; - 评论采集:
comments.enabled: true后每个作品生成*_comments.json,include_replies决定是否拉二级回复。
常见问题对照:
| 情况 | 处理 |
|---|---|
| 只能抓到 20 条 | 翻页风控。设browser_fallback.enabled: true且headless: false,浏览器弹窗后手动完成验证,别立刻关窗 |
| Cookie 失效 | 重跑python -m tools.cookie_fetcher --config config.yml,有效期约 7 天 |
| 进度条刷屏 | 确认progress.quiet_logs: true;调试时临时加-v |
| 要重下某个作品 | 删本地文件且删数据库中对应aweme_id记录;只删库不删文件不会触发重下 |
| 查下载历史 | sqlite3 dy_downloader.db查aweme表,或翻download_manifest.jsonl |
跑完批量任务后,可在桌面版任务中心查看每个任务的成功/失败计数,并对失败项重试:
🏗️ 模块划分与设计要点
项目按职责拆成八个包,I/O 全部走异步(aiohttp + aiosqlite),完整流程说明见 PROJECT_SUMMARY.md:
| 模块 | 职责 |
|---|---|
| cli/ | 参数解析、主异步流程、Rich 进度条 |
| core/ | API 客户端、URL 解析与各类下载器;模式策略采用工厂 + 策略模式,新增模式只需在user_modes/加一个策略文件 |
| storage/ | 文件命名与落盘、SQLite 数据库、元数据 |
| auth/ | Cookie 与 MS Token 管理 |
| control/ | 限速、重试、并发队列 |
| config/ | YAML 加载与环境变量覆盖(DOUYIN_前缀) |
| server/ | REST API 服务(提交任务、查询状态) |
| tools/ | 浏览器自动获取 Cookie |
| tests/ | 70+ 自动化用例,覆盖 API 客户端、去重、命名模板等 |
两个设计点值得一提:去重不依赖单一事实源,数据库记录与本地文件名各查一遍,任一侧都能挡住重复下载;下载过程做 Content-Length 完整性校验,残缺文件会自动清理并重试。相关设计文档见 docs/superpowers/specs/。
现在开始
如果你需要定期归档抖音内容,先用"安装到首次运行"一节的最小配置跑通一条链接,再按实际需求叠加增量、时间过滤与通知推送即可。请仅将本工具用于个人备份与学习交流,下载自己有权或已获授权的内容,遵守平台规则与当地法规;项目遵循 MIT License。
【免费下载链接】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),仅供参考