douyin-downloader 完整指南:如何 10 分钟批量下载抖音视频去水印
【免费下载链接】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 是一个基于 Python 的抖音无水印下载工具:粘贴单条视频链接拿到干净的 mp4,粘贴作者主页链接则自动批量抓取作品。全部行为由一份config.yml驱动,内置 SQLite 历史库与磁盘文件双重去重,接口翻页受限时还有浏览器兜底。本指南带你从全新环境跑通一次主页批量下载,全程约 10 分钟。
🧭 先选路线:CLI、桌面版还是 API
同一个仓库提供三种用法,先对号入座:
- 只要图形界面、粘贴链接就下→ 用 Douzy 桌面版。它覆盖抖音、TikTok、YouTube、Telegram、X 五个平台,目前 0.11.6 处于封闭测试阶段。
- 要写脚本、挂定时任务、部署在服务器上→ 用 Python CLI。这是功能最完整的入口,但只支持抖音。
- 要把下载接进自己的程序→ 用
run.py --serve起的 REST API,需要另装 fastapi 和 uvicorn。
没有特殊需求就直接上 CLI:参数少、行为可控,后续内容都以它为主线。
📦 它到底能替你做什么
核心逻辑一句话:请求抖音接口取无水印源,按你指定的画质档位下载,落盘前先看"下过没有"。
- 单条下载:视频、图文链接直接进
link,短链(v.douyin.com)会先解析再下。 - 主页批量:
mode指定内容类型,post(作品)、like(喜欢)、mix(合集)、music(音乐)可并列写,同一作品跨模式出现不会重复下载。 - 增量判断:磁盘上已有非空主文件的作品自动跳过,配合
increase开关控制是否强制重下。 - 去重双保险:SQLite 库(默认
dy_downloader.db)记录下载历史,磁盘文件做最终校验。 - 浏览器兜底:接口翻页被卡时,Playwright 开浏览器滚动主页补抓作品 ID。
🏁 从零到第一个 mp4:三步
第一步:装依赖
要求 Python 3.9+,Windows、macOS、Linux 均可:
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt pip install playwright python -m playwright install chromium前三行装好运行环境,后两行下载浏览器内核——扫码登录和翻页兜底都靠它。
第二步:扫码把登录态写进配置
抖音接口返回完整无水印源依赖登录态,项目自带扫码脚本:
cp config.example.yml config.yml python -m tools.cookie_fetcher --config config.yml弹出浏览器后扫码登录,回终端按回车,Cookie 就写进了config.yml。脚本逻辑在 tools/cookie_fetcher.py,登录态失效后重跑同一条命令即可。另外,交互终端里程序检测到登录失效会自动开浏览器重新登录,并只重试一次,不会死循环。
第三步:填链接,跑命令
把config.yml里的示例link换成你的目标:
link: - https://www.douyin.com/user/你的主页地址 mode: [post] number: post: 10python run.py -c config.yml它按配置逐个下载,成品落在Downloaded/{作者}/{日期}_{标题}_{id}/。主流程在 cli/main.py,各内容类型的抓取策略在 core/user_modes/。常用参数:-u在配置链接之外追加链接、-t调并发、-p换保存目录、-v开详细日志。
⚙️ config.yml 里最常用的七个字段
完整字段语义以 config.example.yml 的注释为准,日常基本只动这几个:
| 字段 | 默认值 | 什么时候改 |
|---|---|---|
mode | [post] | 想批量拉喜欢/合集/音乐时加like、mix、music |
number.post | 0(不限) | 给批量操作设上限,比如先试 10 条 |
start_time/end_time | 空 | 按日期筛作品,YYYY-MM-DD,含结束日当天 |
video_quality | highest | 设original额外探测上传原片,探测不到回退最高转码档;lowest或720p省流量 |
increase.post | true | 设false强制重下并覆盖当前筛选范围,无需清空数据库 |
filename_template | {date}_{title}_{id} | 自定义文件命名,模板必须含{id}防覆盖 |
thread/retry_times | 5/3 | 失败偏多时降并发、看要不要加重试 |
另外两个值得知道:download_pinned默认false,不抓主页置顶作品;author_dir决定作者目录层用昵称还是sec_uid,重度用户建议nickname_uid。
🩹 下载出问题,先按这个顺序排查
Q:提示登录失效,怎么刷新登录态?重跑python -m tools.cookie_fetcher --config config.yml。交互式终端里程序发现失效也会自动开浏览器,重新登录后自动重试一次。
Q:主页只抓到少量作品,翻页像被卡住?确认browser_fallback.enabled: true且headless: false;弹出的浏览器里手动完成验证,等它滚动抓完再关窗。要说明的边界是:抖音风控目前可能阻断 CLI 下载单条视频、合集、音乐等,刷新 Cookie 或反复重试都解决不了这类拦截,浏览器兜底也不保证成功。日常大批量下载建议切到桌面版。
Q:个别视频始终下载失败?先用浏览器打开链接确认作品在线;再-t 3降并发并加-v看详细日志;最后核对retry_times和rate_limit是否被改过小。
Q:进度画面频繁重绘,看着像卡死?这是日志刷新触发终端重绘的正常表现,progress.quiet_logs默认就是开的,不用处理;排障时临时加-v即可。
🚀 用顺手之后:追更、查档与二次集成
- 定时追更:
increase.post: true加主页链接,丢进 cron 就是自动追更,只拉新发布的。 - 回看历史:
sqlite3 dy_downloader.db "SELECT title, author_name FROM aweme ORDER BY download_time DESC LIMIT 20;"能回看最近 20 条记录,表结构见 storage/database.py。 - 热榜与搜索:
python run.py --hot-board 30拉热榜、--search "猫咪" --search-max 50关键词搜索,结果存 JSONL。 - 程序化提交任务:
pip install fastapi uvicorn后python run.py --serve --serve-port 8000起 REST 服务,server.max_jobs默认保留 500 条任务记录。 - 直播录制:实验性功能,HLS 源保存的是播放列表,不是可直接播放的视频,别指望拿来当直播录像用。
下载的内容建议仅限个人收藏与学习研究,遵守平台条款与版权规范,不做商业利用或二次传播。抖音接口变化快,定期git pull能跟上修复。
【免费下载链接】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),仅供参考