抖音批量下载完整指南: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 历史记录,适合把喜欢的内容系统化整理到本地。本文依次介绍核心能力、上手步骤、参数说明与常见问题。
核心能力:从单条链接到整页作品
单视频、图集与音乐
把链接贴进 config.yml 的link字段,工具会自动识别类型:/video/是单视频,/note/与/gallery/是图集,/music/是音乐,v.douyin.com短链接也能解析,链接解析逻辑在 core/url_parser.py。视频默认取无水印的最高码率档,也可以在video_quality里选original探测原片,或直接指定1080p等分辨率。封面、音乐、头像、JSON 元数据各自独立开关,开启后随视频一并落盘。
项目另有一个基于同一后端的桌面版 Douzy(内测),粘贴链接即可开始下载,上图是它的抖音工作区界面。
合集与直播录制
/collection/与/mix/合集链接会按原有顺序下载全部条目,适合课程、连载类内容。直播链接live.douyin.com/{room_id}会录制为 FLV,输出到作者目录下的 live 子目录,并附带*_room.json房间快照;主播下播、网络空闲或手动中断时,已录制的部分都会保留。
主页批量下载与增量更新
粘贴/user/{sec_uid}主页链接,用mode选择抓取范围:post发布、like点赞、mix合集、music音乐;登录 Cookie 下还可单独运行collect/collectmix抓取收藏夹。number按模式限制条数,0 表示不限,多个模式可叠加运行且跨模式自动去重。
关注列表每周都有新作品,难道每次都要整页重下?开启increase增量模式后,磁盘上已有主文件的条目会被跳过,只补新作品;删掉某条视频的本地文件,它又会在下次运行时重新下载。
📁 文件组织与去重机制
输出目录结构
默认folderstyle: true,内容按“作者 → 模式 → 单作品”三层归档,作品目录名由folder_template渲染,默认为“日期_标题_id”,模板支持{author}、{year}等变量。批量任务结束后,download_manifest.jsonl会汇总全部产物清单。
SQLite 历史记录
database: true时,每条下载记录写入dy_downloader.db(见 storage/database.py),供历史查询与跨运行去重参考。增量跳过以磁盘文件为准,历史记录本身不决定跳过逻辑;强制重下某条内容需要同时删除本地文件和数据库记录,具体 SQL 见 README.zh-CN.md 的“重新下载”小节。
快速上手:安装依赖、Cookie 获取与首次运行
环境准备
douyin-downloader 要求 Python 3.9+,macOS、Linux、Windows 均可。克隆仓库并安装依赖:
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt需要浏览器回退时再装 Playwright 与 Chromium:
pip install playwright python -m playwright install chromiumCookie 获取方式
运行内置抓取脚本,终端会打开浏览器,登录抖音后回到终端按回车,Cookie 自动写回配置文件:
cp config.example.yml config.yml python -m tools.cookie_fetcher --config config.yml运行第一条下载任务
编辑 config.example.yml 中的link字段后执行:
python run.py -c config.yml命令行参数可临时覆盖配置:-u追加链接、-t 8改并发、-p ./Downloaded指定输出目录。下载过程有实时进度条,嫌日志刷屏可保持默认的progress.quiet_logs: true。
常用配置与命令行参数说明
config.yml 关键配置项
| 配置项 | 默认值 | 说明 |
|---|---|---|
mode | ["post"] | 抓取范围,collect/collectmix 需登录且单独使用 |
number.post | 0 | 每模式下限,0 为全部 |
thread | 5 | 并发下载数 |
retry_times | 3 | 失败重试次数,指数退避间隔 |
video_quality | highest | original / highest / lowest 或指定分辨率 |
start_time/end_time | 空 | 发布时间过滤,格式 YYYY-MM-DD |
increase.post | true | 增量下载,跳过磁盘已有作品 |
comments.enabled | false | 为每条作品另存*_comments.json |
browser_fallback.enabled | true | 分页受限时启动浏览器辅助翻页 |
run.py 命令行参数
-u追加链接(可重复)、-c指定配置、-p输出目录、-t并发数、-v详细日志;--hot-board [N]导出热搜榜 JSONL,--search "关键词"按词搜索输出 JSONL,--serve --serve-port 8000以 REST API 模式运行(需另装 fastapi 与 uvicorn)。开启transcript.enabled后,视频还可调用 OpenAI 兼容接口生成文字稿。
常见问题与已知使用限制
分页风控与浏览器回退
只抓到 20 条左右时通常是分页风控所致。确认browser_fallback.enabled: true且headless: false,在弹出的浏览器中手动完成验证,并保持窗口直到翻页结束。
Cookie 失效与强制重下
提示 Cookie 无效时重跑 cookie_fetcher 脚本刷新。强制重下:先删除作品目录(目录名含 aweme_id),再执行sqlite3 dy_downloader.db "DELETE FROM aweme WHERE aweme_id = '<id>';"。只删库不删文件不会触发重下,只删文件则会触发。
已知限制
浏览器回退目前仅对post模式完整验证,like/mix/music仍走 API 分页;collect/collectmix只作用于 Cookie 所属账号;直播 HLS 源仅保存播放列表,可播放文件需 ffmpeg 转封装。完整清单见 README.md 的 "Current Limitations" 小节。
✅ 开始使用的行动清单
推荐执行顺序
- 克隆仓库并安装 requirements.txt 依赖,需要浏览器回退时另装 Playwright
- 复制
config.example.yml为config.yml,运行 cookie_fetcher 脚本获取 Cookie - 在
link贴入第一条链接,执行python run.py -c config.yml完成首次下载 - 按场景调整
mode、number、video_quality与start_time/end_time - 长期使用保持
increase为 true,定期重跑即可只拉新作品
【免费下载链接】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),仅供参考