抖音批量下载工具 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 是免费开源的抖音批量下载工具:单条视频、图文、合集、原声都能下,去水印,带重试、限速、去重和浏览器兜底。全文按"任务"组织,每个任务照着做就行。
三步装好环境,让第一条无水印视频落盘
目标:装好依赖、配一份 config.yml,拿到你的第一个无水印 mp4 和元数据清单。
最短路径,四行命令:
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打开config.yml,link填一条视频链接,然后运行python run.py -c config.yml。
为什么先抓 Cookie 再跑任务?很多接口要登录态才返回完整数据,抓取器用真实浏览器扫码,免去手动复制 Cookie 的麻烦;失效了随时重跑这条命令即可。
如何验证:终端有进度条跑完,Downloaded/作者名/下出现该作品的 mp4,同目录还有download_manifest.jsonl,一行对应一条作品的 ID、标题和保存路径。参考配置见 config.example.yml,抓取器源码在 tools/cookie_fetcher.py。
账号作品批量归档:mode / number / increase 字段说明
目标:一条主页链接归档整个博主的作品,二次运行自动跳过已下载条目。
最短路径,把config.yml改成这样:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx # 博主主页链接 mode: - post # post=发布作品;like=点赞、mix=合集、music=原声 number: post: 50 # 本次最多 50 条,0 表示不限 increase: post: true # 增量模式:本地已存在主文件则跳过想按时间圈范围,再加两行(格式YYYY-MM-DD):
start_time: "2024-01-01" # 只下这天之后发布的作品 end_time: "2024-12-31" # 只下这天之前的作品
increase看的是本地文件而不是数据库:主媒体文件存在且非空才跳过,所以删掉文件它还会重下,挪目录前先想清楚。
如何验证:首次运行后Downloaded/作者名/post/下按"日期_标题_ID"建文件夹;再跑一遍同一任务,已存在的作品被直接跳过。历史可查 SQLite:sqlite3 dy_downloader.db "SELECT aweme_id, title FROM aweme LIMIT 20;"。
合集、原声、直播录制:链接一换内容就换
目标:除主页作品外,整合集、整博主原声、直播录像也能落盘。
合集和原声走同一个入口,换mode即可:
link: - https://www.douyin.com/collection/7341234567890123456 # 合集链接 mode: - mix # mix=合集;换成 music 下该博主全部原声直播走单独的录制链路(实验性功能,FLV 流):
link: - https://live.douyin.com/123456789 # 直播间链接 live: max_duration_seconds: 0 # 0 = 录到主播下播直播和常规下载不是一套流程:主播下播或你 Ctrl+C,已录到的部分都会保留成最终文件,不会白录。
如何验证:合集落在作者名/mix/、原声落在作者名/music/,直播文件在作者名/live/下,带.flv和一份_room.json元数据快照。
没有链接也能动手:热榜与关键词搜索导出
目标:没有现成链接时,用热榜和关键词把候选作品导出成结构化 JSONL,再决定归档谁。
最短路径,两条命令:
python run.py --hot-board 30 -p ./Downloaded python run.py --search "猫咪" --search-max 50先导出再下载:JSONL 里是结构化条目,挑出值得留的再喂给
config.yml批量归档,避免盲目下满。
如何验证:Downloaded/hot_board/下生成带时间戳的 jsonl(如20260424_221530.jsonl),Downloaded/search/下生成关键词_时间戳.jsonl,打开能看到逐条作品的链接与元信息。
常见问题速查表
| 症状 | 可能原因 | 一行解法 |
|---|---|---|
| 日志大量 4xx,提示登录态失效 | Cookie 过期 | python -m tools.cookie_fetcher --config config.yml重新扫码 |
| 只拉到约 20 条作品就停 | API 翻页被风控限制 | browser_fallback.enabled: true且headless: false,弹出手动过验证 |
| 抓取器弹不出浏览器 | playwright 未安装 | pip install playwright && python -m playwright install chromium |
| 下到一半频繁报错、进度停滞 | 网络抖动或触发限流 | 降并发-t 2,有代理就在配置里填proxy |
| 想重下某条已下载的作品 | 磁盘文件+数据库双重校验跳过 | 删本地文件后sqlite3 dy_downloader.db "DELETE FROM aweme WHERE aweme_id='...';" |
限流那条最容易踩:兜底浏览器弹出后,headless必须是false,手动完成滑块/验证码,别提前关窗口,否则采集直接中断。
你接下来要做的就一件事:克隆仓库,把一条博主主页链接填进config.yml,跑一次python run.py -c config.yml。等批量归档跑顺了,还可以接 Bark/Telegram 完成通知,或--serve起 REST 服务,把下载能力暴露给别的程序调用。
【免费下载链接】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),仅供参考