BiliDataManager

BiliDataManager 是一个 Bilibili 数据管理工具库,旨在为开发者提供简洁的接口来抓取和处理 Bilibili 的各种数据。

이 스크립트는 직접 설치하는 용도가 아닙니다. 다른 스크립트에서 메타 지시문 // @require https://update.greasyfork.org/scripts/563577/1739686/BiliDataManager.js을(를) 사용하여 포함하는 라이브러리입니다.

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

작성자
ZBpine
버전
1.0.0
생성일
2026-01-22
갱신일
2026-01-22
크기
382KB
라이선스
MIT

BiliDataManager

BiliDataManager 是一个 Bilibili 数据管理工具库,旨在为开发者提供简洁的接口来抓取和处理 Bilibili 的各种数据。

本项目采用 UMD 格式打包,可直接作为脚本库通过 @require 引入,导出的全局变量名为 BiliDataManager。。

若要在非油猴脚本环境中使用,请模仿 GM_xmlhttpRequest 封装请求函数。见仿造 GM_xmlhttprequest

模块

  • Client:支持请求B站api。使用 GM_xmlhttpRequest ,解决跨域及 Cookie 问题;提供wbi签名。详情
  • Archive:支持获取视频、番剧、课程、动态等稿件数据,并处理成统一的信息。详情
  • Danmaku:支持获取xml实时弹幕、protobuf实时弹幕、历史弹幕。详情
  • Comment:支持获取评论数据,还能够自动构建评论间的层级树状结构。详情

使用

引入

// ==UserScript==
// @grant        GM_xmlhttpRequest
// @connect      api.bilibili.com
// @require      https://bili-data-manager.min.js
// ==UserScript==

初始化环境

const BDM = BiliDataManager.create({
    httpRequest: GM_xmlhttpRequest,
    name: "B站数据管理",
    isLog: true,
});

获取稿件信息

const arcMgr = new BDM.BiliArchive();
const url = "https://www.bilibili.com/video/BV1zJiGBREPB/";

const info = await arcMgr.getData(url);
BDM.logger.log(info);

获取弹幕

const dmMgr = new BDM.BiliDanmaku(info); //arcMgr.info

await dmMgr.getDmPb();
BDM.logger.log(dmMgr.data);

获取评论

const cmtMgr = new BDM.BiliComment(info); //arcMgr.info

await cmtMgr.getReply();
BDM.logger.log(cmtMgr.replyTree.toTree());

存储

const data = {
    ...arcMgr.data,
    ...dmMgr.data,
    ...cmtMgr.data,
};
GM_setClipboard(JSON.stringify(data));

读取

const data = JSON.parse(GM_getClipboard());

const arcMgr = new BDM.BiliArchive();
arcMgr.setData(data); //return info

const dmMgr = new BDM.BiliDanmaku(arcMgr.info);
dmMgr.setData(data);
BDM.logger.log(dmMgr.dmDict);

const cmtMgr = new BDM.BiliComment(arcMgr.info);
cmtMgr.setData(data);
BDM.logger.log(cmtMgr.replyTree.toTree());