当前位置: 首页 > news >正文

抖音批量下载实战:一个晚上,我收下了整个博主的主页

抖音批量下载实战:一个晚上,我收下了整个博主的主页

【免费下载链接】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

那个周五晚上,我盯着一位数码博主的页面发呆。他主页上有 340 条作品,从测评到教程,我打算全部存下来慢慢看。手动点了四十多个"保存视频"之后,我确认了两件事:一是抖音 App 下载的视频没法选清晰度,二是再这样点下去,我的拇指和耐心都会先报废。

凌晨一点,我翻出朋友提过的一个开源工具 douyin-downloader——一个面向实用场景的抖音下载工具,支持视频、图集、合集、音乐批量下载,也支持单个链接下载。那天夜里我跑通了第一条命令,从此告别了手动存视频的日子。这篇就把完整过程写下来,照着走,你也能在半个小时内让批量下载转起来。

第一次运行:从克隆到看见第一个下载好的视频

先把项目拉下来,装依赖:

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

装完之后,下载前需要让程序认识你的抖音账号。手动从浏览器 F12 里翻 Cookie 又麻烦又容易过期,项目里带了一个自动获取的工具,运行后会自动弹出浏览器让你登录,登录完回终端按一下 Enter,配置就写好了:

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

接着是最小可用配置。复制一份config.example.ymlconfig.yml,我只改了三处:下载链接、保存路径、下载模式。文件里每一段配置都带注释,第一次用基本不用查文档:

link: - https://www.douyin.com/video/7604129988555574538 path: ./Downloaded/ mode: - post

然后运行:

python run.py -c config.yml

屏幕上滚出 Rich 进度条,几秒钟后Downloaded/里出现了第一个视频文件。到这一步,单条视频下载已经通了。之后我把链接换成某位作者的主页地址,把mode里的post数量调大,一次批量下载就这么跑起来了:

能力地图:这个下载器能装下多少种内容

跑通之后我对着 README 里的功能表捋了一遍,把它能干的事整理成一张速览卡,方便你按需取用:

能力适用场景一句话说明
单个下载一条视频、图集、合集、音乐贴链接就能下,短链会自动解析
作者主页批量下载收藏某位博主的全部作品mode支持作品/点赞/合集/音乐四种
直播录制保存直播内容FLV/HLS,主播下播自动保留已录数据
评论采集分析作品反馈输出*_comments.json供后续处理
热搜榜与搜索选题、找素材一键导出榜单和搜索结果到 JSONL
REST API接入自动化流程起个服务就能提交下载任务
通知推送长任务离线等待完成后推 Bark / Telegram / Webhook

值得一提的是,这些能力不是散装功能,而是围绕"作者主页"这一个核心场景设计的。mode里的post(发布)、like(点赞)、mix(合集)、music(音乐)可以同时开启,一个作者主页跑一次,四种内容就齐了,而且同一个视频在不同模式下不会重复下载。

深入一层:增量下载和去重是怎么做到的

用得越久我越好奇一件事:重复跑同一个作者的下载任务,它怎么知道哪些已经下过了?

看了core/目录下的实现才知道,它做了双重检查。第一层是本地文件扫描,程序会在下载目录里按文件名中的aweme_id判断是否已存在;第二层是 SQLite 数据库,database: true时会在dy_downloader.db里记录每个作品的下载状态。两层互为兜底——只删数据库不删文件不会重新下载,只删文件不删数据库则会补下。

这个设计直接撑起了增量下载功能:

increase: post: true database: true

打开后,同一作者的页面再跑一遍,就只会下载新发布的作品。我追更的那位数码博主每周更新,我每周跑一次,Downloaded/里的文件数和数据库记录一一对应,一次重复下载都没有发生过。

一个完整的实战:把整个合集搬进硬盘

说一个我完整的实际操作。上个月我要备份某位老师全套 120 期绘画教程(他自己放在一个合集里),目标很明确:全部存下来、命名规范、以后能按日期检索。

配置如下:

link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx path: ./Downloaded/ mode: - mix number: mix: 0 # 0 表示不限制数量 thread: 5 filename_template: "{date}_{title}_{id}"

执行python run.py -c config.yml,五个线程并发下载,进度条实时滚动。结束后目录长这样:

Downloaded/ └── 作者名/ └── mix/ └── 2024-03-02_水彩入门第一课_7341234567890123456/ ├── ...mp4 ├── ..._cover.jpg ├── ..._data.json └── ..._music.mp3

每期作品还自动附带了封面、原声音乐和 JSON 元数据。之后我在桌面版 Douzy 的任务中心里也能看到这次下载的完整记录,点开作品档案就能按作者、日期筛选历史,跟命令行跑出来的结果完全一致:

我踩过的几个坑,提前帮你避开

  • Cookie 失效:跑着跑着突然只能拉到 20 条作品,多半是 Cookie 过期了。重跑一次python -m tools.cookie_fetcher --config config.yml就好,不用手动翻浏览器。
  • 只出 20 条的限制:这是翻页风控。配置文件里browser_fallback.enabled保持trueheadless设为false,翻页受限时程序会弹出一个浏览器窗口,手动把验证码点了、别急着关窗口,就能继续翻下去。
  • HLS 直播源只能存 playlist:录直播时如果源是 HLS,保存下来的是播放列表文件,需要自己用 ffmpeg 转一下才能得到完整的视频文件;FLV 源则可以直接播放。
  • 进度条刷屏:默认配置里progress.quiet_logs: true已经开了静默,想排查问题再临时加-v参数,别一直开着刷屏模式跑。

下一步能玩出什么

基础下载跑顺之后,可探索的空间还挺大。官方文档里列着视频转写(调用转写 API 生成字幕文本)、REST API 服务模式(python run.py --serve --serve-port 8000,起服务后通过 HTTP 提交下载任务)、以及桌面版 Douzy——粘贴链接、同步关注列表、可视化跟踪进度,适合不想碰命令行的场景。

配置项说明在 config.example.yml 里都有注释,功能细节可以翻 README.zh-CN.md,使用指南在 USAGE.md。这几个文件我都是边用边查的,比到处搜教程靠谱。

我的资源库现在已经存下几百个视频了,每个月清理一次不再需要的内容,剩下的按主题归档。它解决的其实不是一个"下载"问题,而是一个"如何把散落在平台上的内容,整理成自己能长期使用的资料库"的问题。如果你也有一直想保存却嫌麻烦的内容,不妨从一条视频开始试试。

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

http://www.cnnetsun.cn/news/4039580.html

相关文章:

  • 2010-2025年工业互联网试点示范项目企业数据
  • Obsidian多设备同步方案:Git与坚果云混合实践
  • 如何用Umi-OCR免费离线OCR快速提取文字:从截图识别到批量文档处理的完整指南
  • 大模型健康度监测:从基础设施到认知层的全链路运维实践
  • Obsidian PDF标注效率翻倍:PDF++安装到进阶
  • 阿里巴巴对话交互面试,LLM指令解析光看还不够还得摸得准
  • 麒麟系统密码重置:GRUB引导与救援模式实战指南
  • Windows黑屏仅鼠标能动?从原理到实战的完整修复指南
  • MemeSense连跳狂暴完全版插件深度解析:支持自定义命名、俯仰切换与旋转链式逻辑
  • 无人机视角航拍水葫芦检测数据集VOC+YOLO格式1417张1类别
  • 【爱马仕】Hermes Agent 本地环境搭建,Windows 轻量化整合包使用教程
  • Horos 开源医学影像软件实战指南:macOS 上零门槛玩转 DICOM 查看与 3D 影像重建
  • SMUDebugTool 完整上手攻略:AMD Ryzen 平台的参数读写、调试与性能调优实战
  • Draw.io Mermaid插件完整使用指南:三步让文本秒变专业图表
  • 二叉树与哈夫曼树:从核心原理到工程实践详解
  • Python pyshp库实战:Shapefile文件读写与GIS数据处理全解析
  • Multi-Agent系统核心协作模式与工程实践全解析
  • YimMenu怎么用?GTA5防崩溃增强菜单从零到会的实战教程
  • YOLOv8 分类任务实战|全网完整复现聚合物绝缘子上卸扣腐蚀二分类、均衡 1546 张数据集精细化调参、助力电网金具锈蚀智能巡检高效涨点
  • Nginx模块开发:ngx_create_paths函数详解与应用实践
  • 从零搭建个人网站:HTML/CSS/JS实战指南与响应式设计
  • SQL Server存储过程优化
  • DVT for Eclipse:提升大型Java项目开发效率的代码分析引擎
  • ECharts DataZoom组件深度配置:从滑块定位到缩放范围限制
  • JDK 9+为何不再内置JRE?从模块化原理到实战解决方案
  • LeetCode 每日一题 2026/8/10-2026/8/16
  • 企业新闻发稿如何避坑?传播易去中介化广告交易闭环有哪些核心优势?
  • 免费开源的AMD Ryzen调试工具SMUDebugTool:5个场景教你玩转核心电压与底层监控
  • 5 招快速修复 MelonLoader 启动失败:Unity 模组加载器自救指南
  • 工业报警怎么做分级、去重、确认、追溯才规范?