批量下载抖音无水印视频: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 把这几百遍压缩成一条命令:免费开源的抖音视频下载工具,去水印、选高清源、连整个主页一起批量拉取。
能力全景:先看它管什么
| 下载对象 | 输入 | 产出 |
|---|---|---|
| 单个视频 / 图文 | 分享链接https://v.douyin.com/... | 无水印 mp4、封面、元数据 JSON |
| 用户主页 | https://www.douyin.com/user/... | 全部作品(或喜欢列表、合集) |
| 合集(mix) | 合集链接 | 集内所有视频 |
| 音乐(原声) | 视频/音乐链接 | mp3,适合攒 BGM 素材库 |
| 直播录制 | 直播间链接 | 按所选清晰度录制的直播流 |
下载引擎之外,它内置了几样批量场景下真正有用的机制:5 线程并发、失败自动重试、SQLite 去重(跨会话不重复下载)、增量更新、Rich 实时进度条,以及接口异常时的 Playwright 浏览器兜底。
从 0 到能跑:装依赖 + 拿 Cookie
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txtclone 拿源码;requirements.txt里装的是下载引擎(requests/aiohttp)、进度条(rich)和配置解析(pyyaml),一次装齐。
接下来是最容易卡住的一步:拿 Cookie。抖音需要登录态才会返回资源地址,这个工具给了三条路:
- 推荐(新手):
python cookie_extractor.py—— 按提示走,自动抓取浏览器里的登录态并写入配置,不用看原始参数 - 手动:
python get_cookies_manual.py—— 脚本会告诉你该从浏览器复制哪些字段(msToken、ttwid、odin_tt 等),然后自己粘进配置文件,也可以用DOUYIN_COOKIE环境变量 - 全自动:
downloader.py --auto-cookie,需要先pip install playwright && playwright install,适合完全不想碰浏览器的场景
💡 记住一件事:Cookie 就是登录态,它过期是后面大部分下载报错的头号原因。
最短命令链:一条命令出无水印视频
# 输入:一个分享链接;执行:V1 入口;产出:mp4 + 原声 + 封面 + JSON python DouYinCommand.py -C -l "https://v.douyin.com/xxxxx/" -p ./Downloaded/-C表示用命令行参数模式(不带它时默认读当前目录的config.yml)-l是链接,可以写多个-p是保存位置,不给就存到当前目录
跑完在Downloaded/里看到的就是成品:无水印视频、mp3 原声、封面图、一份完整元数据。链接想反复用,写进配置文件更省事:python DouYinCommand.py -F config_douyin.yml。
⚠️ 小坑:V1 里-C和-c含义完全不同,大写是命令行模式,小写是"是否下载封面",写错会莫名其妙丢封面。
把整个主页拉进本地文件夹
python downloader.py -u "https://www.douyin.com/user/xxxxx" -p ./Downloaded/预期产出:文件按"作者 → 日期_标题"自动归档,已入库的作品直接跳过,Rich 进度条实时显示每个任务的完成度,失败自动重试,中断后重跑接着走。
一个必须知道的分工:单条视频走DouYinCommand.py(V1,更稳),主页批量走downloader.py(V2,带自动 Cookie 和重试管理)。USAGE.md 的版本对比表里写得很明确:V2 的单视频 API 目前有问题,别拿它下单个视频。
增量更新:只拉新发布的作品
素材库建好之后,日常只需要补新内容,而不是每次全量重跑:
# config_douyin.yml 中打开增量开关 increase: post: true # 主页作品只下载上次之后的新增 like: true # 喜欢列表同理 database: true # 增量和去重都依赖它,必须开着配合时间过滤,只拉某个时间段的作品:
start_time: 2025-08-01 # YYYY-MM-DD,留空不过滤 end_time: now # 会被替换成当天日期 number: post: 0 # 0 表示不限量,想试跑先改成小数字坑点:database关掉的话,"去重"和"增量"同时失效,重复跑一次就是重复存一遍。
直播间也能录
# 直播链接走 V1 入口,其余参数和单视频一样 python DouYinCommand.py -C -l "https://live.douyin.com/live/直播间ID"运行后会列出清晰度选项(FULL_HD、SD 等)供你选,录制过程中主播下播,已写入的数据同样保留。
配置字段逐个说
只列日常会动的,完整字段看config.example.yml:
link: - https://v.douyin.com/xxx/ # 视频/主页/合集链接,支持多条 path: ./Downloaded/ # 保存目录,默认当前目录 thread: 5 # 并发线程数,默认 5 mode: - post # 主页模式:post 作品 / like 喜欢 music: true # 下载原声,默认开 cover: true # 下载封面,默认开 json: true # 存元数据,默认开 folderstyle: true # 按"作者→日期_标题"归档 retry_times: 3 # 失败重试次数(downloader.py)归档后的目录长这样:
Downloaded/ ├── 创作者A/ │ ├── 2024-01-15_热门教程/ │ │ ├── 视频.mp4 │ │ ├── 音频.mp3 │ │ ├── 封面.jpg │ │ └── 元数据.json │ └── 2024-01-20_拍摄技巧/ │ └── 视频.mp4 └── 创作者B/踩坑与排障
症状:批量任务中途大量失败、请求被拦原因:并发太高触发限流。解法:thread降到 3 左右;downloader.py内置速率限制(约 2 请求/秒)和重试;接口异常时它会自动切到 Playwright 模拟浏览器,弹出验证码可以手动过完再继续。
症状:原来好好的,突然成片报错原因:Cookie 过期,登录态没了。解法:重跑python cookie_extractor.py即可,建议每隔几周习惯性刷一次。
症状:重跑同一批链接,磁盘里出现重复文件原因:database: false,SQLite 没记录,去重无从谈起。解法:database: true常开,长期跟进的主页再开对应类型的increase。
症状:升级后某个功能突然失效原因:抖音接口变更。解法:git pull拉最新代码,apiproxy/douyin/目录就是为这类适配持续更新的。
要的就是"贴链接 → 无水印原片 + 整齐目录"这件事的话,它已经做到位了。下一步:先跑python cookie_extractor.py,再下一条无水印视频试手感;字段细节查 USAGE.md 和 config.example.yml,实现原理在 apiproxy/douyin/ 源码目录里。
【免费下载链接】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),仅供参考