UNPKG

koishi-plugin-kbot

Version:
256 lines (229 loc) 13.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.renderDanmu = exports.renderVup = void 0; const jsx_runtime_1 = require("@satorijs/element/jsx-runtime"); /* * @Author: Kabuda-czh * @Date: 2023-02-11 15:12:57 * @LastEditors: Kabuda-czh * @LastEditTime: 2023-06-07 10:04:44 * @FilePath: \KBot-App\plugins\kbot\src\plugins\bilibili\dynamic\composition\render.tsx * @Description: * * Copyright (c) 2023 by Kabuda-czh, All Rights Reserved. */ const utils_1 = require("../../../utils"); async function renderVup(searchUserCardInfo, vups, vupsLength, medalMap, needLoadFontList) { const loadList = await (0, utils_1.loadFont)(needLoadFontList); return (0, jsx_runtime_1.jsxs)("html", { children: [(0, jsx_runtime_1.jsx)("style", { children: ` * { margin: 0; padding: 0; } ${loadList[0]} .flex-cc { display: flex; align-items: center; justify-content: center; } .uid { color: #696969; background-color: #DDDDDD; border-radius: 2px; font-size: 11px; padding: 0 5px; } .medalBg { background-color: #F6F6F6; } .padding-x5 { padding: 0 5px; } #card { font-size: 12px; font-family: ${loadList[1]}; } .header { display: flex; align-items: center; } .headerImg { height: 120px; width: 120px; } .info { display: flex; flex-direction: column; align-items: center; gap: 10px; width: 100%; margin: 0 10px; font-size: 10px; } .info div { display: flex; align-items: center; justify-content: flex-start; gap: 10px; width: 100%; } .vup { display: flex; flex-direction: column; width: 100%; } .vupInfo { display: flex; align-items: center; padding: 10px; gap: 5px; } ` }), (0, jsx_runtime_1.jsxs)("div", { id: "card", children: [(0, jsx_runtime_1.jsxs)("div", { class: "header", children: [(0, jsx_runtime_1.jsx)("img", { class: "headerImg", src: searchUserCardInfo.card.face }), (0, jsx_runtime_1.jsxs)("div", { class: "info", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("p", { children: searchUserCardInfo.card.name }), (0, jsx_runtime_1.jsx)("p", { class: "uid", children: searchUserCardInfo.card.mid })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("p", { style: "margin-right: 20px", children: ["\u7C89\u4E1D: ", searchUserCardInfo.card.fans] }), (0, jsx_runtime_1.jsxs)("p", { children: ["\u5173\u6CE8: ", searchUserCardInfo.card.attentions.length] })] }), (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsxs)("p", { children: ["\u7BA1\u4EBA\u75F4\u6210\u5206:\u00A0", (vupsLength / searchUserCardInfo.card.attentions.length * 100).toFixed(2), "% (", vupsLength, " / ", searchUserCardInfo.card.attentions.length, ")"] }) }), (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsxs)("p", { children: ["\u6CE8\u518C\u65E5\u671F: ", new Date(searchUserCardInfo.card.regtime * 1000).toLocaleString()] }) }), (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsxs)("p", { children: ["\u67E5\u8BE2\u65E5\u671F: ", new Date().toLocaleDateString()] }) })] })] }), (0, jsx_runtime_1.jsxs)("div", { class: "vup", children: [...vups.map((vup, index) => { if (medalMap[vup.mid] && medalMap[vup.mid].medal_info.level) { return (0, jsx_runtime_1.jsx)("div", { class: (index % 2) && 'medalBg', children: (0, jsx_runtime_1.jsxs)("div", { class: "vupInfo", children: [(0, jsx_runtime_1.jsx)("p", { children: vup.uname }), (0, jsx_runtime_1.jsx)("div", { class: "flex-cc uid", children: (0, jsx_runtime_1.jsx)("p", { children: vup.mid }) }), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', justifyContent: 'center', alignItems: 'center', backgroundImage: `linear-gradient(to right, ${int2rgb(medalMap[vup.mid].medal_info.medal_color_start)}, ${int2rgb(medalMap[vup.mid].medal_info.medal_color_end)})`, border: `1px solid ${int2rgb(medalMap[vup.mid].medal_info.medal_color_border)}`, }, children: [(0, jsx_runtime_1.jsx)("p", { class: "padding-x5", style: { color: '#FFF', }, children: medalMap[vup.mid].medal_info.medal_name }), (0, jsx_runtime_1.jsx)("p", { class: "padding-x5", style: { backgroundColor: '#FFF', color: `${int2rgb(medalMap[vup.mid].medal_info.medal_color_border)}`, }, children: medalMap[vup.mid].medal_info.level })] })] }) }); } return null; })] })] })] }); } exports.renderVup = renderVup; async function renderDanmu(searchUserCardInfo, danmukuData, needLoadFontList) { const danmuMap = { 0: '普通消息', 1: '礼物', 2: '上舰', 3: 'Superchat', 4: '进入直播间', 5: '标题变动', 6: '分区变动', 7: '直播中止', 8: '直播继续', }; const loadList = await (0, utils_1.loadFont)(needLoadFontList); return (0, jsx_runtime_1.jsxs)("html", { children: [(0, jsx_runtime_1.jsx)("style", { children: ` * { margin: 0; padding: 0; } ${loadList[0]} #card { font-size: 12px; font-family: ${loadList[1]}; } .user { display: flex; align-items: center; } .userFace, .upFace { height: 100px; width: 100px; } .uid { color: #696969; background-color: #DDDDDD; border-radius: 2px; font-size: 11px; padding: 0 5px; } .userInfo { display: flex; flex-direction: column; align-items: center; gap: 5px; width: 100%; margin: 0 10px; font-size: 10px; } .userInfo div { display: flex; align-items: center; justify-content: flex-start; gap: 10px; width: 100%; } .danmu { margin-top: 10px; font-size: 8px; } .upData { display: flex; padding-left: 10px; padding-right: 10px; } .roomData { margin-left: 15px; } .danmuData { margin-top: 3px; } .nameTitleColor { color: rgb(24, 144, 255); } .redColor { color: rgb(255, 0, 0); } .greenColor { color: rgb(0, 128, 0); } ` }), (0, jsx_runtime_1.jsxs)("div", { id: "card", children: [(0, jsx_runtime_1.jsxs)("div", { class: "user", children: [(0, jsx_runtime_1.jsx)("img", { class: "userFace", src: searchUserCardInfo.card.face }), (0, jsx_runtime_1.jsxs)("div", { class: "userInfo", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("p", { children: searchUserCardInfo.card.name }), (0, jsx_runtime_1.jsx)("p", { class: "uid", children: searchUserCardInfo.card.mid })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("p", { style: "margin-right: 20px", children: ["\u7C89\u4E1D: ", searchUserCardInfo.card.fans] }), (0, jsx_runtime_1.jsxs)("p", { children: ["\u5173\u6CE8: ", searchUserCardInfo.card.attentions.length] })] }), (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsxs)("p", { children: ["\u9875\u7801 [0 / ", Math.floor((danmukuData.data.total - 1) / 5), "]"] }) }), (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsxs)("p", { children: ["\u7F51\u9875\u94FE\u63A5: https://danmakus.com/user/", searchUserCardInfo.card.mid] }) })] })] }), (0, jsx_runtime_1.jsx)("div", { class: "danmukuDatas", children: danmukuData.data.data.map((item) => { return (0, jsx_runtime_1.jsxs)("div", { class: "danmu", children: [(0, jsx_runtime_1.jsxs)("div", { class: "upData", children: [(0, jsx_runtime_1.jsx)("img", { class: "upFace", src: item.channel.faceUrl }), (0, jsx_runtime_1.jsxs)("div", { class: "roomData", children: [(0, jsx_runtime_1.jsxs)("p", { class: "nameTitleColor", children: ["\u6807\u9898: ", item.live.title] }), (0, jsx_runtime_1.jsxs)("p", { class: "nameTitleColor", children: ["\u4E3B\u64AD: ", item.channel.name] }), (0, jsx_runtime_1.jsxs)("p", { children: ["\u5F00\u59CB\u65F6\u95F4: ", new Date(item.live.startDate).toLocaleString()] }), (0, jsx_runtime_1.jsxs)("p", { children: ["\u7ED3\u675F\u65F6\u95F4: ", item.live.isFinish ? new Date(item.live.stopDate).toLocaleString() : (0, jsx_runtime_1.jsx)("span", { class: "greenColor", children: "\u6B63\u5728\u76F4\u64AD" })] }), (0, jsx_runtime_1.jsxs)("p", { children: ["\u76F4\u64AD\u65F6\u957F: ", `${(((item.live.isFinish ? item.live.stopDate : Date.now()) - item.live.startDate) / 3600000).toFixed(1)}小时`] }), (0, jsx_runtime_1.jsxs)("p", { children: ["\u5F39\u5E55\u6570\u91CF: ", item.live.danmakusCount] }), (0, jsx_runtime_1.jsxs)("p", { children: ["\u89C2\u770B\u6B21\u6570: ", item.live.watchCount] }), (0, jsx_runtime_1.jsxs)("p", { children: ["\u6536\u76CA: ", (0, jsx_runtime_1.jsxs)("span", { class: "redColor", children: ["\uFFE5", item.live.totalIncome] })] })] })] }), (0, jsx_runtime_1.jsx)("div", { class: "danmuData", children: item.danmakus.map((danmu) => { let messageInfo; switch (danmu.type) { case 0: messageInfo = [(0, jsx_runtime_1.jsx)("span", { children: danmu.message })]; break; case 1: messageInfo = [ (0, jsx_runtime_1.jsx)("span", { children: danmuMap[danmu.type] }), (0, jsx_runtime_1.jsx)("span", { children: "\u00A0\u00A0" }), (0, jsx_runtime_1.jsx)("span", { children: danmu.message }) ]; break; case 2: case 3: { const color = danmu.type === 3 ? 'rgb(0, 85, 255)' : 'rgb(128, 0, 128)'; messageInfo = [ (0, jsx_runtime_1.jsx)("span", { style: { color }, children: danmuMap[danmu.type] }), (0, jsx_runtime_1.jsx)("span", { children: "\u00A0\u00A0" }), (0, jsx_runtime_1.jsxs)("span", { style: { color }, children: [danmu.message, "["] }), (0, jsx_runtime_1.jsxs)("span", { class: "redColor", children: ["\uFFE5", +danmu.price.toFixed(1), "]"] }), (0, jsx_runtime_1.jsx)("span", { style: { color }, children: "]" }) ]; break; } case 4: case 5: case 6: case 7: case 8: messageInfo = [(0, jsx_runtime_1.jsx)("span", { class: "greenColor", children: danmuMap[danmu.type] })]; break; default: messageInfo = [(0, jsx_runtime_1.jsxs)("span", { children: ["\u672A\u77E5\u7C7B\u578B ", danmu.type] })]; break; } return (0, jsx_runtime_1.jsxs)("p", { children: [(0, jsx_runtime_1.jsx)("span", { children: new Date(danmu.sendDate).toLocaleTimeString() }), "\u00A0\u00A0", (0, jsx_runtime_1.jsx)("span", { class: "nameTitleColor", children: danmu.name }), "\u00A0\u00A0", ...messageInfo] }); }) })] }); }) })] })] }); } exports.renderDanmu = renderDanmu; function int2rgb(int) { const r = int >> 16; const g = (int >> 8) & 255; const b = int & 255; return `rgb(${r}, ${g}, ${b})`; }