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 去重与失败重试,日常保存稳定可靠。
安装依赖并配置登录态
命令行版要求 Python 3.9 及以上,支持 Windows、macOS 与 Linux。先克隆仓库并安装依赖:
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader python -m pip install -r requirements.txt这段安装基础运行库;requirements.txt里的包装齐后,跑一次python run.py --version能正常输出版本号,就说明依赖到位。
抖音接口要求登录态,所以需要一份有效 Cookie。仓库自带浏览器抓取器,比手工从开发者工具复制更省事:
cp config.example.yml config.yml python -m pip install playwright python -m playwright install chromium python -m tools.cookie_fetcher --config config.ymlcookie_fetcher会拉起一个浏览器窗口让你手动登录抖音,回到终端按回车后,它把 msToken、ttwid 等字段写进config.yml。之所以额外装 Playwright 与 Chromium,是因为抓取和后续的浏览器兜底都依赖这个内核。
单作品与创作者主页端到端下载
单作品最直接的写法是临时追加链接,不改配置文件:
python run.py -u "https://v.douyin.com/xxx"-u参数把这条链接临时加入下载队列,具体解析与下载由 核心下载器 完成。成功标志是终端打印出作品标题与保存路径,且./Downloaded/下出现一个以{日期}_{标题}_{id}命名的文件夹,里面有视频文件。
整页下载创作者主页时,把配置里的link换成目标主页 URL 再运行:
python run.py -c config.yml配合number.post可限定抓取数量(0表示不限)。判断成功:终端逐条滚动进度,完成后数据库dy_downloader.db新增对应记录,磁盘上按作者目录聚合出全部作品;加-v可展开详细日志便于核对。
如果还需要批量、直播与数据能力
以下能力默认关闭,按需打开,每条对应"何时用 + 怎么配 + 预期结果":
- 点赞 / 合集 / 收藏:
mode改成like、mix、collect等(可多选),各模式上限写在number对应键里。结果是按所选模式各建一套归档目录。 - 直播录制:当
link指向live.douyin.com/{room_id}时自动进入录制模式,live.max_duration_seconds设0表示录到主播下播。注意它属实验特性,HLS 源只保存播放列表,不保证可直接播放。 - 评论采集:
comments.enabled设true,include_replies控制是否抓回复。每个作品额外生成一份*_comments.json,含正文、点赞数与回复关系。 - 音频与转写:
music: true保存原声;transcript.enabled: true可调用转写接口生成文字稿,适合做内容分析。
这些开关都写在同一份 YAML 里,改完重跑即可,无需动代码。
用 YAML 统一控制命名、目录与元数据
所有行为集中在config.example.yml,它同时是完整的字段字典:
link: - https://www.douyin.com/user/YOUR_SEC_UID path: ./Downloaded/ mode: [post] number: { post: 10 } video_quality: highest filename_template: "{date}_{title}_{id}" author_dir: nickname json: truenumber.post为0表示不限;start_time/end_time用YYYY-MM-DD圈定时间窗,含结束日当天。video_quality默认highest(最高转码档),设original会先探测上传原片、失败再回退,代价是每条多一次探测请求。filename_template支持{id} {title} {author} {date} {year} {month} {day} {time} {timestamp} {type} {mode},模板必须含{id}以防重名覆盖。author_dir可选nickname(直观)、sec_uid(唯一)、nickname_uid(直观且唯一,推荐重度用户),只影响后续下载,不迁移旧目录。json: true会为每个作品写一份元数据 JSON,含作者、标题、发布时间、原链与互动数据,便于二次分析。
设计意图是把"筛选—命名—归档—去重"全交给配置文件,由 配置模块 解析,磁盘主文件与 SQLite 双重判定,重复运行不会重复下载;去重与历史记录由 存储模块 维护。
GUI 桌面版、Docker 与定时任务等可选入口
命令行不是唯一入口,按需选择:
- Douzy 桌面版:面向不想碰终端的用户,粘贴链接、选内容类型、看任务进度、查本地档案,一套界面搞定;除抖音外还支持 TikTok、YouTube 等平台。成本是装一个独立应用,部分批量与高级功能需激活。
- Docker:仓库自带 Dockerfile,入口即
python run.py -c config.yml,挂载/app/Downloaded与/app/config.yml两个卷即可把下载目录和配置留在宿主机。适合服务器或想隔离环境的用户,成本是要熟悉容器与卷映射。 - 定时任务:把
python run.py -c config.yml交给系统调度器周期性抓取。因增量下载会自动跳过已下作品,重复调度不会产生重复文件,适合持续跟进某个主页。
Cookie 失效、限速与断点续传的处理
- 现象:跑主页只拉到零星几条或全部失败。原因:Cookie 过期或命中风控。操作:重跑
python -m tools.cookie_fetcher --config config.yml刷新登录态;并保持browser_fallback.enabled: true、headless: false,在弹出的浏览器里手动完成验证。刷新 Cookie 或反复重试并不能绕过风控,个别接口受限时需等待或换网络。 - 现象:下载明显偏慢。原因:接口频率限制。操作:把
thread调低、保留默认速率约束,避开高峰时段;网络不稳定时配置proxy。 - 现象:上次中断了,想接着下。操作:保持配置不变直接重跑,
increase.post: true会跳过磁盘上已存在的非空主文件,redownload_missing_files: true负责补齐缺失文件,因此无需清空数据库即可续传。
合规使用与总结
请将 douyin-downloader 用于学习、个人收藏与数据管理,尊重版权与隐私,遵守平台规则与当地法规;工具对抖音接口的可用性会随平台策略变化,请自行承担使用责任。
一句话总结: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
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考