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 是一个基于 Python 命令行运行的抖音下载工具,输入链接加一份 YAML 配置即可批量下载无水印视频、图文、合集与原声音乐,内置重试、SQLite 去重和浏览器兜底,适合需要长期归档个人抖音内容的普通用户和脚本爱好者。
能力速览:先看这张表再决定要不要读下去
| 能力 | 入口方式 | 适合场景 | 注意事项 |
|---|---|---|---|
| 单条视频/图文去水印下载 | 配置文件里的link或命令行-u | 保存某一条作品 | 必须配好 Cookie |
| 主页作品、喜欢、合集、原声批量下载 | mode勾选模式 +number限数 | 备份整个博主 | 各模式可混跑,收藏类collect只能单独用 |
| 直播录制 | link填live.douyin.com房间链接 | 录整场直播 | 官方标注 experimental |
| 热搜榜 / 关键词搜索导出 JSONL | --hot-board/--search参数 | 只要数据不要文件 | 结果落盘为 JSONL,可直接用 jq/pandas 筛选 |
| 失败重试 + SQLite 去重 | retry_times/database配置 | 长任务断点续跑 | 默认已开启,保持默认即可 |
| 下载完成通知 | notifications.providers | 挂机跑任务 | 支持 bark / telegram / webhook |
想跳过安装细节直接看场景:场景一:单条去水印、场景二:主页批量。
场景一:下载一条无水印视频
📌 解决的问题:把一条别人分享的抖音作品存成无水印 mp4,落到本地固定目录。
前置准备:登录态 Cookie 是最关键的一项,抖音大量接口只认登录用户。把 config.example.yml 复制为config.yml后运行自带的 Cookie 抓取脚本,它会弹出浏览器,你扫码登录、回终端按 Enter,Cookie 就自动写回配置文件:
cp config.example.yml config.yml pip install playwright && python -m playwright install chromium python -m tools.cookie_fetcher --config config.yml然后把config.yml里的link换成目标作品链接,保留path与cookies区块不动,直接运行:
python run.py -c config.yml成功长什么样:终端出现完成统计,path指定的目录(默认./Downloaded/)下出现以作者名命名的文件夹,里面是无水印 mp4;若配置里开了music、cover、json,原声、封面和元数据也会一并进作品文件夹。
高频翻车点:
- 请求大面积失败、刚装好时单条都下不动 → 多半是 Cookie 没生效或已过期,重跑一次
python -m tools.cookie_fetcher --config config.yml。 - 进度和日志太安静,不知道卡在哪 → 加
-v参数查看详细日志。
场景二:把博主的作品和合集一次备份
解决的问题:归档一个博主的存量内容,而不是每次手动贴单条链接。
前置准备:link填博主主页链接(douyin.com/user/...形式),mode勾选要抓的类型,number给每种模式设上限,0表示不限。测试阶段先把post设成 1~5,跑通后再放开:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: - post - mix number: post: 5 mix: 20python run.py -c config.yml成功长什么样:内容按Downloaded/{作者}/post/与Downloaded/{作者}/mix/分目录归档;再跑同一份配置时,increase增量为true的已下载作品会被自动跳过,不会在硬盘上堆重复文件。注意collect/collectmix(收藏类)只能单独使用,不能与post/mix等混写在同一份mode里。
高频翻车点:
- 主页只抓到 20 条左右就停了 → 翻页触发风控,确认
browser_fallback.enabled: true且headless: false,在弹出的浏览器里手动过验证;仍不行就用start_time/end_time分段抓。 - 想让某博主重下一批 → 把对应的
increase.post改为false即可重下并覆盖当前筛选范围,无需清空数据库。 - 目录按作者昵称建,遇到重名博主会合并 → 重度用户把
author_dir改为nickname_uid,切换只影响后续下载。
场景三:只导出数据不下载文件
解决的问题:拿到热搜榜或关键词搜索结果做二次筛选,不产生任何媒体文件。
前置准备:Cookie 有效即可,下载目录参数-p指定 JSONL 落盘位置。两条命令各跑一次:
python run.py --hot-board 30 -p ./Downloaded python run.py --search "猫咪" --search-max 100 -p ./Downloaded成功长什么样:Downloaded/hot_board/{时间戳}.jsonl里是热搜条目,Downloaded/search/猫咪_{时间戳}.jsonl里是搜索命中的作品元数据,一行一条 JSON,jq、pandas 可直接读;挑出感兴趣的链接再丢回下载器即可。
高频翻车点:
- 搜索结果条数不够 →
--search-max默认 50,按需调大。 - 导出失败而单条下载正常 → 检查 Cookie 是否过期,抓取脚本重跑一遍。
参数速查:正文出现过的旋钮都在这里
| 字段 | 默认值 | 什么时候调 | 调成什么 |
|---|---|---|---|
number.post等 | 0(不限) | 测试阶段限量 | 1~5,跑通后放回0 |
increase.post等 | true | 想重下某批作品 | false(重下并覆盖筛选范围内文件) |
video_quality | highest | 要原画 / 省流量 | original(额外探测原片)或lowest、指定720p等 |
thread | 5 | 网速稳定想提速 | 8,别一上来拉满 |
retry_times | 3 | 网络抖动多 | 3~5,配合内置指数退避 |
database/database_path | true/dy_downloader.db | 几乎不用动 | 保持true,它是去重主开关 |
start_time/end_time | 空 | 风控截断、分段抓取 | YYYY-MM-DD,含结束日当天 |
browser_fallback.headless | false | 翻页被风控截断 | 保持false,留出手动过验证的机会 |
comments.enabled | false | 想要作品评论 | true,每作品旁多一个*_comments.json |
notifications.enabled | false | 挂机跑长任务 | true,providers填 bark / telegram / webhook |
live.max_duration_seconds | 0(录到下播) | 只想录固定时长 | 3600之类 |
-t(命令行) | 同thread | 临时改并发 | python run.py -c config.yml -t 8 |
完整字段注释见 config.example.yml,全部命令行参数用python run.py --help查看。
故障排查:一张表对号入座
| 现象 | 最可能原因 | 一行解法 | 预防方法 |
|---|---|---|---|
| 大面积请求失败 | Cookie 过期 | python -m tools.cookie_fetcher --config config.yml刷新 | 把 Cookie 刷新当周期性维护 |
| 主页只抓到少量作品 | 翻页触发风控 | 保持browser_fallback.enabled: true且headless: false手动过验证 | 用start_time/end_time分段 |
| 硬盘堆出重复文件 | 去重开关被关 | database: true并保持increase为true | 增量任务常开增量 |
| 某条被跳过想重下 | 增量机制判重 | 对应increase.post改为false再运行 | 用number.post圈定重下范围 |
| 速度慢 | 并发偏保守 | -t 8临时提并发,retry_times给3 | 逐步上调而非直接拉满 |
| 输出太吵或太安静 | 日志级别问题 | 排查时加-v或--show-warnings | 常态设progress.quiet_logs: true |
| 直播录出来是 FLV 而非 mp4 | 直播接口为 experimental | 重要场次人工再备份一份 | 重要活动设max_duration_seconds留余量 |
落地前检查清单
- 先装依赖
pip install -r requirements.txt,再用单条作品链接验证 Cookie 与网络,确认无水印 mp4 落盘后再上主页批量。 - 测试阶段
number.post设 1~5,跑通后才放开为 0;不同任务分开用config_test.yml、config_daily.yml,别共用一份。 - 长任务开启
notifications推送,跑完手机先收到结果再翻终端。 - Cookie 失效是常态:每次大面积失败先重跑 tools/cookie_fetcher.py,再怀疑别的环节。
- 更细的行为说明以仓库 README.zh-CN.md 为准,接口风控变化时以最新文档为准。
本项目仅供技术学习与个人数据管理使用,请在合法合规的前提下使用,尊重内容版权与创作者权益。
【免费下载链接】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),仅供参考