抖音批量下载与直播回放保存保姆级指南: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 这款免费开源的抖音下载工具,才把"想存的存不下来、想批量抓的只能一个个点"这两件麻烦事一并解决。它支持视频、图集、合集、音乐(原声)的批量下载,也能把直播回放完整留档。这篇指南不堆功能清单,按"你遇到什么情况、该用哪个入口"来讲,尽量让你读完就能上手。
一次没存下来的直播回放
如果你也经历过直播结束就找不到回放,或者收藏夹里躺了几十个想一口气存下来的博主主页,那这个工具大概率对你胃口。douyin-downloader 的核心就一句话:把抖音的链接丢给它,它负责解析、下载、去重、按规则归档。你不需要懂接口、不需要管签名参数,唯一要做的就是把链接粘贴进去,或者写进一份配置文件。
它把"复制链接到文件落盘"这件事做到了什么程度,值得先说清楚:单条视频和图文能下,创作者主页能整站批量抓(发布、点赞、合集、音乐分开管理);直播间支持实时录制,主播下播自动保留已录片段;下载记录进 SQLite 数据库,重复内容自动跳过;遇到反爬卡住时,还能自动切到浏览器兜底继续抓取。对普通用户来说,它最直观的价值是省时间——过去要手动逐个保存的内容,现在一个任务跑完,文件已经按作者分好类躺在对应目录里了。
先弄清它替你解决了什么
用一句话概括适用人群:凡是"想把抖音内容存成自己的文件"的人。比如喜欢囤知识类视频的学生和职场人,靠收集素材做剪辑的创作者,想给关注的博主做长期内容归档的重度用户,甚至只是想留档自己作品的作者本人。它替你省掉三件琐事:一是逐条手动下载的低效,二是命名混乱导致日后找不到文件,三是重复下载浪费存储空间。
工具本身的定位是"命令行优先、配置驱动"。大部分行为都由一份 YAML 配置决定,默认值已经能直接跑通,进阶项按需打开即可。项目根目录的config.example.yml里对每个配置项都有注释说明,完整使用细节写在USAGE.md,想研究实现原理的可以直接翻core/目录的源码。对新手来说,这些都不必急着看,先把下面这条最短路径走通。
最短上手路径:安装、登录、第一次下载
先把项目拉下来并装好依赖,整个过程只需要三条命令:
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt接着从示例配置复制一份自己的配置文件:
cp config.example.yml config.yml然后是整个流程里唯一需要动手的一步——登录认证。项目提供了一个自动获取 Cookie 的入口,运行后会自动打开浏览器:
python -m tools.cookie_fetcher --config config.yml浏览器弹出后正常登录你的抖音账号,登录完成回到终端按一下回车,程序会把获取到的 Cookie 自动写进配置,不需要手动复制粘贴那一长串字符。如果你更习惯自己处理,也可以在配置里直接粘贴整串 Cookie,或按msToken、ttwid等键值对逐项填写,config.example.yml里给了两种写法的模板。
到这一步就可以试第一次下载了,先从单条链接开始最稳妥:
python run.py -c config.yml -u "https://www.douyin.com/video/1234567890123456789"命令跑完,去配置里path指定的目录看一眼,视频、封面和元数据 JSON 应该已经躺在里面。到这儿,最短路径就走通了,后面的内容都属于"按需加装"。
想存什么,就选对应的入口
接下来的问题是:你最想解决的需求是哪一个?按目标对号入座,比记功能列表省事得多。
目标:留住直播回放 → 打开录制功能
直播是抖音里最"过期不候"的内容形态,官方基本不提供回放。douyin-downloader 的录制功能就是为这个场景准备的:只要把直播间链接放进link,程序会按下面的配置持续录制,同时支持 FLV 和 HLS 两种流格式,主播中途下播也会把已经录下的部分完整保留,不会前功尽弃。
live: max_duration_seconds: 3600 # 0 表示录到主播下播 chunk_size: 65536 idle_timeout_seconds: 30使用方式同样简单:
python run.py -c config.yml -u "https://live.douyin.com/123456789"适合人群很明确:追知识分享、技术教学、赛事直播,又不想蹲守全程的人。挂一个录制任务,忙完再看文件就行。
目标:囤完整位创作者的作品 → 用主页批量下载
发现一个宝藏创作者,想把他主页内容一次性存下来?把主页链接放进配置,用mode声明要抓哪些栏目——post是发布作品、like是点赞列表、mix是合集、music是音乐原声,number控制每个栏目的数量上限:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx path: ./Downloaded/ mode: - post - like - mix - music number: post: 50 like: 20 increase: post: true like: true程序会自动为每个作者建立独立目录,按栏目分开放置:
Downloaded/ └── 作者昵称_sec_uid/ ├── post/ # 发布作品 ├── like/ # 点赞作品 ├── mix/ # 合集内容 ├── music/ # 音乐原声 └── live/ # 直播回放increase项对应增量下载:开启后程序会对照数据库里的历史记录,只抓新出现的作品,第二次运行基本就是"补新"而不是"重下"。对持续关注某位博主、隔段时间就跑一次任务的人来说,这个开关值得长期开着。
目标:摸清作品反馈 → 开启评论采集
如果你做内容调研、选题分析,或者想了解某个作品在用户中的真实反应,可以打开评论采集。它会在每个作品旁边额外生成一份*_comments.json,把评论结构化存下来,方便后续统计:
comments: enabled: true include_replies: false max_comments: 0 # 0 表示不限制数量 page_size: 20这份文件里既能看到评论文本,也能拿到评论者的基础信息,做简单的情绪分析或热词统计都够用。对普通囤内容的用户来说这项可以保持关闭,它更适合有明确数据需求的人。
目标:收集更多数据 → 热搜、搜索与 API
除了下载本身,工具还附带几个偏"数据采集"的入口,适合有额外需求的用户:
# 拉取抖音热搜榜并导出 JSONL python run.py --hot-board 30 # 按关键词搜索作品并导出 JSONL python run.py --search "猫咪" --search-max 100 # 以 REST API 服务模式运行 python run.py --serve --serve-port 8000热搜榜和搜索会导出 JSONL 数据文件,供后续分析或二次处理;REST 模式则把下载能力暴露成 HTTP 接口,可以接到自己的脚本或系统里,适合想自动化的人。
把输出方式调成自己的习惯
下载本身跑通之后,大部分人接下来想做的就是"让它按我的习惯存文件"。下面这张表列出最常被调整的几项,左侧是默认行为,右侧是你可以改成的样子:
| 调整项 | 默认 | 你可以改成 |
|---|---|---|
| 文件命名 | {date}_{title}_{id} | 用{author}、{year}、{type}等变量自由组合,需保留{id}防重名 |
| 作者目录 | 仅昵称nickname | nickname_uid(昵称+ID,直观且防重名,推荐重度用户) |
| 时间范围 | 不过滤 | 设start_time/end_time只下指定日期段 |
| 重复内容 | 数据库去重开启,增量默认关 | 打开各栏目的increase,实现增量补新 |
| 并发与重试 | 线程 5、重试 3 次 | 按机器性能调thread,网络差时加大retry_times |
| 下载通知 | 关闭 | 接 bark / telegram / webhook,完成或失败时推送 |
| 网络代理 | 不使用 | 填proxy,代理环境下必须配置 |
其中通知推送是很多人的"隐藏需求":批量任务跑起来后不想一直盯着终端,配好通知后下载完成或中途失败,手机或群里就会收到消息,可以干完别的事再回来收文件。
卡住了?按症状对号入座
用得久了难免遇到问题。这里不按问答形式展开,而是把高频情况整理成一张"症状速查表",出问题先对照症状找原因,再按右侧处理:
| 症状 | 常见原因 | 处理方式 |
|---|---|---|
| 作品数停在一个固定值(如 20 条)就抓不动 | 平台对未登录/半登录状态有翻页限制 | 打开配置里的浏览器兜底开关,手动完成一次验证码后继续 |
| 下载速度明显偏慢 | 并发线程不足,或网络时段不佳 | 调高thread,错开高峰时段,必要时配置proxy |
| 提示 Cookie 失效、需要重新登录 | 登录态过期 | 重新运行python -m tools.cookie_fetcher --config config.yml |
| 想确认哪些作品下过、哪些还没下 | 需要查询本地数据库 | 用sqlite3 dy_downloader.db "SELECT aweme_id, title, author_name FROM aweme ORDER BY download_time DESC LIMIT 20;"查看近期记录 |
| 找不到下载的文件在哪 | 目录层级较深 | 看配置里path指定的根目录,每个作者一个独立子目录 |
大部分问题都集中在"登录态"和"平台限制"这两类,前者重取 Cookie 即可,后者交给浏览器兜底去解决,不用手动硬刚。
命令行与桌面版,怎么选
很多人第一次接触会觉得命令行有门槛,其实工具还提供了一款同源的桌面版 Douzy,界面化和可视化程度高不少。两种方式各适合一类人,直接对照下表选择:
| 维度 | 命令行版 | 桌面版 Douzy |
|---|---|---|
| 适合人群 | 习惯终端、想写脚本自动化的人 | 不想接触命令行的普通用户 |
| 上手方式 | 编辑 YAML 配置 + 运行命令 | 粘贴链接、点选下载内容 |
| 批量管理 | 配置文件管理多链接 | 支持同步关注列表,批量勾选创作者 |
| 进度查看 | 终端进度条与日志 | 可视化进度、任务中心、事件流 |
| 历史档案 | SQLite 查询 | 可视化筛选作者、关键词、日期 |
| 成熟度 | 功能最全、稳定 | 处于内测期,界面持续打磨 |
判断标准很简单:如果你日常工作本来就在终端里,命令行版一步到位;如果你是点鼠标更顺手的那类用户,桌面版能把链接检测、关注同步、下载进度这些事都做成图形化操作。两者共用同一套后端,数据格式和下载能力是一致的,不存在"桌面版功能阉割"的问题。
三条起点,对应三种人
文章最后,按你的情况选一条最短的起步路径:
- 第一次接触的新手:先复制
config.example.yml,跑通单条视频下载,再试着把链接换成主页地址,体验一次批量下载。 - 已经跑通下载的进阶用户:把增量下载、命名模板、时间筛选、通知推送逐项打开,让工具进入"托管式"运行状态。
- 有自动化需求的开发者:研究
core/下的下载流程实现,或直接启用--serve的 REST 接口,把下载能力接进自己的流程里。
最后多说一句题外话:工具本身是中立的,但使用时要守住边界。下载内容用于个人学习、收藏和备份没有任何问题,如果涉及公开传播或商用,请先征得创作者同意。尊重版权,才能让这些好用的开源工具走得更远。现在,把第一条命令敲下去,你的抖音内容收藏库就从这一行开始。🚀
【免费下载链接】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),仅供参考