UNPKG

@bilicli/live-mini

Version:

Bili-Live danmu client, lite version

190 lines (175 loc) 6.1 kB
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 });