Skip to content

Batch and Automation

aliveranme edited this page Aug 18, 2026 · 2 revisions

批量下载与自动化脚本实战 (Batch & Automation)

本文档介绍如何使用 BBDown 高效批量抓取 UP 主空间、合集播单、收藏夹,以及如何配合防重归档、Webhook 回调与定时任务构建全自动下载流水线。


1. 批量下载场景

1.1 UP 主空间全部投稿

传入 UP 主的个人空间链接即可批量下载该 UP 主的所有投稿稿件:

# 1. 确保已登录(空间投稿接口必须携带登录态)
BBDown login

# 2. 下载该 UP 主的所有投稿视频
BBDown "https://space.bilibili.com/163637592"

# 3. 结合 -p 参数分批下载(例如只下载前 20 个稿件)
BBDown -p 1-20 "https://space.bilibili.com/163637592"

注意:由于 B 站空间列表接口仅返回稿件基本信息,程序需要逐个请求稿件详情以展开分 P。投稿较多时(数百上千条),初始解析阶段可能需要耗时数分钟,请耐心等待。

1.2 播单 / 媒体列表 / 收藏夹

BBDown 支持直接传入各类合集与播单链接:

  • 媒体列表 / 播单BBDown "https://www.bilibili.com/medialist/play/ml123456"
  • 个人公开收藏夹BBDown "https://space.bilibili.com/123456/favlist?fid=123456"
  • 合集与系列BBDown "https://space.bilibili.com/123456/channel/seriesdetail?sid=12345"

2. 自动化与防重机制

2.1 历史防重归档 (--save-archives-to-file)

在长期批量或定时增量下载时,开启 --save-archives-to-file 会在工作目录下自动生成并维护 archives.txt 记录文件:

  • 记录内容:成功下载的视频 aid
  • 自动跳过:后续再次运行同类命令时,只要 aid 已存在于记录文件中,程序会直接跳过下载,无需重新拉取媒体流,极大节省带宽和时间。
BBDown --save-archives-to-file -p 1-50 "https://space.bilibili.com/163637592"

2.2 防风控请求延迟 (--delay-per-page)

批量下载合集或大批量分 P 时,频繁瞬间发起高画质流请求容易触发 B 站的反爬风控(返回 412 或临时封禁 IP)。 建议使用 --delay-per-page 设置分 P 之间的等待秒数:

# 每个分 P 下载完成后等待 3 秒再开始下一 P
BBDown --delay-per-page 3 -p ALL "https://www.bilibili.com/bangumi/play/ss33073"

3. Webhook 回调通知 (--notify-webhook)

当配合 NAS、服务器或监控脚本下载时,可以通过 --notify-webhook 指定一个接收 HTTP POST 通知的 URL。下载完成时程序将自动推送事件。

命令示例

BBDown --notify-webhook "https://api.example.com/notify/bbdown" <URL>

回调 Payload 规范

BBDown 将向该 URL 发送 Content-Type: application/json 的 POST 请求,示例载荷如下:

{
  "Title": "测试视频标题",
  "Aid": "170001",
  "Bvid": "BV1qt4y1X7TW",
  "Cid": "22334455",
  "FilePath": "/data/downloads/测试视频标题.mp4",
  "IsSuccessful": true,
  "Duration": "00:15:32",
  "Timestamp": 1715000000
}

4. 自动化定时同步实战

示例 A:Linux Crontab 每日增量同步订阅

结合 BBDown sub check 和 Linux Crontab,每天凌晨 3 点自动检查并下载 UP 主更新:

# 编辑 crontab
crontab -e

# 添加定时任务(每天 03:00 执行)
0 3 * * * cd /data/bbdown && ./BBDown sub check --save-archives-to-file >> /var/log/bbdown_sub.log 2>&1

示例 B:PowerShell 批量处理链接文本

准备一个包含多条 URL 的文本文件 urls.txt,使用 PowerShell 逐行下载:

# run_batch.ps1
$urls = Get-Content -Path "urls.txt"
foreach ($url in $urls) {
    if (-not [string]::IsNullOrWhiteSpace($url)) {
        Write-Host ">>> 正在处理: $url" -ForegroundColor Cyan
        .\BBDown.exe --save-archives-to-file --delay-per-page 2 $url
    }
}

Clone this wiki locally