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 | 可以 | 可以 | 支持 | 支持 | 支持 | 只需一条命令 |
它的核心价值在于"一次配置、全类型覆盖":同一个工具既能下一条视频,也能把整个作者主页的作品、点赞、合集、音乐一次性拉下来,还能在直播结束前抢录回放。下载完的文件按"作者 → 内容类型 → 作品"自动分层归档,配合 JSON 清单和 SQLite 数据库,你的资源库会一直井井有条。
三分钟搭好环境:clone、装依赖、写配置
整个准备过程只有三步,不需要任何复杂的环境变量。
第一步,把代码拉下来并安装依赖:
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt如果你希望使用浏览器兜底(翻页被风控时自动接管)或自动获取 Cookie,再补装一个 Playwright:
pip install playwright python -m playwright install chromium第二步,复制一份自己的配置:
cp config.example.yml config.yml配置文件里每一项都有注释说明,新手照着填即可,完整字段说明可以随时查阅 config.example.yml。
第三步,用一条命令完成身份认证:
python -m tools.cookie_fetcher --config config.yml运行后会自动打开浏览器,登录一次抖音,回到终端按回车,程序就把 Cookie 写进配置了,全程不用手动复制粘贴。跑通之后可以用python run.py -c config.yml验证,看到进度条和日志输出就说明环境已经就绪。
主流程:把链接变成硬盘里规整的文件夹
小羽的素材库里什么内容都有,这个工具能识别的链接类型也相当全:
| 粘贴的链接 | 对应内容 |
|---|---|
/video/12345 | 单条视频 |
/note/12345 | 图文作品 |
/collection/12345或/mix/12345 | 单个合集 |
/music/12345 | 音乐原声 |
/user/xxxx | 作者主页(可批量) |
live.douyin.com/12345 | 直播与回放 |
单条下载最简单,把链接直接填进配置的link列表即可:
link: - https://www.douyin.com/video/7604129988555574538 path: ./素材库/批量下载作者主页是小羽用得最多的场景。只要在mode里声明要抓取的内容类型,再配合number限定数量,工具就会自动逐项处理:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx path: ./素材库/ mode: - post # 作者发布的作品 - like # 作者点赞过的作品 - mix # 作者的合集 - music # 作者使用的音乐 number: post: 50 thread: 5 retry_times: 3命令行执行后,终端会实时滚动"批量下载进度",每个作品的状态、成功数与用时都一目了然:
下载完成后,文件会按下面的结构落盘,同一个作者的不同类型内容彼此隔离,不会混在一起:
素材库/ ├── download_manifest.jsonl # 每行一条 JSON 的下载清单 └── 小羽/ ├── post/ │ └── 2024-05-01_作品标题_awemeid/ │ ├── 2024-05-01_作品标题_awemeid.mp4 │ ├── 2024-05-01_作品标题_awemeid_cover.jpg │ ├── 2024-05-01_作品标题_awemeid_music.mp3 │ └── 2024-05-01_作品标题_awemeid_data.json ├── like/ ├── mix/ └── music/每个作品会同时拿到视频、封面、音乐和原始 JSON 元数据,download_manifest.jsonl还会记录发布日期、标签、文件路径等信息,方便后续检索。下图是小羽的下载目录实拍,日期加标题的命名让每个文件夹一眼就能认出内容:
进阶玩法:把下载调教成你的专属节奏
基础流程跑通后,下面这些配置能让工具更贴合个人习惯。
自定义命名规则
默认命名是{date}_{title}_{id},你也可以在设置里换成自己习惯的组合,可用变量包括日期、标题、作者、ID、类型等,比如改成{year}/{month}/{author}/{title}_{id}。规则模板中至少要保留{id},避免不同作品重名互相覆盖。桌面版的命名设置界面长这样:
时间过滤与增量下载
只想保留某段时间内的内容,直接声明起止日期:
start_time: "2024-01-01" end_time: "2024-12-31"更省心的是增量模式:开启increase并保留database: true后,工具会通过 SQLite 记录 + 本地文件双重检查,自动跳过已下载的作品,只抓新发布的,非常适合"隔几天跑一次"的追更场景。
直播回放录制
遇到喜欢的直播,把房间链接填进link,再配上live参数即可录制。支持 FLV 和 HLS,主播下播或网络中断时已录制的字节会自动保留为正式文件,不会白录一场:
link: - https://live.douyin.com/123456789 live: max_duration_seconds: 3600 # 0 表示录到主播下播 chunk_size: 65536 idle_timeout_seconds: 30录制过程同样在终端可见,工具会自动解析直播地址并选择可用清晰度:
评论采集与完成通知
需要做内容分析的场景,可以打开comments.enabled,每个作品会额外生成*_comments.json;想让下载完第一时间知道结果,配置notifications支持 Bark、Telegram 和 Webhook 三类推送,失败和成功都可以触发,单个通道故障也不会阻塞主流程。
两种操作姿势:终端自动化与桌面可视化
命令行适合挂在服务器上跑定时任务,而如果你更习惯图形界面,同项目还附带一款基于同一套后端的桌面客户端 Douzy,粘贴链接即可开始,两者能力完全对齐。
桌面版的核心体验集中在四个页签上:
- 下载:粘贴链接、检测类型、勾选要抓的内容,一键提交任务
- 关注:同步关注列表,按粉丝数筛选博主,批量发起下载
- 任务中心:查看每个任务的状态、成功数与耗时
- 作品档案:SQLite 记录的下载历史,支持按作者、关键词、时间范围筛选
下载过程中还能看到实时的任务进度、队列状态和事件流,比终端日志更直观:
对开发者而言,run.py --serve --serve-port 8000还能把工具变成 REST API 服务,通过 HTTP 接口提交下载任务、查询任务状态,方便集成到自己的自动化流程里。相关接口细节与配置参数说明可以参考 USAGE.md。
排障手册:遇到问题别慌
| 现象 | 原因 | 处理办法 |
|---|---|---|
| 只能抓到 20 条作品 | 抖音翻页风控 | 确认browser_fallback.enabled: true且headless: false,浏览器弹出后手动过一下验证码再等待 |
| 提示 Cookie 失效 | 登录态过期 | 重新执行python -m tools.cookie_fetcher --config config.yml |
| 想重新下载某个作品 | 数据库与本地文件双重去重生效 | 先删除对应的本地作品目录,再执行sqlite3 dy_downloader.db "DELETE FROM aweme WHERE aweme_id='xxx';" |
| 进度条日志刷屏 | 默认静默模式未开启 | 保持progress.quiet_logs: true,调试时再临时加-v |
| 想看下载历史 | — | 查询 SQLite:sqlite3 dy_downloader.db "SELECT aweme_id, title, author_name FROM aweme ORDER BY download_time DESC LIMIT 20;" |
如果对内部实现好奇,核心流程都在 core/ 目录,配置加载、限速重试、去重逻辑都有清晰的模块划分,配合 功能需求文档 可以快速理解整体设计。
把备份变成习惯
从一个收藏夹杂乱无章的新手,到拥有规整素材库的老手,小羽只用了一个下午。你也可以按这个节奏开始:
- 克隆项目、安装依赖,用自动 Cookie 工具完成认证
- 从一条视频链接开始跑通流程,确认输出目录符合预期
- 加入作者主页的批量模式,配合增量下载定期追更
- 按需开启直播录制、评论采集或通知推送
最后提醒一句:工具服务于个人学习与内容管理,请尊重创作者版权,遵守平台规则,下载的内容仅用于合法合规用途。项目采用 MIT 开源协议,也欢迎你基于自己的需求做二次开发。
现在就可以打开终端,把第一行命令敲下去,让精彩的抖音内容稳稳落在你的硬盘里。
【免费下载链接】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),仅供参考