@bilicli/live-mini
Version:
Bili-Live danmu client, lite version
190 lines (175 loc) • 6.1 kB
JavaScript
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var src_exports = {};
__export(src_exports, {
startApp: () => startApp
});
module.exports = __toCommonJS(src_exports);
// src/instance.ts
var import_blive_message_listener = require("blive-message-listener");
// src/component/msg/danmu.ts
var import_ansis2 = __toESM(require("ansis"), 1);
// src/component/username.ts
var import_ansis = __toESM(require("ansis"), 1);
// src/utils/parse.ts
var getGuardColor = (level = 0) => {
const colorDict = ["#967E76", "#FF7C28", "#E17AFF", "#00D1F1"];
return colorDict[level];
};
// src/component/username.ts
var usernameCom = (user) => {
var _a, _b, _c;
const options = global.appOptions;
let badge, rank, admin;
if (options.badge && user.badge) {
const badgeColor = user.badge.anchor.is_same_room ? user.badge.color : "#999999";
badge = import_ansis.default.bgHex(badgeColor)(` ${user.badge.name} `) + import_ansis.default.bgHex("#ffffff").hex(badgeColor)(` ${user.badge.level} `);
}
if (options.rank && ((_a = user.identity) == null ? void 0 : _a.rank)) {
rank = import_ansis.default.bgBlue(` \u699C${user.identity.rank} `);
}
if ((_b = user.identity) == null ? void 0 : _b.room_admin) {
admin = import_ansis.default.bgRed(` \u623F `);
}
const uname = import_ansis.default.hex(getGuardColor((_c = user.identity) == null ? void 0 : _c.guard_level))(user.uname);
const components = [
badge,
rank,
admin,
uname
].filter(Boolean);
return components.join(" ");
};
// src/component/msg/danmu.ts
var danmuType = (msg) => {
if (msg.emoticon) {
return "[\u8868\u60C5]";
} else if (msg.lottery) {
return "[\u62BD\u5956]";
}
return "";
};
var danmuMsgCom = (msg) => {
const components = [
`${usernameCom(msg.user)}:`,
import_ansis2.default.yellow(danmuType(msg)),
msg.content
].filter(Boolean);
return components.join(" ");
};
// src/component/msg/superChat.ts
var import_ansis3 = __toESM(require("ansis"), 1);
var superChatMsgCom = (msg) => {
const components = [
`${usernameCom(msg.user)}:`,
`(\xA5${msg.price})`,
import_ansis3.default.hex(msg.content_color)(msg.content)
].filter(Boolean);
return components.join(" ");
};
// src/component/msg/gift.ts
var import_ansis4 = __toESM(require("ansis"), 1);
var sendMaster = (msg) => {
var _a;
if ((_a = msg.send_master) == null ? void 0 : _a.uname) {
return `\u7ED9 ${import_ansis4.default.magenta(msg.send_master.uname)}`;
}
return "";
};
var giftMsgCom = (msg) => {
const components = [
usernameCom(msg.user),
"\u8D60\u9001\u4E86",
import_ansis4.default.magenta(`(\xA5${msg.price / 1e3}) ${msg.gift_name}`),
`* ${msg.amount}`,
sendMaster(msg)
].filter(Boolean);
return components.join(" ");
};
// src/component/msg/guardBuy.ts
var import_ansis5 = __toESM(require("ansis"), 1);
var guardBuyMsgCom = (msg) => {
var _a;
const components = [
`${usernameCom(msg.user)}:`,
`(\xA5${msg.price / 1e3})`,
import_ansis5.default.hex(getGuardColor((_a = msg.user.identity) == null ? void 0 : _a.guard_level))(msg.gift_name)
].filter(Boolean);
return components.join(" ");
};
// src/instance.ts
var startInstance = (roomId, options) => {
global.appOptions = options;
const handler = {
onIncomeDanmu: (msg) => {
!msg.body.lottery && console.log(danmuMsgCom(msg.body));
},
onIncomeSuperChat: (msg) => {
console.log(superChatMsgCom(msg.body));
},
onGift: (msg) => {
console.log(giftMsgCom(msg.body));
},
onGuardBuy(msg) {
console.log(guardBuyMsgCom(msg.body));
}
};
(0, import_blive_message_listener.startListen)(roomId, handler);
};
// src/utils/getInfo.ts
var import_ohmyfetch = require("ohmyfetch");
var getRoomInfo = async (roomId) => {
const url = `https://api.live.bilibili.com/room/v1/Room/get_info?room_id=${roomId}`;
const response = await (0, import_ohmyfetch.$fetch)(url);
return response.code === 0 ? response.data : null;
};
// src/component/roomInfo.ts
var import_ansis6 = __toESM(require("ansis"), 1);
var roomInfoCom = (roomInfo) => {
const components = [
import_ansis6.default.bold.green(`${roomInfo.room_id}`),
import_ansis6.default.green(`(${roomInfo.parent_area_name}\xB7${roomInfo.area_name})`),
roomInfo.title
];
return components.join(" ");
};
// src/index.ts
var startApp = async (roomId, options) => {
const roomInfo = await getRoomInfo(roomId);
if (!roomInfo) {
console.log("\u623F\u95F4\u4E0D\u5B58\u5728");
return process.exit(1);
}
console.log(roomInfoCom(roomInfo));
startInstance(roomInfo.room_id, options);
};
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
startApp
});