从 4 小时到 20 分钟: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 是一个开源的抖音批量下载工具,核心卖点就四个字:无水印、批量。视频、图集、合集、音乐原声、收藏夹都能下,还附带直播录制、评论采集和热搜榜导出。下面不聊虚的:先 5 步跑通第一个任务,再讲它值得装的理由、三个能直接抄走的配置场景,最后列出新手最容易翻车的几个坑。
一个"素材搬家"的夜晚:手动下载到底有多累
上周我接了个剪辑单子,需要同一位博主近 50 条视频素材。手动流程是这样的:点开主页 → 逐条点进作品 → 复制链接 → 切到某个解析网站 → 粘贴、等解析 → 下载 → 手动重命名。一条算 3 到 5 分钟,50 条就是 3 小时起步,而且全程不能走神——"我刚下到第几条来着"这种问题,问一次就想砸键盘。
后来我翻到了 douyin-downloader。同样 50 条,从抓取到全部落地只花了不到 20 分钟,中间我还去泡了杯咖啡。这篇文章就是把"我踩过的路"原样画给你,照着走就行。
5 步跑通第一个下载任务
第 1 步:装依赖。进入项目目录后执行:
pip install -r requirements.txt想让"翻页受限时自动开浏览器验证"这个兜底能力生效,再补两条:
pip install playwright python -m playwright install chromium第 2 步:拿 Cookie(关键一步)。抖音要登录态才能稳定访问,推荐用项目自带的自动抓取,不用手抄 Cookie:
python -m tools.cookie_fetcher --config config.yml它会自动弹浏览器引导你登录,登录完回终端按 Enter,Cookie 自动写回配置。
第 3 步:写一份最小配置。
cp config.example.yml config.yml改三行就够:
link: - https://www.douyin.com/user/你的目标用户主页 path: ./我的素材/ mode: - post第 4 步:跑起来。
python run.py -c config.yml想临时换个链接、加并发,命令行也能追加:python run.py -c config.yml -u "https://www.douyin.com/video/7604129988555574538" -t 8 -p ./Downloaded。
第 5 步:验收。跑完后path目录下会按"作者 → post → 日期_标题_作品ID"自动归档,视频、封面、音频、JSON 元数据各就各位。
终端里一次抓取 274 个作品,重复文件自动跳过、进度逐条展示——这一步手动做至少要盯半小时屏。
官方还配套一个同源的桌面客户端(内测中),粘贴链接即可检测下载,还能同步关注列表、可视化跟踪任务,适合不爱敲命令的朋友:
桌面端"粘贴链接,马上开始",支持作品、喜欢、合集三种内容类型勾选,上手零门槛。
想下载什么,链接怎么给
| 目标内容 | 链接写什么 |
|---|---|
| 单个视频 | douyin.com/video/{id} |
| 单个图文 | douyin.com/note/...或douyin.com/gallery/... |
| 单个合集 | douyin.com/collection/{mix_id} |
| 单个音乐原声 | douyin.com/music/{music_id} |
| 作者主页批量 | douyin.com/user/{sec_uid}+mode: [post, like, mix, music] |
| 登录账号收藏夹 | douyin.com/user/self?showTab=favorite_collection+mode: [collect] |
短链如v.douyin.com/...也会自动解析,不用手动展开。
它到底聪明在哪:拆开看三个设计
第一,下载是"双保险"。它优先走官方 API,快而稳;一旦被风控,自动切到浏览器模式翻页,还能让你手动过验证码。就像打车:快车叫不到,系统自动帮你换专车,你只管上车。
第二,去水印和挑清晰度是自动的。视频源优先选无水印版本,清晰度则根据video.bit_rate数组自动挑最高码率,不用你逐条比来比去。
第三,去重和断点续传把"重复劳动"消灭了。SQLite 数据库加本地文件双重检查,同一个作品无论出现在主页还是合集中,只下一次;下载中断后按 Content-Length 校验,不完整的文件自动清理并重试,网络抖一抖也不心疼。重试采用指数退避(1 秒、2 秒、5 秒),默认每秒限 2 个请求、5 线程并发,既快又不至于被封。
任务级进度条实时展示"解析链接 → 提交请求 → 下载"每个环节,右下角还能导出事件流,出问题一眼定位。
三个真实场景,照着配置就能用
场景一:追更型素材库
定期收集某几位创作者的内容,把增量开关打开,它只下新的:
link: - https://www.douyin.com/user/创作者A - https://www.douyin.com/user/创作者B path: ./创作素材/{author}/{year}-{month}/ mode: - post - like number: post: 50 increase: post: true like: true start_time: "2025-01-01" folderstyle: true filename_template: "{date}_{title}_{id}"命名模板支持{id} {title} {author} {date} {year} {month} {day} {time} {type} {mode}等变量,只要保证带{id}就不会重名覆盖;start_time/end_time还能按时间段过滤,只下你想要的年份。重名作者太多的话,把author_dir设为nickname_uid,直观又唯一。
场景二:直播间录制,人不在场也不丢内容
想留档一场直播?把链接换成直播间地址:
link: - https://live.douyin.com/直播间ID live: max_duration_seconds: 3600 # 0 表示录到主播下播录制的 FLV 存放在Downloaded/{作者}/live/下,主播下播、断网或你手动中断时,已录的字节都会保留(临时文件自动转正),不会白录一场。
场景三:热点运营的"热搜 + 评论 + 推送"组合拳
做内容运营的,可以顺手拉热搜榜和关键词结果:
python run.py --hot-board 30 -p ./Downloaded python run.py --search "露营" --search-max 100 -p ./Downloaded结果导出为带时间戳的 JSONL 快照。再配合评论采集,每个作品旁边会多出*_comments.json:
comments: enabled: true include_replies: true max_comments: 500如果想把工具当服务用,python run.py --serve --serve-port 8000会起一个 REST API(提交链接、查任务状态都有对应接口),配合 Bark / Telegram / Webhook 完成通知,下载完自动喊你一声。
新手最容易翻车的 3 个地方
① Cookie 过期,表现是"突然什么都下不动"。Cookie 有效期通常 7 到 30 天。别慌,重跑一遍python -m tools.cookie_fetcher --config config.yml即可。
② 只能抓到 20 条。这是抖音翻页风控的经典表现。确认配置里browser_fallback.enabled: true且headless: false,浏览器弹出来后手动完成验证,别一弹窗就关掉。
③ 想重新下载却"删了个寂寞"。去重是双重的:只删数据库不删文件,不会重下(文件还在);只删文件不删数据库,才会触发重下。想重下某个作品,两条命令配合:
sqlite3 dy_downloader.db "DELETE FROM aweme WHERE aweme_id = '作品ID';" # 再删掉本地对应文件目录顺带一提,直播的 HLS 源默认只存 playlist,想直接播放得用 ffmpeg 转一下,FLV 则开箱即用。
值不值得装:算一笔时间账
以"50 条作品 + 要求整理归档"为例,把账摊开看:
| 环节 | 手动操作 | douyin-downloader |
|---|---|---|
| 逐条获取链接并解析 | 2.5 小时左右 | 抓取全自动 |
| 查重(全靠记忆) | 至少 20 分钟 | SQLite + 文件双重去重 |
| 命名与分类归档 | 30 分钟起步 | 模板自动完成 |
| 断网/失败后的补救 | 基本重头再来 | 断点续传 + 指数退避重试 |
| 合计 | 约 4 小时 | 20 到 25 分钟 |
差距不是一个量级的问题,是"能忍"和"不用忍"的区别。
任务中心把"进行中 / 已完成 / 失败"分门别类,今日成功失败一目了然,适合批量操作后回来统一验收。
最后一步:去试一下,以及两条边界
如果你也想告别"逐条复制链接"的日子,第一步很简单:git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader,装依赖、抓 Cookie、跑通第一个任务——整个过程不会超过 10 分钟。项目是 MIT 协议开源,cli/main.py、config.example.yml这些源码文件都写得很清楚,遇到问题可以提 issue、提 PR,或帮忙补文档,都是很好的参与方式。
最后说两句边界。这类工具的价值是帮你把机械劳动省下来,而不是绕过规则去搬运别人不想被搬的东西。请把它用在个人学习、研究和素材管理上,尊重原作者版权,也遵守平台的服务条款。工具是趁手的,分寸是自己的。
【免费下载链接】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),仅供参考