diff --git a/apps/tools.js b/apps/tools.js index 917e6df..ce22fe6 100644 --- a/apps/tools.js +++ b/apps/tools.js @@ -30,7 +30,7 @@ import { ANIME_SERIES_SEARCH_LINK, ANIME_SERIES_SEARCH_LINK2, BILI_ARTICLE_INFO, - BILI_EP_INFO, + BILI_EP_INFO, BILI_NAV, BILI_NAV_STAT, BILI_ONLINE, BILI_SSID_INFO, BILI_STREAM_FLV, @@ -54,6 +54,7 @@ import { WEISHI_VIDEO_INFO, XHS_REQ_LINK } from "../constants/tools.js"; +import BiliInfoModel from "../model/bili-info.js"; import config from "../model/config.js"; import NeteaseModel from "../model/netease.js"; import * as aBogus from "../utils/a-bogus.cjs"; @@ -142,6 +143,11 @@ export class tools extends plugin { fnc: "biliScan", permission: 'master', }, + { + reg: "^#(RBS|rbs)$", + fnc: "biliState", + permission: 'master', + }, { reg: "(bilibili.com|b23.tv|t.bilibili.com|^BV[1-9a-zA-Z]{10}$)", fnc: "bili", @@ -640,6 +646,58 @@ export class tools extends plugin { return true; } + // B站状态 + async biliState(e) { + if (!this.biliSessData) { + e.reply("未检测到 B 站登录信息,请填写 SessData"); + return; + } + + // 封装 fetch 请求为函数 + const fetchData = async (url) => { + try { + const res = await fetch(url, { + headers: { + Cookie: `SESSDATA=${this.biliSessData}` + } + }); + const data = await res.json(); + return data.data; + } catch (error) { + e.reply("请求失败,请稍后重试"); + throw error; // 确保错误传播 + } + }; + + // 并行请求用户基本信息和状态信息 + const [biliData, biliStat] = await Promise.all([fetchData(BILI_NAV), fetchData(BILI_NAV_STAT)]); + + // 解构所需的字段 + const { face, uname, level_info, money, moral, vipStatus } = biliData; + const { following, follower, dynamic_count } = biliStat; + + // 获取屏幕截图所需的数据 + const screenData = await new BiliInfoModel(e).getData({ + face, + uname, + level_info, + money, + moral, + vipStatus, + following, + follower, + dynamic_count + }); + + // 使用 puppeteer 生成截图 + try { + let img = await puppeteer.screenshot("bili-info", screenData); + e.reply(img, true); + } catch (error) { + e.reply("截图生成失败,请稍后重试"); + } + } + // B 站解析 async bili(e) { const urlRex = /(?:https?:\/\/)?www\.bilibili\.com\/[A-Za-z\d._?%&+\-=\/#]*/g; diff --git a/config/version.yaml b/config/version.yaml index db6d4b3..fa6b6f0 100644 --- a/config/version.yaml +++ b/config/version.yaml @@ -1,10 +1,10 @@ - { - version: 1.9.1, + version: 1.9.2, data: [ + 新增RBS查看哔哩哔哩状态功能, + 新增自建ncm功能, 新增直播切片功能, - 优化队列下载和GPT功能, - 新增哔哩哔哩下载分辨率设置功能, 支持锅巴插件,方便查看和修改配置, 输入#R帮助获取插件帮助, 输入#R更新更新插件, diff --git a/constants/tools.js b/constants/tools.js index 8de1cf4..5eaac19 100644 --- a/constants/tools.js +++ b/constants/tools.js @@ -40,6 +40,13 @@ export const BILI_VIDEO_INFO = "http://api.bilibili.com/x/web-interface/view" */ export const BILI_NAV = "https://api.bilibili.com/x/web-interface/nav" +/** + * 登录用户状态数(双端) + * https://github.com/SocialSisterYi/bilibili-API-collect?tab=readme-ov-file + * @type {string} + */ +export const BILI_NAV_STAT = "https://api.bilibili.com/x/web-interface/nav/stat"; + /** * 扫码登录的二维码生成 * https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/docs/login/login_action/QR.md diff --git a/model/bili-info.js b/model/bili-info.js new file mode 100644 index 0000000..b7a6c29 --- /dev/null +++ b/model/bili-info.js @@ -0,0 +1,17 @@ +import Base from './base.js' + +export default class BiliInfoModel extends Base { + constructor (e) { + super(e) + this.model = 'bili-info' + } + + /** 生成版本信息图片 */ + async getData (biliInfoData) { + return { + ...this.screenData, + saveId: 'bili-info', + biliInfoData: biliInfoData, + } + } +} diff --git a/resources/html/bili-info/bili-info.css b/resources/html/bili-info/bili-info.css new file mode 100644 index 0000000..e69de29 diff --git a/resources/html/bili-info/bili-info.html b/resources/html/bili-info/bili-info.html new file mode 100644 index 0000000..d155674 --- /dev/null +++ b/resources/html/bili-info/bili-info.html @@ -0,0 +1,203 @@ + + + + + + Bilibili User Card - Full Screen + + + +
哔哩哔哩
+
Bilibili
+
B站
+
+
+
+ 用户头像 + {{ if biliInfoData.vipStatus == '1' }} +
+ {{ /if }} +
+
{{ biliInfoData.uname }}
+ +
LV{{ biliInfoData.level_info.current_level }}
+
+
+
{{ biliInfoData.following }}
+
关注
+
+
+
{{ biliInfoData.follower }}
+
粉丝
+
+
+
{{ biliInfoData.dynamic_count }}
+
动态
+
+
+
+
+ +