Sign inSign up

wannayoung/bilist

By wannayoung

Updated 15 days ago

B站关注与投稿浏览工具

Image
Developer tools
Web servers
Content management system
0

607

wannayoung/bilist repository overview

Bilist

B 站个人内容浏览、站内播放与下载工具。扫码登录后,可在本地查看推荐、关注投稿、收藏夹与稍后阅读,支持搜索、网页播放与视频下载。

功能

  • 二维码登录:使用 B 站 App 扫码登录;登录态持久化到服务端,同一实例下多设备共用同一登录账号
  • 推荐:浏览当前账号的首页推荐视频,支持分页
  • 搜索:顶栏搜索框检索视频,进入独立搜索结果页,支持分页与返回
  • 关注:浏览关注的 UP 主及其投稿视频;UP 主页可关注 / 取消关注
  • 收藏:按收藏夹查看已收藏视频;封面可收藏 / 取消收藏
  • 稍后:查看稍后阅读列表
  • 站内播放:封面「播放」在本站打开播放器;支持清晰度切换、倍速、全屏、多 P;已下载优先播本地文件
  • 播放页操作:可关注 UP、收藏 / 下载视频、在 B 站打开;展示播放量、弹幕、点赞等统计与简介
  • 视频封面操作:播放 / 收藏 / 下载
  • 批量下载:列表工具栏可批量加入当前页
  • 下载队列:查看进度、取消、重试、清除已完成
  • 设置:夜间模式、无图模式、下载并发数、下载质量
  • 投稿导出:命令行将指定 UID 的全部投稿导出为 CSV

界面说明

顶部 Tab:推荐 / 关注 / 收藏 / 稍后

  • 点击左上角 logo 可刷新当前页面
  • 宽屏与窄屏均在顶栏显示搜索框
  • 宽屏:鼠标悬停封面显示操作按钮;播放页为居中弹层
  • 窄屏:点击封面显示操作按钮;播放页全屏展示,操作按钮单独成行

技术栈

  • 前端:Vue 3 + Naive UI + Vite + @vicons/ionicons5 + ArtPlayer + dash.js
  • 后端:Express(开发模式集成 Vite 中间件,单进程运行)
  • 存储:SQLite(better-sqlite3config/bilist.db
  • 下载:yt-dlp + ffmpeg
  • 播放:服务端拉取 B 站 playurl,DASH 流经本机代理;已下载视频直接读本地文件

环境要求

  • Node.js 22+
  • 本地开发下载视频需安装:
brew install yt-dlp ffmpeg

快速开始

# 安装依赖
npm install

# 启动开发服务器(默认 http://localhost:3060)
npm run dev

# 生产构建并启动
npm run build
npm start

浏览器打开后,使用 B 站 App 扫描二维码完成登录。

站内播放

  • 封面或标题进入播放页
  • 播放器内可切换清晰度、倍速、全屏
  • 已下载视频默认使用「本地文件」清晰度
  • 播放页可关注 UP、收藏、下载,或跳转 B 站 App / 网页

视频下载

  • 视频封面:播放 / 收藏 / 下载
  • 列表工具栏:批量下载(当前页)
  • 右上角 下载队列:进度、取消、重试、清除已完成
  • 右上角 设置:夜间模式、无图模式、队列并发、下载质量

下载文件保存在 downloads/<UP主>/标题.mp4(不再附带 [BV号])。登录态、下载任务与设置保存在 config/bilist.db(SQLite)。

登录态说明

登录成功后,Cookie 与用户信息写入 config/bilist.db,服务重启后自动恢复。

该登录态为实例级共享:任意一台设备在本实例扫码登录后,访问同一服务的其他设备都会使用同一 B 站账号;任一设备退出登录,也会清除这份共享登录态。

适合个人或家庭自建、多端共用一个账号的场景。

首次启动时若仍存在旧版 auth.json / settings.json / downloads.json,会自动导入 SQLite,并将原文件重命名为 *.migrated

投稿导出

# 导出指定 UID 的全部投稿为 CSV
npm run export -- <UID>

# 指定输出文件
npm run export -- <UID> -o output.csv

Docker 部署

# 构建并启动(端口 3060,登录态 ./config,视频 ./downloads)
docker compose up -d --build

# 或直接使用 Docker Hub 镜像
docker pull wannayoung/bilist:latest
# 再按 docker-compose.yml 挂载 ./config、./downloads 启动

# 查看日志
docker compose logs -f

# 停止
docker compose down

浏览器访问 http://localhost:3060 。扫码登录后,数据保存在宿主机 ./config/bilist.db,下载视频保存在 ./downloads,容器重启后保留。

挂载目录:

宿主机容器内用途
./config/app/configSQLite 数据库、yt-dlp cookies
./downloads/app/downloads下载的视频文件

镜像内已预设 NODE_ENV=productionPORT=3060CONFIG_DIR=/app/configDOWNLOAD_DIR=/app/downloadsdocker-compose.yml 中默认 LOG_LEVEL=info

公开镜像:wannayoung/bilist(标签如 0.2.2latest,支持 linux/amd64linux/arm64)。

日志

服务端输出中文可读日志,便于本地调试与 docker logs 排查:

[2026-09-01 17:13:05] 信息 获取推荐视频(第1页)成功,耗时 120毫秒
[2026-09-01 17:14:01] 信息 开始下载:「视频标题」
[2026-09-01 17:14:20] 错误 下载失败:「视频标题」:……

可通过环境变量调整级别:LOG_LEVEL=debug|info|warn|error(默认 info)。扫码轮询等高频请求仅在 debug 下记录。

配置

环境变量说明默认值
PORT服务端口3060
CONFIG_DIR配置目录./config(Docker 内为 /app/config
DOWNLOAD_DIR视频下载目录./downloads(Docker 内为 /app/downloads
DOWNLOAD_CONCURRENCY同时下载任务数2
LOG_LEVEL日志级别info
NODE_ENV运行模式未设置时为开发模式;Docker 默认为 production

登录态、下载任务与设置保存在 config/bilist.db(已加入 .gitignore)。

若此前使用 .data/auth.jsonconfig/*.json,将文件放到 config/ 后启动服务即可自动迁移:

mkdir -p config
# 例如:mv .data/auth.json config/auth.json

项目结构

bilist/
├── config/                 # bilist.db(登录/设置/下载任务)
├── downloads/              # 下载的视频文件
├── server/                 # Express 后端与 B 站 API
│   ├── download/           # 下载队列与 yt-dlp 调度
│   ├── play.js             # 站内播放(playurl / DASH / 本地文件)
│   ├── db.js               # SQLite 连接与表结构
│   ├── auth-store.js       # 登录态持久化
│   └── logger.js           # 中文日志
├── src/                    # Vue 前端
│   ├── views/              # 按模块划分的页面
│   │   ├── recommend/      # 推荐
│   │   ├── following/      # 关注
│   │   ├── favorite/       # 收藏
│   │   ├── watch-later/    # 稍后阅读
│   │   ├── video-list/     # 搜索结果 / UP 投稿
│   │   └── auth/           # 扫码登录
│   ├── components/         # 视频卡片、播放器、面板、设置等
│   └── composables/        # 下载队列、窄屏断点、库同步等
├── export_videos.js        # 投稿 CSV 导出脚本
├── Dockerfile
├── docker-compose.yml
└── index.html

免责声明

本项目仅供个人学习与研究使用,请遵守 B 站用户协议与相关法律法规,勿用于商业或滥用接口。

Tag summary

Content type

Image

Digest

sha256:94bbfdec7

Size

143.2 MB

Last updated

15 days ago

docker pull wannayoung/bilist