BLSync 是一个 Bilibili 收藏夹同步工具。
疯狂完善功能中……
- 支持收藏夹同步
- 支持外部 API 下载请求
- 支持 WebUI
- 支持稍后观看同步
- 支持 UP 主视频同步
- 支持 UP 主动态图片、动态文字同步
- 支持个人动态同步
- 支持外部下载工具
任务栏
手动下载
你需要了解docker compose的基本用法。
- 创建目录结构
mkdir blsync
cd blsync
mkdir config/ # 配置和记录目录
mkidr sync/ # 下载文件存储目录- 创建
compose.yaml文件
services:
blsync:
image: ghcr.io/oxygenkun/blsync:latest
container_name: blsync
ports:
- "8000:8000"
volumes:
- ./config:/app/config
- ./sync:/app/sync
environment:
- TZ=Asia/Shanghai
restart: unless-stopped-
创建配置文件
./config/config.toml(内容写法在配置文件章节) -
启动服务与常用命令
# 启动服务(后台运行)
docker compose up -d
# 停止服务
docker compose down你需要在命令行环境安装uv、ffmpeg
# 同步运行环境
uv sync
# 启动服务
uv run bs -c config/config.toml
bs是项目提供的命令行工具,通过 pyproject.toml 中的[project.scripts]定义
默认读取 ./config/config.toml 文件 (参考模板文件 ./config/config.template.toml 中的说明)。
浏览器可以看到 fid=xxxx,只需要后面数字即可
服务启动后,可以通过 HTTP API 手动添加 Bilibili 视频下载任务。
POST /api/task/bili
Content-Type: application/json请求参数:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
bid |
string | 是 | Bilibili 视频 BV 号,例如 BV1xxxx |
favid |
string | 否 | 收藏夹 id,默认 -1。-1 表示通过 API 手动添加的任务 |
selected_episodes |
number[] | 否 | 需要下载的分 P 索引列表,不传则下载全部分 P |
示例:
curl -X POST "http://127.0.0.1:8000/api/task/bili" \
-H "Content-Type: application/json" \
-d '{
"bid": "BV1xxxx",
"favid": "-1",
"selected_episodes": [0, 1]
}'返回示例:
{
"status": "success",
"message": "Task BV1xxxx added to database",
"task_id": 1
}如果任务已存在,接口会更新任务上下文;当已存在任务处于 failed 或 completed 状态时,会重置为待下载状态。
手动下载任务默认使用 favid = -1,需要在配置文件中为该任务配置下载目录:
[favorite_list.task0]
fid = -1
path = "sync/"该项目实现过程中主要参考借鉴了如下的项目,感谢他们的贡献:
- bili-sync 项目功能和配置的参考
- bilibili-API-collect B 站的第三方接口文档
- bilibili-api B 站接口 Python SDK 封装
- yutto B 站视频下载器



