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 是一个命令行抖音批量下载工具,粘贴链接就能拿到无水印视频,也支持视频、图文、合集、音乐和作者主页的批量下载,默认带进度展示、失败重试、SQLite 去重和浏览器兜底。
桌面版 Douzy 的链接下载页:粘贴链接、识别类型、一键开始下载
它是什么
一句话:一个 Python 写的抖音下载器,核心是把链接变成你磁盘上的无水印文件和结构化元数据。
- 📥 单条视频、图文(note)、合集、音乐(原声)的去水印下载
- 👥 作者主页批量下载:作品、点赞、合集、音乐四种模式
- 🗂 每个作品附
_data.json元数据(可选),下载历史记录在 SQLite 里 - 🔌 可跑成 REST API 服务,也能接 Bark / Telegram / Webhook 完成通知
它不做什么:没有官方网页控制台,主交互方式是命令行 + YAML 配置;桌面客户端 Douzy 目前还在内测。collect/collectmix收藏夹模式只对你登录 Cookie 对应的账号生效,且必须单独使用,不能和post/like/mix/music混用。
快速上手:如何安装 douyin-downloader 并跑通第一条下载
环境要求 Python 3.8+,macOS / Linux / Windows 均可。克隆仓库后:
pip install -r requirements.txt # 安装核心依赖 pip install playwright # 可选:浏览器兜底与 Cookie 自动获取 python -m playwright install chromium然后复制仓库自带的 config.example.yml 为config.yml,填一个最小可用配置:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx # 要下载的链接 path: ./Downloaded/ # 下载目录 mode: - post # post/like/mix/music,收藏夹模式为 collect/collectmix thread: 5 number: post: 1 # 该模式下最多下几条,0 = 不限 cookies: ttwid: 填你的TTWID # 跑 Cookie 获取工具后会自动写入获取 Cookie 有两条路:推荐自动方式python -m tools.cookie_fetcher --config config.yml,浏览器里登录抖音后回到终端按 Enter,Cookie 自动写回配置文件;也可以手动从浏览器开发者工具复制 Cookie 字符串粘贴进去。
最后一条命令:
python run.py -c config.yml下载完成时文件按Downloaded/作者名/模式/日期_标题_ID/落盘,dy_downloader.db是默认数据库位置。每个作品默认只保存视频本体,封面、音乐、头像、JSON 在配置里按需打开。
核心功能:从单条下载到家页批量存档
单条链接下载:如何下载一个视频或图文
link里放/video/{aweme_id}、/note/{note_id}、/gallery/{note_id}、/collection/{mix_id}、/music/{music_id}都可以,https://v.douyin.com/...这类短链也能自动解析。不想改配置文件时,直接用命令行参数追加:
python run.py -c config.yml -u "https://www.douyin.com/video/7604129988555574538" -t 8 -p ./Downloaded-u追加链接(可重复),-t调并发,-p指定目录。这是最常用的入口:手上有一个链接,一条命令拿走。
批量下载作者主页:mode 与 number 怎么配
链接换成https://www.douyin.com/user/{sec_uid},把mode设为post、like、mix、music的任意组合,number字段按模式分别限数,0 表示全量。同一个作品在多个模式里重复出现时,跨模式自动去重,只下一次。什么时候用:你想长期存档一个博主,或者做竞品内容分析时。
增量更新:increase 字段与每日定时存档
increase默认对post/like/mix/music全部为true,工具只跳过"主媒体文件已存在且非空"的作品,重跑同一配置就是增量下载。什么时候用:配合 crontab 做每日更新。注意它的判断依据是磁盘文件:删掉本地文件重跑会自动补齐;反过来,只删数据库不删文件不会触发重下(这是 README 里专门强调过的坑)。
浏览器兜底:翻页被风控拦下时怎么继续
API 翻页被平台风控拦下时(典型现象是只抓到约 20 条),工具会按browser_fallback配置启动浏览器模拟滚动加载:max_scrolls: 240、idle_rounds: 8、wait_timeout_seconds: 600是默认值。headless: false时会弹出浏览器窗口,你在窗口里手动完成验证,它会自动继续。浏览器兜底目前只对post模式做过完整验证,like/mix/music仍主要依赖 API 正常分页。
其余能力一句话带过:还能下载封面、音乐原声、头像和_data.json元数据;comments字段可采集作品评论(含可选二级回复)为*_comments.json;live.douyin.com/{room_id}链接触发直播录制,主播下播或 Ctrl+C 时已录数据保留为 FLV;--hot-board 30和--search "关键词"可把热搜榜和搜索结果导出为 JSONL;transcript字段可调用 OpenAI 转写 API 为视频生成文本(图文不生成转写)。
进阶用法:画质、时间过滤与 API 服务
- 画质:
video_quality支持original(探测上传原片,失败退回最高转码档)、highest(默认,只从码率阶梯里挑最高档)、lowest,以及1440p/1080p/720p等指定分辨率,匹配不到时自动降级到最接近的档。 - 时间过滤:
start_time/end_time用YYYY-MM-DD格式过滤作品发布时间,做定向样本采集时用。 - 完成通知:
notifications.providers支持 bark / telegram / webhook(企业微信、飞书、钉钉的 bot 地址同样可用),多个渠道并行推送,某个渠道失败不会阻塞下载流程。 - REST API 服务:装好
fastapi+uvicorn后运行python run.py --serve --serve-port 8000,默认监听127.0.0.1:8000。POST /api/v1/download提交{"url": "..."}得到 job_id,GET /api/v1/jobs/{job_id}查进度,完成态任务保留 24 小时、内存里最多留 500 条。
常见问题
只抓到 20 条左右的作品→ 这是抖音翻页风控的典型表现。确认browser_fallback.enabled: true、browser_fallback.headless: false,浏览器弹窗出现后手动完成验证,别急着关窗口。
Cookie 失效、请求开始报错→ 重跑python -m tools.cookie_fetcher --config config.yml,重新登录后 Cookie 会自动写回config.yml。
删了数据库却不会重新下载→ 去重判断是"数据库记录 + 本地文件"双重检查:只删数据库保留文件时,文件存在就不会重下;只删文件保留数据库时,工具会把"库里记录但本地缺失"当作需要重试,会重新下载。想让某条作品重新下载,本地文件和数据库记录要一起清。
进度输出刷屏、日志重复→ 默认progress.quiet_logs: true会压制进度阶段的日志;调试时临时加--show-warnings或-v看完整日志。
转写文件没生成→ 按顺序检查:transcript.enabled是否为true、下载的是否为视频(图文不生成转写)、OPENAI_API_KEY(或transcript.api_key)是否有效、response_formats里是否包含txt或json。
桌面版任务中心:每条任务显示状态、成功/失败数,可重试失败项并打开输出目录
使用边界
- 项目采用 MIT 协议,源码和再分发需保留许可声明。
- README 的 Disclaimer 写明:仅用于技术研究、学习和个人数据管理;不得侵犯他人隐私、版权或其他合法权益,不得用于非法用途;使用产生的风险和法律责任由使用者自行承担。
- 平台接口或政策变动导致功能失效,属于正常技术风险,不算 bug。
- 工具内置了速率限制(默认 2 请求/秒)、指数退避重试(1s、2s、5s)和默认 5 并发,请保持这些默认值,不要为了"快"去高频全量抓取,更不要商业性再分发下载内容。
接下来可以做的事
- 复制
config.example.yml为config.yml,跑python -m tools.cookie_fetcher --config config.yml写入 Cookie。 - 先用单条视频链接跑一次
python run.py -c config.yml,确认文件和目录结构符合预期。 - 把
link换成某个作者主页,配好mode/number/increase,跑一次批量下载。 - 需要评论和时间过滤时,再打开
comments与start_time/end_time字段。 - 卡住时先对照上面"常见问题",配置字段含义查 README.md,配置模板看 config.example.yml。
【免费下载链接】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),仅供参考