15 分钟备份一个抖音主页:抖音批量下载与增量同步实战
【免费下载链接】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 把这件事自动化:贴一个抖音链接,它自动判断是视频、合集还是主页,并批量拉取无水印视频,封面、BGM、元数据一并落地。
5 分钟跑通抖音批量下载
这一节直接回答三个问题:装在哪、通行证从哪来、第一个任务怎么发。
环境要求只有一条:Python 3.8+。克隆后装依赖:
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 chromiumCookie 三种配法怎么选
Cookie 是访问抖音接口的通行证,没有它部分主页接口拿不到数据。三种配法按推荐顺序排:
- 自动获取:运行 Cookie 抓取脚本,会自动打开浏览器,你登录完回终端按 Enter,字段直接写进配置,最省心;
- 整串粘贴:从浏览器开发者工具复制完整 Cookie 字符串,整段填进配置文件;
- 键值对填写:
msToken、ttwid、sid_guard逐字段填,结构最清晰,但字段一多最容易填错。
# 自动方式:浏览器登录完成后,回终端按 Enter python -m tools.cookie_fetcher --config config.yml # 跑第一个任务 python run.py -c config.yml最小可运行配置
配置文件保留这几个字段就能跑起来,多余的后面再按需加:
link: - https://www.douyin.com/user/你的目标博主ID path: ./Downloaded/ mode: - post # 发布作品;也可加 like / mix / music number: post: 50 # 最多 50 条,0 表示全量 thread: 5 retry_times: 3 database: true increase: post: true # 只取新作品命令行会实时刷进度条,跑完自动汇总成功 / 失败 / 跳过数量。
7 种链接形态它都能认
你不需要告诉它"这是什么类型的下载"。链接解析与下载器装配在 core/ 目录里,按 URL 形态自动匹配:
| 链接形态 | 拿到的内容 |
|---|---|
/video/视频ID | 单条短视频 |
/note/笔记ID、/gallery/笔记ID | 图文笔记 |
/collection/合集ID、/mix/合集ID | 整个合集 |
/music/音乐ID | 该原声下的所有作品 |
/user/用户ID | 博主主页,配合 mode 批量下载 |
v.douyin.com/短链 | 分享短链,自动展开后下载 |
live.douyin.com/直播间 | 直播录制,live.max_duration_seconds: 0录到主播下播 |
它认得出的链接按上表七种全覆盖;认不出的链接会明确报错退出,不会闷头跑空。
下载产物:每个作品落地"一整套"
视频默认走无水印源,并在码率档位里自动挑最高画质。视频本体之外,封面、背景音乐、作者头像、JSON 元数据(点赞数、评论数、发布时间、话题标签)都可以用开关开启。
文件按"作者 / 模式 / 作品"三层归档:
Downloaded/ ├── download_manifest.jsonl # 下载清单,每行一条 JSON └── 作者名/ └── post/ └── 2024-02-07_作品标题_作品ID/ ├── 2024-02-07_作品标题_作品ID.mp4 ├── 2024-02-07_作品标题_作品ID_cover.jpg ├── 2024-02-07_作品标题_作品ID_music.mp3 └── 2024-02-07_作品标题_作品ID_data.json文件夹里的日期取自作品发布时间而不是下载时间,隔三个月再备份,时间线依然整齐。根目录的download_manifest.jsonl清单记录日期、作者、标题、文件路径,方便后期检索和二次处理。
增量同步怎么开:下过就不再碰
批量下载最费的是重复拉取——博主新更 10 条,你重跑一遍却把 100 条全下了。工具用 storage/database.py 里的 SQLite 数据库解决:每下载一条,就把作品 ID、作者、发布时间、保存路径写库;再次运行,已存在的直接跳过。
开关就两个配置项:
database: true # 去重数据库,默认开启 increase: post: true # 跳过已下载,只取新增每天挂一次定时任务,效果等同自动追更:新作品进来,旧的绝不动。做博主监控或长期素材库,这一条能省下大量带宽和磁盘。
命名模板与时间范围过滤怎么配
默认的"日期_标题_ID"不够用时,用filename_template从变量里自由拼装,可用变量定义在 utils/naming.py:
filename_template: "{date}_{author}_{title}_{id}" start_time: "2024-01-01" end_time: "2024-12-31"常用变量有date、author、title、id、year、month、type、mode,写错变量会直接报错。start_time/end_time是很多人忽略的利器:做年度盘点或时间段研究时,配合number数量限制就能精确圈定样本,不必全量拉取。
⚠️ 四个高频翻车点与对策
遇到下面四种情况别慌,它们的行为都是可预期的:
- Cookie 失效,接口返回未登录:可交互环境下自动打开浏览器重新登录并重试;服务器这类非交互环境会提示你手动刷新 Cookie。
- 主页只能抓到 20 条左右:这是接口翻页风控的典型表现。确认
browser_fallback.enabled: true,API 受限时它会切到浏览器模式滚动采集作品 ID 再补全详情;headless: false下弹窗出现时手动过一下验证即可。 - 个别视频下载失败:被删、设私密、断网都会失败。工具默认跳过失败项继续跑完其余任务,需要排查时加
--verbose看完整日志。 - 文件名日期不对:日期优先取发布时间,该字段缺失或非法时回退到当天日期并记告警,属预期行为而不是 bug。
调参建议:网络一般时thread: 5就够,盲目调高并发反而容易触发风控;请求被限速时优先调低rate_limit(默认 2 请求/秒)而不是并发数;网络波动大再把retry_times提到 5。
🖥️ 不想敲命令线:用桌面版 Douzy
仓库里还有配套桌面客户端 Douzy,和命令行共享同一套后端逻辑。粘贴链接即可开始,内容类型、保存路径全在窗口内配置:
"关注"页能同步你关注的博主、标记新作品并加备注,从列表直接发起下载,适合日常素材采集:
任务中心用列表展示每个任务的进度与状态,失败项可单独重试,还能一键打开输出目录:
不熟悉终端的用户,这是最顺手的入口;有自动化需求的用户,命令行随时可切换,两边不用重新学逻辑。
把使用守住边界,再交给工具跑
工具能干很多,但用法要有分寸:
- 用途:适合个人学习、研究分析、内部资料整理,不适合商业性内容分发或侵权二传;
- 频率:项目内置请求间隔与并发上限,别去掉限速逻辑去"冲"接口,大规模高频抓取会干扰平台服务;
- 来源:下载内容注明出处,遵守平台内容使用协议,不用于恶意竞争或获取隐私信息。
配好后按这五步进入日常运转:
- 克隆仓库,跑一遍
pip install -r requirements.txt; - 用自动方式取一次 Cookie,浏览器登录即可;
- 贴一个博主主页链接,跑最小配置验证产物;
- 打开
database与increase,让重跑只取新增; - 挂系统定时任务每天自动执行,之后只看报表。
【免费下载链接】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),仅供参考