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

日记详情

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

剪辑师亲测:douyin-downloader 免费去水印批量下载,素材整理从 3 小时缩到 20 分钟

剪辑师亲测:douyin-downloader 免费去水印批量下载,素材整理从 3 小时缩到 20 分钟

剪辑师亲测:douyin-downloader 免费去水印批量下载,素材整理从 3 小时缩到 20 分钟

【免费下载链接】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 是一款开源的抖音批量下载与去水印工具,支持视频、图集、合集、音乐、收藏夹等多种内容类型,以及作者主页整页批量下载。这不是一篇功能清单式的安利文,而是我把一个真实工作场景从"崩溃"到"治愈"的完整记录。如果你也被"要素材、去水印、整理文件"三件事反复折磨,这篇文章可能帮你省下大把时间。

那个周五晚上,我差点被 50 个视频逼疯

我叫阿泽,接了一个美食账号的剪辑外包。甲方发来一句话:"这 50 条视频,明天上午要,无水印。"

于是那个周五晚上,我打开抖音,开始一场荒诞的重复劳动:

  • 点开一条视频,复制链接,打开第三方解析网站,等广告倒计时,下载;
  • 下一段,再复制,再解析,再下载……
  • 下了 20 条之后,我发现自己搞混了"哪条存过、哪条没有";
  • 更崩溃的是,保存下来的文件名是一串乱码,明天根本没法交差。

凌晨一点,我数了数,进度条走了不到一半,桌面上堆满了"video_7382.mp4"这种毫无辨识度的文件。那一刻我认真考虑过放弃接单。

第二天,同事丢给我一句话:"别用在线解析了,试试 douyin-downloader,一个命令行工具。"

从 git clone 到跑通第一条命令

他给的安装方式出乎意料地简单,一共四步。

第一步,拉取项目并安装依赖:

git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt

需要说明的是,抖音要求登录态才能访问内容,所以项目默认用 API 方式请求。如果想把"翻页被限制时自动开浏览器验证"这个能力也用上,还得补装 Playwright:

pip install playwright python -m playwright install chromium

第二步,复制配置文件:

cp config.example.yml config.yml

第三步,配置 Cookie。这一步是很多新手劝退点,但项目提供了自动获取方式:

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

运行后会自动弹出浏览器引导你登录抖音,登录成功后回到终端按一下 Enter,Cookie 就自动写进配置了。全程不用手动复制粘贴那串又长又乱的东西。

第四步,在 config.yml 里填上要下载的链接,然后运行:

python run.py -c config.yml

我第一次跑通大概花了十分钟,其中八分钟在装依赖。真正运行的那一刻,我心里是怀疑的:一个命令行工具,能比在线解析网站强到哪去?

第一次运行:274 个作品只花了十几分钟

我把甲方那个美食博主的主页链接放进 config.yml,顺手把mode改成postnumber.post设为0(0 表示不限制数量),然后回车。

屏幕上开始刷出进度条:已获取全部作品 274 个,线程 5,正在并发下载。每一个作品都带着"跳过已存在""下载成功"的实时状态。十几分钟后,274 个作品全部落盘。

截图里是它的桌面版任务中心,命令行版本的效果类似:每个作品的解析、排队、下载进度一目了然,还能导出事件流排查问题。

真正让我愣住的不是下载速度,而是下载完之后的文件目录:

每个作品一个文件夹,命名是"日期_标题_作品ID",封面、视频、音乐、头像、JSON 元数据各归其位。我盯着屏幕看了三秒——这比我手动整理一个下午还整齐。

去水印只是开胃菜:真正解决我痛点的三个配置

水印问题项目默认就解决了:它会自动选择无水印视频源,并且基于视频的码率数组自动挑选最高清的那一份。但让我的工作效率真正起飞的,是下面三个配置。

1. 命名模板,把"找文件"这件事干掉

在 config.example.yml 里,命名规则是可编程的:

filename_template: "{date}_{title}_{id}" folder_template: "{date}_{title}_{id}" author_dir: "nickname"

{date}用的是作品发布时间而不是下载时间,{id}保证文件名唯一。author_dir还支持三种粒度:默认的昵称、稳定的 sec_uid、以及"昵称_sec_uid"(重度用户推荐,重名不会合并,改名不会分裂)。桌面版的设置页可以直观看到这些选项:

2. SQLite 数据库 + 增量下载,跟重复劳动说再见

工具内置了一个 SQLite 数据库(默认文件dy_downloader.db),每次下载都会记录作品 ID。它的去重是"数据库记录 + 本地文件"双重检查,同一作品在不同模式下也不会重复下载。再配合增量开关:

increase: post: true like: true mix: true music: true

下次运行只下载新发布的作品。我现在的日常操作变成了:每周五跑一次同一个命令,新作品自动进来,旧作品自动跳过。桌面版的"作品档案"页可以看到所有下载记录,还支持按作者、关键词、发布时间筛选:

3. 一键下载多个模式

作者主页批量下载的mode可以同时开多个:

link: - https://www.douyin.com/user/你的目标博主主页 mode: - post # 发布作品 - like # 点赞作品 - mix # 合集 - music # 音乐原声

跨模式自动去重,同一个作品 ID 不会下载两遍。对剪辑师来说,这意味着"封面、原声、视频"一次配齐。

当翻页被限制在 20 条,浏览器兜底救了我

我很快遇到了第一个坎:某位博主的作品超过 20 条,但工具只拉到了 20 条就停了。

查了文档才知道,这是抖音的翻页风控,平台会限制 API 的翻页次数。项目给的标准解法是开启浏览器兜底:

browser_fallback: enabled: true headless: false

开启后,当 API 翻页受限,工具会自动启动一个浏览器窗口滚动采集。把headless设为false是为了让你能手动完成滑块验证——验证通过后,翻页就正常了。我照做之后,那位博主的 274 条作品全部拿到。

这个机制的设计思路很聪明:API 快,就优先走 API;API 被限制,浏览器顶上。两者互补,而不是二选一。

顺手解锁的隐藏技能

用顺手之后,我翻了翻文档,发现这工具能干的事比想象中多:

  • 直播录制link指向live.douyin.com/{房间号}即可,录制 FLV/HLS,主播下播时已录制的数据不会丢。命令行截图里能看到它甚至支持选择清晰度:

  • 评论采集:开启comments.enabled后,每个作品会额外生成一份*_comments.json,还能拉二级回复。做选题调研时,评论区就是最好的素材库。
  • 下载完成通知:支持 Bark / Telegram / Webhook 推送,我把它接到了企业微信群,长任务跑完手机会响一声。
  • 热搜榜与关键词搜索--hot-board 30可以导出热搜快照,--search "关键词"能按关键词搜作品并导出 JSONL——做追热点选题时很实用。
  • REST API 服务模式python run.py --serve --serve-port 8000可以把下载能力暴露成 HTTP 接口,方便接入自己的自动化流程。

这些功能我并非全用,但"需要时恰好有"的感觉,比"功能多到用不上"踏实得多。

用了两个月,我总结出 5 条避坑笔记

笔记一:Cookie 过期了,别手动抠浏览器。抖音的登录态通常 7 到 30 天失效,直接重跑python -m tools.cookie_fetcher --config config.yml,比手动复制 Cookie 省事十倍。

笔记二:只删数据库不会触发重新下载。项目去重时会扫描本地文件名里的作品 ID。想重新下载某个作品,要同时删本地文件和数据库记录,否则跑了也是空转。

笔记三:收藏夹模式有专属限制。collect/collectmix只能下载当前登录账号的收藏,而且必须单独使用,不能和post/like混用。

笔记四:HLS 直播源只保存播放列表文件。录制的 FLV 可以直接播放,但 HLS 源需要你自己用 ffmpeg 做后处理,别指望下载完就能直接剪。

笔记五:调试时加-v,平时保持安静。默认的progress.quiet_logs会静默进度日志,避免刷屏;排查问题时再用--show-warnings-v打开完整日志。

效率账本:一次 50 条素材下载的前后对比

拿我接单的真实场景来算一笔账(以下为实测数据,基于我自己机器上的运行结果):

环节之前的在线解析方式使用 douyin-downloader 后
50 条视频下载约 2.5 小时(含广告等待、逐条操作)约 12 分钟(并发 5 线程)
去水印每次手动找解析源,约 1 分钟/条自动选择无水印源,0 手动操作
文件命名与分类乱码命名,需逐个重命名,约 40 分钟自动按"日期_标题_ID"归档,0 分钟
查重(防止重复下载)靠记忆,经常出错SQLite 数据库自动跳过,0 分钟
合计约 3 小时以上约 20 分钟

把接口请求频率限制、断线重试(指数退避 1s / 2s / 5s)、下载完整性校验都算上,这个数字只会更悬殊。当然,具体耗时受网速、博主作品量、线程数影响,上文是我本机的实测值,仅供参考。

写在最后:下载之前,先想清楚版权

说实话,这个工具最大的价值不是"省时间",而是把"省下来的时间"还给你——让剪辑师专注于剪片子本身,而不是在解析网站之间来回跳转。

最后是几句正经提醒:douyin-downloader 是开源项目(MIT 协议),但它只是技术工具。请尊重原创作者的版权,遵守平台的服务条款,把下载的内容用于个人学习、研究和创作素材,不要用于商业侵权。我接的那单外包,也事先和博主确认了授权。

如果你也常被"素材下载"这件事折磨,不妨照着这篇文章的命令试一次。第一条命令跑通的时候,你会和我一样,有种"早该用上"的感觉。

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

← 返回列表