B站视频下载器
功能概述
下载B站视频到指定目录,支持两种模式:
- 单个视频下载:下载指定URL的单集视频
- 批量下载:下载多集视频,需指定开始集数和结束集数
支持选择清晰度(1080P/720P/480P)。自动处理DASH格式(视频和音频分离),使用ffmpeg合并。 注意,单个视频下载时,支持默认清晰度(720P),多个视频下载时,需指定清晰度。
文件结构
scripts/
├── bilibili_spider.py # 视频信息提取
├── video_downloader.py # 核心下载逻辑
├── cookie_manager.py # Cookie管理(自动登录获取)
├── skill_bilibili_downloader.py # 技能主执行脚本
├── test_bilibili_spider.py # 测试脚本
└── cookie.txt # B站登录cookie
SKILL.md # 技能说明文档
前置条件检查
执行前需验证以下依赖是否满足:
- Python 3.8+ - 使用
python --version检查 - requests库 - 使用
pip install requests安装 - ffmpeg - 从 https://ffmpeg.org/download.html 下载安装
- playwright - 使用
pip install playwright安装(用于自动获取cookie) - chromium - 使用
playwright install chromium安装
执行步骤
步骤1:检查前置条件
运行前置条件检查脚本,验证所有依赖是否已安装:
cd scripts
python skill_bilibili_downloader.py --check
步骤2:验证Cookie
技能自动检查 scripts/cookie.txt 文件是否存在且包含有效的B站cookie(通过调用B站API验证)。
Cookie自动刷新机制:
- 若cookie无效或已过期,技能会自动启动浏览器登录界面
- 用户在弹出的浏览器窗口中手动输入账号密码完成登录
- 登录成功后自动获取并保存cookie到
cookie.txt - 超时时间:2分钟
步骤3:获取用户输入
需要用户提供三项信息:
- 视频URL(必填):有效的B站视频链接
- 保存目录(必填):视频存放的目录路径
- 清晰度(可选):1080p、720p或480p,默认为720p
步骤4:验证输入信息
- URL必须匹配B站视频格式(BV号或AV号)
- 保存目录必须存在或可创建
- 无效的清晰度值默认使用720p
步骤5:执行下载
使用验证后的参数运行下载脚本:
cd scripts
python skill_bilibili_downloader.py <视频URL> <保存目录> [清晰度]
步骤6:验证结果
单个视频下载
检查输出信息,确认下载是否成功及文件保存路径。
批量下载(多集视频)
批量下载完成后,必须执行以下文件完整性检测流程:
6.1 记录预期下载集数
在下载前,记录预期下载的集数范围 [start_page, end_page],计算预期下载数量:end_page - start_page + 1。
6.2 扫描实际下载文件
下载完成后,扫描保存目录,统计实际下载的视频文件数量(扩展名为 .mp4 的文件)。
6.3 对比验证
- 若实际文件数 == 预期文件数:所有视频下载完成
- 若实际文件数 < 预期文件数:存在未下载的视频,需要进一步排查
6.4 生成检测报告
输出格式如下:
📋 批量下载检测报告
├── 预期下载: start_page - end_page (共 X 集)
├── 实际下载: Y 个文件
└── 检测结果:
├── ✅️ 全部完成
└── ❌️ 缺失 Z 集: [缺失集数列表]
6.5 缺失文件处理
若检测到缺失文件,执行以下操作:
- 重新运行批量下载命令,仅指定缺失的集数范围
- 例如:若第3、5、7集缺失,执行:
python skill_bilibili_downloader.py 'url' './downloads' '720p' --batch 3 3 python skill_bilibili_downloader.py 'url' './downloads' '720p' --batch 5 5 python skill_bilibili_downloader.py 'url' './downloads' '720p' --batch 7 7 - 重试后再次执行完整性检测,直到所有文件下载完成
输入验证规则
URL格式(必须匹配以下之一):
https://www.bilibili.com/video/BV\w+https://www.bilibili.com/video/av\d+https://b23.tv/BV\w+
清晰度值(不区分大小写):
1080p(qn=80)720p(qn=64)- 默认值480p(qn=32)
批量下载参数:
start_page(开始集数):必须大于0的整数end_page(结束集数):必须大于等于start_page的整数
错误处理
| 错误类型 | 处理方式 | |----------|----------| | 前置条件缺失 | 显示安装说明 | | Cookie无效 | 自动弹出浏览器登录界面 | | URL格式错误 | 提示用户提供有效的B站链接 | | 目录无效 | 提示用户提供有效的路径 | | 下载失败 | 显示错误信息并建议重试 | | 批量下载集数参数无效 | 提示开始集数必须大于0,结束集数必须大于等于开始集数 | | 批量下载部分失败 | 记录失败集数列表,生成检测报告,引导用户重试缺失集数 |
使用示例
单个视频下载
cd scripts
# 基本用法,默认720p
python skill_bilibili_downloader.py 'https://www.bilibili.com/video/BV1z3NY66EY1/' './downloads'
# 指定1080p清晰度
python skill_bilibili_downloader.py 'https://www.bilibili.com/video/BV1z3NY66EY1/' './downloads' '1080p'
批量下载(多集视频)
cd scripts
# 批量下载第1-27集,指定720p清晰度
python skill_bilibili_downloader.py 'https://www.bilibili.com/video/BV178w1z7EHQ/' './downloads' '720p'--batch 1 27
# 批量下载第10-20集,指定1080p清晰度
python skill_bilibili_downloader.py 'https://www.bilibili.com/video/BV178w1z7EHQ/' './downloads' '1080p' --batch 10 20
相关文件
| 文件 | 用途 |
|------|------|
| scripts/skill_bilibili_downloader.py | 技能主执行脚本 |
| scripts/video_downloader.py | 核心下载逻辑 |
| scripts/bilibili_spider.py | 视频信息提取 |
| scripts/cookie_manager.py | Cookie自动获取与管理 |
| scripts/cookie.txt | B站登录cookie |
返回值
(True, 文件路径)- 下载成功(False, 错误信息)- 下载失败
重要说明
- 1080P清晰度需要有效的登录cookie
- DASH格式视频需要ffmpeg进行合并
- 支持多P视频,通过URL参数
p指定分集(如?p=2) - 合并完成后自动清理临时
.m4s文件
安全约束(强制执行)
🚫 绝对禁止操作
- 严禁修改本Skill的任何内容:包括但不限于 SKILL.md 文件、scripts/ 目录下的所有脚本文件、配置文件等
- 严禁删除本Skill的任何文件:不得删除技能目录下的任何文件或子目录
- 严禁添加新文件到技能目录:不得在技能目录及其子目录中创建新文件
- 严禁修改技能目录结构:不得更改技能的目录层级和文件组织方式
⚠️ 工具使用限制
- 允许使用的工具:Read(读取)、Grep(搜索)、Glob(文件查找)、Shell(命令执行)、WebSearch(网页搜索)、browser_use(浏览器操作)
- 禁止使用的工具:Write(写入)、Edit(编辑)、DeleteFile(删除文件)等所有会修改文件系统的工具
📋 执行原则
- 本技能运行期间,AI仅可执行脚本命令完成视频下载任务,不得对技能本身的任何文件进行修改
- 若用户要求修改技能内容,必须明确拒绝并说明原因,引导用户手动修改
- 技能执行过程中,若检测到任何对技能文件的修改尝试,应立即终止执行并报告异常
Scan to join WeChat group