从收藏夹空转到本地整库:抖音视频批量下载的开源方案实测记录
从收藏夹空转到本地整库:抖音视频批量下载的开源方案实测记录
【免费下载链接】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
如果你也做过"把喜欢的抖音作品批量存下来"这件事,大概会和我一样先碰一鼻子灰。上个月我盯上了一位专门拍苍蝇馆子的美食探店博主,他的旅行Vlog和探店合集信息量极大,我囤了上百条,计划周末挨家打卡。结果某天再点开,主页空空如也,收藏夹里全是"内容已删除"。那一刻我决定认真找一个能解决"抖音视频批量下载"的靠谱方案——而最终让我安心的,是这个完全开源、免费的工具 douyin-downloader。
为什么"手动存"永远存不完?
先别急着搜下载教程,不妨回答自己几个问题:
"作品随时可能消失,我存得过来吗?"答不上来。创作者的账号可能注销、隐藏、清理,链接说失效就失效。而手动保存视频,要么忍受右上角的水印,要么用录屏软件——画质糊、声音差,原声和封面信息更是完全拿不到。
"我下载了一百个视频,然后呢?"没有然后了。文件名全是20230412_xKd...mp4这种天书,想按作者归类、按日期排序、找出某个合集,全靠肉眼和运气。
"有没有一个工具能一次解决水印、批量、整理三件事?"这就是 douyin-downloader 存在的意义。它是一套用 Python 写的开源命令行工具(也配套了叫 Douzy 的桌面客户端),支持单个视频、图集、合集、音乐、作者主页批量下载,默认去水印、自动挑最高清源,还内置了 SQLite 数据库负责去重和档案管理。下面我从一个纯小白的视角,带你走一遍完整流程。
第一次上手:从装环境到跑通第一个下载任务
先把项目拿到本地
确保电脑里有 Python 3.8 或更高版本,然后打开终端:
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader/douyin-downloader pip install -r requirements.txt依赖装不动的朋友,可以在 pip 命令后面追加-i https://pypi.tuna.tsinghua.edu.cn/simple用国内镜像加速,这一步我卡了十分钟才反应过来。
把登录态交给 Cookie
抖音的接口要求带登录凭证,工具提供了两种获取 Cookie 的方式。推荐用自动方式,运行后会自动拉起浏览器,扫码登录一次即可:
python -m tools.cookie_fetcher --config config.yml登录成功后回终端按一下回车,工具会把 Cookie 加密写进配置。想手动填也行,把浏览器里拿到的 Cookie 值粘进配置文件的cookies字段即可。Cookie 只存在你本地,不会上传到任何服务器,这点可以放心。
写一份最小配置,跑第一个视频
复制一份模板再编辑:
cp config.example.yml config.yml打开config.yml,保留这几行就足够起步:
link: - https://v.douyin.com/EXAMPLE1/ path: ./Downloaded/ music: true # 背景音乐要不要 cover: true # 封面图要不要 json: true # 元数据要不要然后执行:
python run.py -c config.yml看到进度条滚动、视频落盘的那一刻,我第一次体会到了"原来存抖音内容可以这么省心"。工具的主界面(桌面版)长这样——粘贴链接、点一下检测,剩下的交给它:
下载过程中你可以实时看到任务排到哪一步、还剩多久,逐条事件日志清清楚楚:
把内容存下来:它能接住哪些类型的作品?
工具能处理的不止是"单个视频"这一种情况,我用一张表帮你理清:
| 输入内容 | 支持情况 |
|---|---|
| 单条视频 / 图文 / 图集 | /video/{id}、/note/{id}、/gallery/{id} |
| 单个合集 | /collection/{mix_id}、/mix/{mix_id} |
| 单个音乐(原声) | /music/{music_id} |
| 短链自动解析 | https://v.douyin.com/...自动跳转解析 |
| 作者主页批量下载 | /user/{sec_uid},配合mode: post/like/mix/music |
| 自己账号的收藏夹 | /user/self?showTab=favorite_collection |
| 直播间实时录制 | live.douyin.com/{room_id},FLV/HLS 双格式 |
| 评论采集 | 按作品抓取,可含二级回复,输出 JSON |
批量下载作者主页时,配置只需这样写:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: - post number: post: 50 # 最近50条;写成0就是全部想连直播一起录?把直播链接丢进link,再配个时长上限就行:
link: - https://live.douyin.com/123456789 live: max_duration_seconds: 3600 # 录1小时,0表示播到主播下播工具在解析直播流时还会让你选清晰度,下面这张截图就是我实测时的输出:
除了视频本体,它还顺手帮你把封面、原声音乐、作者头像、JSON 元数据一起存好——这些"边角料"往往是手动保存最容易丢的部分。另外--hot-board(热搜榜)和--search(关键词搜索)两个命令也值得一试:
# 抓热搜榜前30条 python run.py --hot-board 30 -p ./Downloaded # 按关键词搜作品,最多100条 python run.py --search "宠物日常" --search-max 100 -p ./Downloaded把内容管起来:下载完不等于结束
存下来的东西如果乱成一锅粥,那和没存没什么区别。这一层才是 douyin-downloader 真正拉开差距的地方。
重复内容,它会自己跳过
工具内置 SQLite 数据库 + 本地文件双重去重。同一作者你下过两遍,第二次它会自动识别已存在的作品并跳过,只补新增的。想显式开启增量模式:
increase: post: true database: true文件自动归档,目录清晰得像图书馆
下载结果默认按"作者 → 作品"两层组织,配合命名模板,每个作品一个独立文件夹:
Downloaded/ ├── 美食探店博主/ │ ├── 2024-06-15_巷子里的老火锅_123/ │ │ ├── video.mp4 # 无水印视频 │ │ ├── music.mp3 # 背景音乐 │ │ ├── cover.jpg # 封面 │ │ └── info.json # 元数据 │ └── 2024-06-14_凌晨的拉面馆_456/ └── 旅行Vlog博主/ └── ...在配置里打开folderstyle: true即可按作品建子目录;命名模板支持{date}_{title}_{id}这类变量组合,在设置界面也能可视化调整:
时间过滤 + 作品档案
只想留某位博主最近一个月的作品?配置里加两行:
start_time: "2024-06-01" end_time: "2024-06-30"工具只下载这个时间窗内的内容。所有下载记录都会沉淀进 SQLite 档案库,按作者、标题关键词、类型、时间筛一筛就能找到;"常看博主"区域还直接给你放了"下载最新作品"的按钮。档案界面长这样:
如果你关注列表很长,桌面版还支持一键同步关注博主列表,谁下载过、谁没下载过,一眼就清楚:
让下载自动化:跑起来之后就不用管了
遇到风控,浏览器兜底
批量翻页偶尔会触发抖音的风控,表现为"只能抓到20条"。此时启用浏览器兜底,弹窗出来后手动过一下验证码即可:
browser_fallback: enabled: true headless: false失败会自动重试,文件不完整会重新下
工具内置指数退避重试(1秒、2秒、5秒递进),还会比对 Content-Length 做完整性校验——不完整的文件自动清理后重下。下载中断了也能接着下,不用从头再来。
开放 REST API,方便接进自己的系统
python run.py --serve --serve-port 8000一条命令就把工具变成 REST 服务,提交下载任务、查询任务状态都能通过 HTTP 完成(可选安装 fastapi + uvicorn 增强体验)。适合把下载能力集成到自己的脚本或服务器里。
下载完成,推送到你的手机
配合 Bark 或 Telegram,下载结束会实时推消息到设备上:
notifications: enabled: true providers: - type: bark url: https://api.day.app/YOUR_DEVICE_KEY - type: telegram bot_token: "123456:ABC..." chat_id: "987654321"顺带把视频转成文字稿
需要给视频做笔记的话,可以开启语音转写(调用 OpenAI Transcriptions API),每个视频会额外生成.transcript.txt和.transcript.json,对我这种喜欢把探店讲解存成文字备忘的人非常实用。项目还提供了 Dockerfile,服务器部署也很省事。
几个我踩过的坑,提前帮你避雷
- "怎么突然 403 / 未登录了?"多半是 Cookie 过期了。它的有效期一般 7~15 天,重新跑一遍
python -m tools.cookie_fetcher --config config.yml就行。建议每周顺手更新一次。 - "为什么只抓到20条作品?"翻页风控,老熟人了。把上面的
browser_fallback打开,弹出浏览器后别急着关窗口,手动过掉验证码再等它继续。 - "批量下载很慢 / 老断线?"先确认网络稳定,再把配置文件里的线程数(默认5)调一调,同时记得它支持断点续传,中断了接着下就好。
- "下多了内存吃得厉害?"把并发线程调小,或者分批下,每次 50~100 条,磁盘也建议预留 50GB 以上。
- "直播 HLS 源下完打不开?"这是已知限制:HLS 只保存 playlist 文件,需要用 ffmpeg 转一下;FLV 则可以直接播放。
- "收藏夹模式报错?"
collect/collectmix目前只能单独使用,不能和post/like混在一起写进mode。
最后说两句掏心窝的话
说真的,这个工具最打动我的地方不是某个单一功能,而是"一条龙":无水印、批量、去重、归档、通知、API,全给你配齐了,还完全免费开源。你只需要花几分钟配好,之后每一次想要收藏,就是"丢链接 → 回车 → 收工"。
我现在的习惯是:看到值得长期保留的学习笔记、旅行Vlog、宠物日常或者探店内容,顺手丢给 douyin-downloader,周末统一归档整理。它像给抖音内容上了一道"本地保险",那份"再也不用担心删号跑路"的踏实感,只有经历过收藏夹空空如也的人才会懂。
当然,也提醒一句:下载的内容请用于个人学习、研究或备份,尊重每一位创作者的劳动,别拿去商用或侵权。工具本身是开源的,用着顺手的话,顺手给社区点个 Star、反馈个 issue,就是最好的支持。
打开终端吧,你的第一个无水印作品,正在等你。🚀
【免费下载链接】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),仅供参考