ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Douzy 3步跑通抖音批量下载:增量、元数据、转写一次配齐

Douzy 3步跑通抖音批量下载:增量、元数据、转写一次配齐

Douzy 3步跑通抖音批量下载:增量、元数据、转写一次配齐

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

把创作者的作品一条一条存下来,费时费力;重复下载同一批作品,又浪费流量和磁盘。Douzy(douyin-downloader)是一个开源的抖音批量下载工具:贴一个主页链接,无水印视频批量落地,元数据、评论、背景音乐一并保存,下载记录进本地 SQLite 数据库。桌面版 Douzy 与仓库内的 CLI 共用同一套后端逻辑。

痛点清单

用户痛点Douzy 对应能力
逐条复制链接存不完一个主页链接批量扫描作品,API 受限时浏览器滚动兜底
重复下载同一批作品SQLite 记录下载历史,增量模式只取新增
存完视频,作者、评论信息丢了作品信息存 JSON,评论另存*_comments.json
文件散落难检索每个作品独立文件夹,命名模板、作者目录均可配置
视频里的口播内容搜不到语音转写,输出 txt 与 json
长任务跑完没人知道Bark / Telegram / Webhook 推送成功与失败
多账号内容混在一起一个账号一份配置文件,数据库与目录隔离

3 步跑通抖音无水印下载

要求 Python 3.9+,Windows / macOS / Linux 均可。

第 1 步,获取代码并安装依赖(Cookie 工具和浏览器兜底依赖 playwright):

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

第 2 步,生成配置并登录拿 Cookie:

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

会弹出浏览器窗口,扫码登录后回到终端按回车,Cookie 即写入config.yml。Windows PowerShell 下用Copy-Item config.example.yml config.yml替代cp。工具源码见 tools/cookie_fetcher.py。

第 3 步,把config.yml里的link换成目标创作者的主页地址,运行:

python run.py -c config.yml

配置自带示例链接可直接跑通;默认只下载 1 条作品(number.post: 1),数量按需调整。完整配置项以 config.example.yml 为准。Douzy 桌面版操作更短:粘贴链接、检测、提交任务,进度在任务中心实时显示。

🧩 能力拆解

5 种下载模式

结论:mode决定扫描主页的哪个列表,number给每个列表限数,0 表示不限。

mode: [post, mix] number: post: 10 mix: 0

技巧:post / like / mix / music / collect对应作品、喜欢、合集、音乐、收藏夹五种列表,各模式的策略实现集中在 core/user_modes/。

让下载只跑新增内容

结论:每条已下载作品都记录在dy_downloader.db,增量打开后重跑会跳过已有作品。

increase: post: true redownload_missing_files: true

技巧:想重下覆盖时把increase.post改为false即可,不用清库;磁盘上的主文件缺失时会自动补齐。

元数据、评论、音频一起存

结论:视频之外可保存封面、背景音乐和元数据,评论另存独立文件。

json: true cover: true music: true comments: enabled: true include_replies: true

技巧:max_comments: 0表示不限量,高评论量作品建议设上限控制文件体积。数据库与文件管理的实现见 storage/。

语音转写

结论:开启后把视频音频转成文本,便于检索和摘要。

transcript: enabled: true model: gpt-4o-mini-transcribe response_formats: [txt, json]

技巧:需设置OPENAI_API_KEY环境变量(可用api_key_env改名);output_dir留空则与视频同目录。

视频画质一行切换

结论:video_quality在 API 返回的多档码率里挑,默认highest(最高转码档)。

video_quality: original

技巧:original会额外探测一次上传原片,原片更大才用,探测失败自动回落;省流量可用lowest或指定720p等分辨率。

文件自动归档

结论:folderstyle为每个作品建独立文件夹,模板控制文件与目录名,作者目录三档可选。

folderstyle: true filename_template: "{date}_{title}_{id}" author_dir: nickname_uid
./Downloaded/ └── 创作者A_MS4wLjABxxxx/ └── 2024-06-15_教程片段_123456789/ ├── video.mp4 ├── music.mp3 ├── cover.jpg └── info.json

技巧:模板必须含{id}防止重名覆盖;author_dir切换只影响后续下载,不会迁移旧目录。

API 受限时浏览器兜底

结论:接口请求被风控时,自动改用 Playwright 浏览器滚动页面抓取列表。

browser_fallback: enabled: true headless: false

技巧:保持headless: false,弹出滑块验证时手动完成即可继续。

任务结束推通知

结论:任务结束推送结果,不必挂开终端等。

notifications: enabled: true on_success: true on_failure: true providers: - type: bark # 或 telegram / webhook

技巧:on_failure: true让失败也推送,第一时间发现卡住的任务。

多账号并行

结论:CLI 一份配置对应一个账号,双账号就准备两份配置。

python run.py -c config_a.yml python run.py -c config_b.yml

技巧:两份配置各自指向不同的path与database_path,下载内容与历史互不干扰。Douzy 桌面版则可在左侧导航切换平台并统一管理登录状态。

📋 实战场景

竞品追踪

  • 背景:运营团队盯几个对标账号的更新节奏与选题,手动收藏慢且口径不一。
  • 做法:link填多个主页,increase.post: true、json: true、comments.enabled: true,用计划任务每天跑一次。
  • 收益:每次只落新增作品和当时的评论快照,数据直接进 SQLite,省去人工归档。

课程备份

  • 背景:某讲师的系列课程按合集分章节发布,需要长期留存。
  • 做法:mix 模式整套下载,start_time/end_time按季度切范围,开启 transcript。
  • 收益:文件按模板分章节归档,转写文本可按关键词检索,相当于一份本地课程库。

个人收藏夹

  • 背景:收藏夹持续膨胀,客户端内无法整体导出。
  • 做法:mode: [collect],打开cover与music,folderstyle: true。
  • 收益:收藏按作者分文件夹,封面与原声都保留,重复运行不再下载已有条目。

🔧 避坑排查

  • 现象:主页作品只抓到几条或为空 → ① 确认browser_fallback.enabled: true且headless: false;② 在弹出的浏览器窗口里手动完成验证;③ 用python -m tools.cookie_fetcher --config config.yml重取 Cookie;④ 仍为空时加-v看详细日志。
  • 现象:下载反复失败 → ① 把thread从 5 降到 2;② 检查proxy是否可用;③ 调大retry_times。
  • 现象:同名作品互相覆盖、同名作者目录合并 → 检查模板是否包含{id};作者重名时设author_dir: nickname_uid。
  • 现象:磁盘告急 → 用number.post限条数;用start_time/end_time收窄时间范围;定期清理旧内容。
  • 现象:提示登录失效或数据异常 → Cookie 过期,重跑 cookie_fetcher 命令即可。

数据库文件默认为dy_downloader.db(database_path可改路径),可直接用 sqlite3 查下载历史,定位漏掉的条目。

结尾

仅用于个人学习、研究与备份,请尊重创作者权益与平台规则。下载器的价值在于长期稳定地跑下去,而不是一次能下多少。

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

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进