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 这条流水线值得 10 分钟试跑一遍。它是一个命令行优先的抖音下载器:单条视频、图文、合集、音乐、整个用户主页,都能进同一个入口处理,并且默认带进度展示、失败重试、SQLite 去重和浏览器兜底。本文按"先跑通一条,再放大到主页级批量采集"的动线走一遍,顺带把去重、增量、通知这些后台机制讲清楚。
这条流水线能吃下哪些链接
判断能不能用的标准很简单:只要你能从抖音复制或从 App 分享出来的链接,基本都在它的处理范围内。短链会被自动展开,不用先手动跳转。
| 输入形式 | 处理行为 |
|---|---|
/video/{id} | 下载单个视频,自动挑无水印、最高码率的源 |
/note/{id}、/gallery/{id} | 下载单个图文 |
/collection/{id}、/mix/{id} | 按合集整组抓取 |
/music/{id} | 下载音乐原声,缺失时回退到该音乐下的首条作品 |
v.douyin.com/...等短链 | 自动解析成真实目标 |
/user/{sec_uid} | 主页批量采集,配合mode指定抓什么 |
| 当前登录账号收藏夹 | collect/collectmix模式,只能单独使用 |
live.douyin.com/{room_id} | 直播录制(实验性,FLV/HLS) |
--hot-board/--search "关键词" | 热搜榜、关键词搜索结果导出 JSONL |
首次跑通:安装、登录态与第一条视频
这一节把三件事并成一条线走完:装好环境、拿到登录态、把第一条无水印视频落到本地。
装好项目与依赖
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt cp config.example.yml config.yml第一、二行拿到源码并进入目录,第三行装依赖(要求 Python 3.8+,Windows / macOS / Linux 均可),第四行从 config.example.yml 复制出一份可编辑的config.yml。浏览器兜底用到的 Playwright 不急,遇到翻页被风控时再补装:
pip install playwright && python -m playwright install chromiumCookie 登录态:自动获取优先
登录态有两个来源。首选自动获取,tools/cookie_fetcher.py 会拉起一个浏览器窗口:
python -m tools.cookie_fetcher --config config.yml在弹出的窗口里登录抖音,回到终端按回车,Cookie 会自动写进配置文件,全程不碰代码。如果你习惯从浏览器开发者工具里复制,也可以手动写进config.yml,字符串或字典形式都支持:
cookies: "msToken=xxx; ttwid=xxx; odin_tt=xxx;"Cookie 偶尔会过期,过期后重跑一次上面的自动获取命令即可,属于日常维护动作而不是故障。
无水印视频下载命令
配置就绪后,单条视频一行命令:
python run.py -c config.yml -u "https://www.douyin.com/video/7604129988555574538"-c指定配置文件,-u追加链接,-t调并发,-p指定下载目录。工具解析后会自动在无水印源里挑码率最高的一档,落盘的同时在终端给出成功 / 失败 / 跳过的实时计数,跑完一眼就能核对结果。
主页级批量采集:模式、数量与增量
单条只是起点,把整个主页搬下来才是这套工具的主场。把主页链接和采集策略写进配置:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: - post - like number: post: 50 like: 0三个字段的含义:link是目标主页;mode决定采集范围,post发布作品、like点赞作品,另有mix(合集)、music(用过的原声);number给每个模式设上限,0表示不设上限全量抓。保存后运行python run.py -c config.yml,多任务会并发跑,每个任务的进度、耗时滚动刷新。
两个配套技巧:
- 跨模式去重:同一个
aweme_id在"发布"和"合集"里同时出现时,只落盘一次; - 增量模式:把
increase.post: true打开(依赖database: true),再次运行时只补新发布的内容,适合挂成长期监控任务。
还可以用start_time/end_time(格式YYYY-MM-DD)把采集范围圈在某段时间内。
产物去向:下载目录的自动分层
下载完成后,文件不是堆在一个平铺目录里,而是按"作者 → 模式 → 日期+标题"自动分层:
Downloaded/ └── 作者名/ ├── post/ │ └── 2024-02-07_作品标题_aweme_id/ │ ├── ...mp4 # 视频本体 │ ├── ..._cover.jpg # 封面(按需开启) │ ├── ..._music.mp3 # 原声(按需开启) │ └── ..._data.json # 元数据(按需开启) ├── like/ └── mix/每个作品一个独立文件夹,命名模板(filename_template/folder_template)可用{date} {title} {id} {author}等变量自定义,素材库整理时直接按文件夹拖走。封面、原声、头像、JSON 这些附带产物默认关闭,在配置里按需打开,避免平白多出几倍文件。
让它替你干活:去重、重试、校验与通知
真正降低维护成本的是几个后台机制,平时你感觉不到它们存在,出问题时才显出价值:
- 双重去重:SQLite 数据库记录 + 本地文件名扫描双保险。换机器、挪目录之后,它仍能从文件名里的
aweme_id认出"这条下过"; - 指数退避重试:网络抖动导致的失败按 1s → 2s → 5s 节奏自动重试,中途中断的文件可续传;
- 完整性校验:下载结束比对 Content-Length,发现截断的文件自动清理并重下,避免"看着成功实际损坏";
- 直播录制:喂入
live.douyin.com的房间链接即可边播边录,主播下播或按 Ctrl+C 时已录字节保留,FLV 直接可播; - 完成通知:
notifications.providers支持 Bark、Telegram、Webhook(企业微信 / 飞书 / 钉钉 bot 地址同样可用),一批任务跑完推到手机,人不守机器; - 数据侧输出:
comments.enabled: true时每个作品旁生成*_comments.json;--hot-board 30、--search "关键词"把结果落成 JSONL,接分析流程很方便。
如果你希望用程序而不是命令行触发任务,还有一个 REST 服务模式:
pip install fastapi uvicorn python run.py --serve --serve-port 8000POST/api/v1/download提交链接拿job_id,再轮询任务状态即可,适合嵌进自己的自动化系统。
故障速查表
| 症状 | 可能原因 | 处理方式 |
|---|---|---|
| 只抓到 20 条就停 | 翻页触发风控 | browser_fallback.enabled: true且headless: false,弹窗出现后手动过验证,别急着关窗口 |
| 下载大面积报错 | Cookie 失效 | 重跑python -m tools.cookie_fetcher --config config.yml |
| 想重下却一直被"跳过" | 去重机制生效 | 删掉Downloaded/作者名/模式/*_<aweme_id>/目录,并执行sqlite3 dy_downloader.db "DELETE FROM aweme WHERE aweme_id = '<aweme_id>';" |
| 进度刷屏影响阅读 | 日志未静默 | 确认progress.quiet_logs: true,需要排查时再加-v |
| 没生成 transcript 文件 | 转写未生效 | 依次查transcript.enabled、是否为视频作品(图文不转写)、OPENAI_API_KEY是否有效 |
查下载历史也走数据库:sqlite3 dy_downloader.db "SELECT aweme_id, title, author_name FROM aweme ORDER BY download_time DESC LIMIT 20;"。
适合谁,以及边界在哪
这套流程适合三类场景:个人素材归档(按作者分好层,随取随用)、竞品 / 账号长期监控(增量 + 定时 + 通知推送)、以及需要评论与热搜数据配合的分析工作。它的边界同样明确:
collect/collectmix收藏夹模式只认当前登录 Cookie 对应的账号,且不能与post/like等混用;- 浏览器兜底目前只在
post模式完整验证过,like/mix/music主要依赖 API 正常分页; - 直播录制标记为实验性:FLV 直接可播,HLS 源只保存 playlist 文件,需要 ffmpeg 后处理。
不想敲命令的人可以留意桌面端Douzy(内测中),与命令行共用同一套引擎:粘贴链接即下、同步关注列表、可视化跟踪任务。
工具的价值在于"跑起来之后不用你管":去重、重试、分类、增量这些重复劳动都压在后台,你只负责复制链接、触发任务、回来验收。按上面的动线走一遍,第一条无水印视频落盘之后,主页级批量采集只是改几个配置项的事。
【免费下载链接】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),仅供参考