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 是一款免费开源的抖音批量下载工具:粘贴链接即可自动下载无水印视频,支持作者主页批量下载,重复运行时自动跳过已下载内容。它覆盖视频、图文、合集、音乐四类内容,附带直播保存、进度条展示和失败重试。
💡 能下载什么:视频、图文、合集、音乐与直播流
这个项目覆盖以下下载能力,全部通过配置文件加命令行驱动,默认自动挑选无水印源和最高码率:
- 单个视频 / 图文 / 合集 / 音乐(优先原声文件),短链 v.douyin.com 自动解析
- 作者主页批量下载,mode 支持 post / like / mix / music 四种模式
- 当前登录账号的收藏夹与收藏合集(collect / collectmix,需单独使用)
- 直播流保存(FLV/HLS,下播保留已录数据)、评论采集、热搜榜与关键词搜索导出
- SQLite 数据库加本地文件双重去重、增量下载、指数退避重试、翻页受限时的浏览器兜底
- 可选:视频转写(OpenAI API)、下载完成 Bark / Telegram / Webhook 推送、REST API 服务模式
与同类工具最大的差异:去重、增量与浏览器兜底内建在默认配置里,第二次运行自动跳过已下载内容,无需手动清理。
安装与环境配置:克隆、装依赖、拿 Cookie
环境只要求 Python 3.8+,macOS、Linux、Windows 均可。运行下面四条命令完成克隆、装依赖和初始化配置:
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程序会弹出浏览器窗口,登录抖音后回到终端按 Enter,Cookie 会自动写入 config.yml。
⚠️前置条件:必须有一个已登录抖音账号的浏览器。Cookie 是访问抖音数据的凭证,也是新手最容易卡住的一步;后续下载出现 403、提示需要登录时,先检查 Cookie 是否还有效。若要用浏览器兜底功能,另跑
pip install playwright并执行python -m playwright install chromium。
配置完成后,同源的桌面版 Douzy(内测中,见仓库 Releases)也可以接管下载:粘贴链接、点下载即可,下方是它的抖音链接下载工作台:
🚀 从单条链接到批量下载:三种跑法
入口统一是python run.py -c config.yml,区别只在于传什么链接、配什么模式。
下载单个视频或图文
- 打开 config.yml,把作品链接填入
link字段,也可以直接在命令行用-u传入。 - 执行下面命令,运行之后会看到 Rich 进度条,完成后文件落在
Downloaded/下。 - 确认 mp4 已保存;封面、音乐、JSON 元数据是否附带,取决于
cover/music/json开关。
python run.py -c config.yml -u "https://www.douyin.com/video/7604129988555574538" -p ./Downloaded批量下载作者主页作品
- 打开创作者主页,复制浏览器地址栏里含
/user/sec_uid的完整链接。 - 在配置里填
link、mode、number,其中number.post为 0 表示全量,建议先设 20~50 试跑。 - 执行
python run.py -c config.yml,达到数量或主页翻不动时自动停止。
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: [post] number: { post: 50 }保存直播流与特殊内容
把https://live.douyin.com/{房间号}链接填入link,工具会按直播任务保存;live.max_duration_seconds设为 0 会一直录到主播下播,中断时已保存的字节也会保留。FLV 可直接播放,HLS 源只保存 playlist 文件,需要 ffmpeg 后处理。
配置文件关键字段:时间区间、画质与并发
日常最常调整的字段都在 config.yml 里,默认值来自 config.example.yml:
mode: [post] # post / like / mix / music number: { post: 50 } # 0 = 不限 start_time: "2026-01-01" # 只抓该日期之后的作品 end_time: "2026-06-30" thread: 5 video_quality: highest comments: { enabled: true }start_time/end_time:按时间区间过滤(格式 YYYY-MM-DD),批量抓取主页时避免拉进几年的老内容。video_quality:默认 highest 取最高转码档;original 会额外探测上传原片,文件更大画质更好;也可指定 720p、1080p 等档位,匹配不到自动降级。comments.enabled:开启后每个作品旁会生成*_comments.json,可选二级回复。
| 参数 | 默认值 | 推荐值 |
|---|---|---|
| thread | 5 | 3~5,网络差时调低 |
| number.post | 0 不限 | 先设 20~50 试跑 |
| video_quality | highest | original(磁盘充足时) |
| start_time | 不限制 | 填写,避免全量抓取 |
三种常见场景:个人收藏、批量研究、直播存档
三个场景共用同一套命令,区别只在配置组合。
个人收藏:你的目标是把喜欢的几条视频留在本地反复看 → 推荐路径:单链接模式 + 默认配置,自动去水印后直接落盘 → 注意:重复运行同一链接会自动跳过,不会重复占磁盘。
批量研究:你的目标是拿一位创作者近三个月的更新连同评论做分析 → 推荐路径:主页链接 +mode: [post]+ 时间区间过滤 +comments.enabled: true,并保留increase.post: true,之后每次运行只拉新作品 → 注意:若只抓到 20 条说明翻页触发了风控,保持浏览器兜底开启并在弹出的窗口里手动完成验证。
直播存档:你的目标是保存一场重要直播 → 推荐路径:直播链接 +live.max_duration_seconds: 0,录完 FLV 落在Downloaded/{作者}/live/下并附直播间元数据快照 → 注意:直播录制接口覆盖的场景有限,README 标注为实验性功能。
Downloaded 输出目录与文件命名规则
默认folderstyle: true时,输出按「作者 / 模式 / 作品」三层组织:
Downloaded/ └── 作者名/ ├── post/ │ └── 2024-02-07_作品标题_aweme_id/ │ ├── xxx.mp4 │ ├── xxx_cover.jpg │ └── xxx_data.json └── live/命名默认模板是{date}_{title}_{id},文件名里固定包含 aweme_id,去重就靠它;想改格式用filename_template,作者目录名可用author_dir切换昵称或 sec_uid。
常见卡点速查:风控 403 到重下载不触发
下表对应 README 中的常见问题,先对现象再找原因:
| 现象 | 可能原因 | 处理建议 |
|---|---|---|
| 单个视频 / 合集下载失败,返回 403 | 抖音 Argus 风控拦截 CLI 直连(2026-08 起逐步加严) | 开启浏览器兜底并在浏览器里过验证,或改用桌面版 Douzy |
| 主页只能抓到 20 条作品 | 翻页被风控限制 | browser_fallback.enabled: true 且 headless: false,弹窗后手动过验证 |
| 下载中断、提示需要登录 | Cookie 失效 | 重跑python -m tools.cookie_fetcher --config config.yml |
| 改了文件却触发不了重下载 | 数据库记录 + 本地文件双重去重 | 本地文件和 sqlite 记录要同时删 |
| 没生成 transcript 文件 | 开关未开 / 图文不转写 / 缺 API Key | 确认是视频作品且 OPENAI_API_KEY 有效 |
| 进度条重复刷屏 | 日志未静默 | 保持 progress.quiet_logs: true,调试时再加 -v |
核心目录职责与改代码前的验证方式
想改代码的话,先看这四个位置:
- core/:各内容类型的下载引擎,url_parser.py 负责解析链接,video_downloader.py、user_downloader.py 分别处理单条与主页作品,live_downloader.py 处理直播
- auth/:Cookie 与 msToken 的管理、失效重登逻辑都在这里
- storage/:SQLite 去重、下载历史与文件落盘管理
- tools/cookie_fetcher.py:浏览器自动获取 Cookie 的入口;所有配置默认值集中在 config/default_config.py
改动手前先跑python3 -m pytest -q,tests/ 下的用例覆盖了下载、去重、风控处理等核心路径,通过与否能最快验证改动是否破坏现有行为。
先跑通单条,再扩展到批量
douyin-downloader 是一个以「粘贴链接即可归档」为设计目标的免费开源命令行工具:单条与批量、去重与增量、直播与评论采集开箱即用,Cookie 配置一次可长期复用。建议的节奏是先跑通单条视频下载,再试小数量主页作品,最后放开到批量与直播。
本项目仅供技术学习与个人内容归档使用,请尊重原创作者权益,并遵守平台服务条款与相关法律法规。
【免费下载链接】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),仅供参考