三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

从入门到精通的三重境界:用 douyin-downloader 玩转抖音视频批量下载

从入门到精通的三重境界:用 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

douyin-downloader 是一款开源免费的抖音批量下载工具,支持视频、图文、合集、音乐等多种内容类型,默认去水印,并内置进度展示、失败重试、SQLite 去重与浏览器兜底能力。无论你是第一次接触下载工具的普通用户,还是需要稳定素材管道的内容团队,这篇指南都会带你从零开始,一步步把"下载抖音视频"这件事从手动苦力变成自动流水线。

写这篇文章之前,我先替你想清楚了一个问题:网上讲抖音下载的教程不少,但大多数要么只教单个视频,要么让新手对着几十个参数一头雾水。所以我干脆把使用路径拆成了三个递进的境界——先跑通、再批量、后自动化。你可以像打游戏闯关一样,逐个境界吃透。


第一重境界:三分钟部署,跑通你的第一次下载

这一重境界的目标只有一个:把第一个视频干净利落地存到本地。全程不需要理解任何底层机制,照着做就行。

第一步:克隆项目并安装依赖

在终端里执行下面的命令,先把工具拿到手:

git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader # 安装核心依赖 pip install -r requirements.txt # 可选但强烈推荐:浏览器兜底与自动获取 Cookie 需要它 pip install playwright python -m playwright install chromium

为什么建议装 playwright?因为抖音对批量翻页有风控,接口偶尔会"罢工",这时工具会自动降级到浏览器模拟模式,让你手动过一遍验证码就能继续。装了它,等于给下载上了一道保险

第二步:用一条命令拿到"入场券"——Cookie

抖音的部分接口需要登录态,而 Cookie 就是你的通行证。手动从浏览器里抠 Cookie 又麻烦又容易过期,好在工具自带自动获取脚本:

python -m tools.cookie_fetcher --config config.yml

运行后浏览器会弹出抖音登录页,登录成功后回到终端按一下回车,Cookie 就自动写进配置文件了。以后失效了,重复这一条命令即可。

第三步:写一份"最简配置"

先复制示例配置,再把它改到最精简:

cp config.example.yml config.yml
link: - https://www.douyin.com/video/7604129988555574538 # 想下载的视频链接 path: ./Downloaded/ # 保存目录 thread: 5 # 并发下载数,5 是稳妥的默认值 database: true # 开启 SQLite 去重与下载历史

你没看错,这就是全部。一个链接、一个目录、两个参数,其余全部走默认值。

第四步:运行,然后看着进度条跳起来

python run.py -c config.yml

终端会实时显示每个任务的下载进度、当前文件和重试状态。下载完成后,你以为只拿到一个视频?其实工具默认会保存"完整一套"数字资产:

  • 🎬 无水印视频(自动从多个源里挑最高码率的那个)
  • 🖼️ 封面图
  • 🎵 原声音乐
  • 👤 作者头像
  • 📄 JSON 格式的完整元数据(标题、时间、点赞、评论数等)
  • 📝 可选:评论数据、AI 转写字幕

看这张图,下载完成的每个作品都按"日期_标题_ID"独立成目录,文件齐全、命名清晰,想找哪条一眼就能定位。


第二重境界:批量制霸,把整个博主主页搬回家

单个视频会下了,接下来解锁真正的核心能力——批量下载。

一个链接,四种模式,各取所需

只要把链接换成博主主页地址,再声明想下载哪些内容,剩下的交给工具:

link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx # 博主主页链接 mode: - post # 博主发布的所有作品 - like # 博主点赞过的作品 - mix # 博主创建的所有合集 - music # 博主用过的原声音乐 number: post: 100 # 只取最新 100 条,填 0 表示全量 like: 50 mix: 0 music: 0

四种模式可以自由组合、一次跑完,而且跨模式自动去重——同一个作品 ID 无论从哪个模式遇到,都只下载一次,绝不浪费流量和磁盘。

手动 vs 工具,差距用一张表说清楚

为了让你对"批量"的分量有体感,我算了一笔账:假设你要收集某博主 100 条作品。

对比维度手动逐条保存douyin-downloader
耗时6 小时以上(复制、等待、保存)约 15 分钟(并发下载)
画质在线解析工具压缩明显,画质损失大自动挑选无水印最高码率源
文件命名随机乱码、日期错乱、无法检索日期_标题_ID 模板化
重复下载常见,白白浪费时间和磁盘SQLite + 文件系统双重去重
元数据全部丢失封面/音乐/头像/JSON 全保留

工具会把 274 个作品按你的配置并发拉取,进度、统计、路径一目了然。人只需要盯着终端喝茶。

下载完不乱成一锅粥:自定义命名与目录

批量下载最大的隐患是"下完找不到"。工具支持完全自定义的文件命名和目录组织:

# 文件命名模板,可用变量:{date} {title} {id} {author} {like_count} ... filename_template: "{date}_{title}_{id}" # 作者目录层命名方式 # nickname - 仅昵称(直观,重名会合并) # sec_uid - 仅 ID(稳定唯一,不直观) # nickname_uid - 昵称_ID(直观又唯一,重度用户推荐) author_dir: "nickname_uid" # 每个作品单独建子目录 folderstyle: true

桌面版的设置界面里,这些模板都可以直接点选配置,不用记命令。

三道保险,杜绝重复下载

重复下载是这个领域最恼人的问题,工具用三层机制解决:

  1. SQLite 数据库记录:每个作品 ID 都有下载历史,命中即跳过(相关逻辑在douyin-downloader/storage/database.py
  2. 本地文件名扫描:就算数据库被清了,也会扫描文件名里的 ID 二次去重
  3. 完整性校验:下载后比对 Content-Length,文件不完整会自动清理并重试

三层叠加,你在重跑同一个任务时会看到大量"已存在,跳过",而不是浪费带宽再下一遍。


第三重境界:从下载工具升级为内容自动化流水线

会批量下载只是"会开手动挡",这一境界教你把它变成自动驾驶。

增量下载:只追新,不重来

博主每天都在更新,你不想每次都全量重下。开启增量模式,工具只下载上次之后的新作品

increase: post: true # 只下新增作品 database: true # 增量依赖数据库记录

配合同样的increase.like / mix / music,追更某个博主变成一条命令的事。

定时任务 + 完成通知:人下班,机器上班

把增量下载挂进系统的定时任务,每天凌晨自动跑:

# Linux / macOS crontab:每天凌晨 2 点自动增量下载 0 2 * * * cd /path/to/douyin-downloader && python run.py -c config.yml >> download.log 2>&1

再配合完成通知,下完第一时间推到你手机上:

notifications: enabled: true on_success: true on_failure: true providers: - type: bark # iOS 推送 url: https://api.day.app/YOUR_DEVICE_KEY sound: bell - type: webhook # 企业微信/飞书/钉钉机器人同样可用 url: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx

早上醒来,手机收到推送,素材已经整齐躺好在磁盘里——这就是"人下班,机器上班"。

REST API:把下载能力嵌进你自己的系统

如果你是开发者,想把这个下载能力集成到自己的脚本或系统里,一行命令就能启动服务:

pip install fastapi uvicorn python run.py --serve --serve-port 8000

然后通过 HTTP 提交下载任务:

POST /api/v1/download 提交 {"url": "..."},返回 job_id GET /api/v1/jobs/{id} 查询任务状态与计数 GET /api/v1/health 健康探针

任务中心会把每个 job 的解析、排队、下载状态实时呈现,适合需要可视化跟踪的团队场景。

全家桶能力:评论、转写、热搜、直播

这一境界的终点,是让一个工具覆盖你大多数内容需求:

采集作品评论(舆情分析、素材调研):

comments: enabled: true include_replies: false # 设为 true 会多拉二级回复 max_comments: 500 # 0 表示不限

AI 视频转写(自动生成文字稿):

transcript: enabled: true model: gpt-4o-mini-transcribe response_formats: ["txt", "json"] api_key_env: OPENAI_API_KEY # 推荐用环境变量传密钥

热搜榜快照与关键词搜索(选题灵感、竞品监控):

python run.py --hot-board 30 -p ./Downloaded # 导出热搜榜 JSONL python run.py --search "猫咪" --search-max 100 -p ./Downloaded # 关键词搜索

直播实时录制(重要直播留存):

link: - https://live.douyin.com/123456789 live: max_duration_seconds: 3600 # 最大录制 1 小时,0 表示录到主播下播 idle_timeout_seconds: 30

主播下播或意外中断时,已录制的数据也会被完整保留,不会白等一场。


绕开这四个坑,少走一半弯路

再顺的工具也有"地雷",我把新手最容易踩的四个坑提前帮你排掉。

坑一:只能抓到 20 条作品怎么办?

这是翻页风控的典型表现,不是工具坏了。确认配置里:

browser_fallback: enabled: true # 开启浏览器兜底 headless: false # 非无头模式

当浏览器窗口弹出时,手动完成验证,不要立刻关掉窗口,等它继续自动翻页。这一条能救回绝大多数"卡在 20 条"的场景。

坑二:Cookie 突然失效?

Cookie 有生命周期,失效了重新拉一次即可:

python -m tools.cookie_fetcher --config config.yml

坑三:想重新下载某个作品,却被"跳过"?

去重机制会拦截已下载内容,想强制重下,需要同时清掉文件和数据库记录:

# 删除对应本地目录(文件名含 aweme_id) rm -rf Downloaded/作者名/post/*_<aweme_id>/ # 删除数据库记录 sqlite3 dy_downloader.db "DELETE FROM aweme WHERE aweme_id = '<aweme_id>';"

记住一个原则:只删文件不删库会触发重下,只删库不删文件会继续跳过

坑四:个别视频一直失败?

常见原因是视频被删除、设为私密,或网络波动。工具的策略是自动跳过失败项、继续处理后续任务,不会因为一条失败就整体卡死。排查时加上日志参数定位:

python run.py -c config.yml -v # 显示 info 级日志

另外,遇到 IP 被限速时可以配置代理:

proxy: "http://127.0.0.1:7890"

结语:工具是杠杆,会用才是关键

从"手动逐条保存"到"一条命令批量打包",再到"定时增量 + API 集成"的自动化流水线,douyin-downloader 真正改变的,是你在内容获取这件事上的时间杠杆。

如果你更习惯图形界面,基于同一套后端打造的桌面客户端也已经可以下载体验——粘贴链接即刻开始,关注列表自动同步,任务与作品档案可视化,和命令行版共用同一套下载引擎。

最后给你三条行动建议:

  1. 今天就跑通第一境界:克隆、装依赖、下第一个视频,全程不到十分钟
  2. 本周解锁第二境界:把常看的博主主页接进来,开启增量,建立你的素材库
  3. 按需进入第三境界:有定时需求就挂 crontab,有集成需求就开 REST API

技术的边界在于使用者的想象力,而这款工具的边界,只在于你愿不愿意把重复劳动交给它。去试试吧,从第一个命令开始。

【免费下载链接】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),仅供参考

← 返回列表