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去重机制。
批量下载与音频采集的适用场景
- 作者主页全量归档:
/user/{sec_uid}链接配合mode: [post, like, mix, music],一次任务同时拉取发布、喜欢、合集、音乐四类内容,相同作品跨模式自动去重。 - 单链接无水印本地化:
/video、/note、/collection、/music及v.douyin.com短链均可直接解析,封面、头像、JSON 元数据按需保存。 - 当前账号收藏夹整理:
collect/collectmix模式批量下载收藏作品与收藏合集,仅限当前登录 Cookie 对应账号,且必须单独使用。 - 辅助数据采集:直播录制(实验性)、热搜榜导出、关键词搜索 JSONL、按作品评论采集,适合素材检索类工作流。
- 不适合绕过风控的场景:API 对翻页有频率限制,浏览器兜底目前仅针对
post模式验证。主页抓取停在 20 条左右通常是触发了风控,需要人工过验证码,它不是无限速度的抓取器。
从零到首次成功:完成环境与Cookie认证配置
运行环境要求 Python 3.8+,跨 macOS / Linux / Windows。最小可运行链路只有 6 条命令:克隆仓库、装依赖、复制示例配置、自动获取 Cookie、跑通一次任务。
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 -m tools.cookie_fetcher --config config.yml python run.py -c config.yml其中Cookie 认证配置由倒数第二条命令完成:cookie_fetcher 打开抖音登录页,登录完成后自动把msToken、ttwid等字段写回配置文件。若希望翻页受限时启用浏览器兜底,需额外执行pip install playwright与python -m playwright install chromium。config.example.yml 对所有配置项都有行内注释,首次运行只需修改link、path、mode三处。
核心任务:完成常见下载目标的做法
批量下载作者主页全部作品
把配置里的link换成主页地址,用mode与number决定抓取范围:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: - post number: post: 0 # 0 表示不限数量post为发布作品;like、mix、music可与post并列写在同一任务里,同一个aweme_id不会出现重复下载。当前账号收藏夹则单独使用collect/collectmix,链接为/user/self?showTab=favorite_collection。
项目另提供基于同一后端的桌面客户端(Douzy,内测中),粘贴链接即可建任务并可视化跟踪:
调整范围、画质与增量行为
日常调参集中在配置文件的四处:
- 时间范围:
start_time/end_time,格式YYYY-MM-DD,只保留区间内发布的作品。 - 视频画质:
video_quality支持original(探测原片)、highest(最高转码档,默认)、lowest以及1080p等具体分辨率,匹配不到时自动降级到最接近的可用档。 - 增量更新:
increase.post: true配合database: true跳过已下载作品;redownload_missing_files: true时磁盘主文件缺失会自动补下。 - 命名规则:
filename_template/folder_template可自定义{date}_{title}_{id}等变量,日期默认取作品发布时间而非下载时间。
定时自动归档
"每天固定时间更新某作者存档"这类需求交给 crontab(Linux)或任务计划程序(Windows)即可,以 Linux 为例:
0 2 * * * cd /path/to/douyin-downloader && python run.py -c config.yml >> download.log 2>&1配置中默认的progress.quiet_logs: true会在进度阶段静默日志,适合无人值守;需要排查时临时加--show-warnings或-v查看告警。
参数速查:最常改动的8个键
| 参数 | 作用 | 推荐值 |
|---|---|---|
thread | 并发下载数 | 5(默认) |
retry_times | 失败重试次数,指数退避 1s/2s/5s | 3(默认) |
mode | 主页下载模式:post/like/mix/music | post |
number.post | 发布作品数量上限,0 为不限 | 0 |
video_quality | 画质选择:original/highest/分辨率档位 | highest |
start_time/end_time | 发布时间过滤,YYYY-MM-DD | 留空(不过滤) |
browser_fallback.enabled | API 翻页受限时启用浏览器兜底 | true |
database | SQLite 去重与下载历史记录 | true |
实用技巧与常见问题
- 只抓到 20 条作品:这是翻页风控的典型表现。保持
browser_fallback.enabled: true与headless: false,浏览器窗口弹出后手动完成验证,且不要立刻关闭窗口。 - Cookie 失效:重新执行
python -m tools.cookie_fetcher --config config.yml,登录一次即自动写回配置,无需手动逐字段填写。 - 重新下载指定作品:跳过判断依赖数据库记录 + 本地文件名双重检查,需同时删除本地文件与
dy_downloader.db中的记录;只删数据库不删文件不会触发重新下载。 - 直播录制:FLV 文件可直接播放;HLS 源只保存 playlist,需用 ffmpeg 后处理。webcast 接口官方标记为 experimental,未覆盖所有场景。
实现一瞥:调度与去重的实现方式
下载主流程按链接类型分发:downloader_factory.py 依据 url_parser.py 的解析结果选择对应下载器;主页各模式是 core/user_modes/ 下的独立策略类,通过注册表挂载,新增一种下载目标只需实现一个策略。去重与完整性保障分布在 storage/database.py(aweme 明细 + 任务历史)和 downloader_base.py(Content-Length 校验文件完整性,不完整文件自动清理并重试);Cookie 与 msToken 生命周期由 auth/ 模块管理。
走向常态化归档
首次跑通后,可把increase与start_time组合起来做周期性增量归档,再开启notifications让任务完成后推送提醒。完整功能清单与限制说明见仓库内的 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),仅供参考