From 389515bc5bf0d248c997ac2a072a15920a68adee Mon Sep 17 00:00:00 2001 From: Megghy Date: Sat, 4 Oct 2025 01:27:47 +0800 Subject: [PATCH] feat: add heartbeat monitoring system and disable browser timer throttling --- bun.lockb | Bin 417849 -> 416726 bytes constants_raw.txt | 425 ------------------ package.json | 4 +- src/client/ClientFetcher.vue | 102 +++-- src/client/ClientLayout.vue | 3 +- src/client/DanmakuWindowManager.vue | 3 +- .../danmaku/CardStyleDanmakuItem.vue | 14 + src/client/components/danmaku/danmakuUtils.ts | 6 + src/client/data/info.ts | 18 +- src/client/data/initialize.ts | 6 +- src/data/DanmakuClients/BaseDanmakuClient.ts | 26 +- src/data/DanmakuClients/DirectClient.ts | 126 ++++-- src/data/DanmakuClients/OpenLiveClient.ts | 40 +- src/main.ts | 5 + 14 files changed, 246 insertions(+), 532 deletions(-) delete mode 100644 constants_raw.txt diff --git a/bun.lockb b/bun.lockb index 3fa525670a764812f6aa202e66eb51ae70c9406f..6ec8f3de9903460ac1eb2ed4ff27da825ec27c43 100644 GIT binary patch delta 67719 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 delta 68409 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 diff --git a/constants_raw.txt b/constants_raw.txt deleted file mode 100644 index 4f8a707..0000000 --- a/constants_raw.txt +++ /dev/null @@ -1,425 +0,0 @@ -import DefaultIndexTemplateVue from '@/views/view/indexTemplate/DefaultIndexTemplate.vue'; -import { defineAsyncComponent, ref, markRaw } from 'vue'; - -const debugAPI = - import.meta.env.VITE_API == 'dev' - ? import.meta.env.VITE_DEBUG_DEV_API - : import.meta.env.VITE_DEBUG_RELEASE_API; -const releseAPI = `https://vtsuru.suki.club/`; -const failoverAPI = `https://failover-api.vtsuru.suki.club/`; - -export const isBackendUsable = ref(true); -export const isDev = import.meta.env.MODE === 'development'; -// @ts-ignore -export const isTauri = () => window.__TAURI__ !== undefined || window.__TAURI_INTERNAL__ !== undefined || '__TAURI__' in window; - -export const AVATAR_URL = 'https://workers.vrp.moe/api/bilibili/avatar/'; -export const FILE_BASE_URL = 'https://files.vtsuru.suki.club'; -export const IMGUR_URL = FILE_BASE_URL + '/imgur/'; -export const THINGS_URL = FILE_BASE_URL + '/things/'; -export const apiFail = ref(false); - -export const BASE_URL = - process.env.NODE_ENV === 'development' - ? debugAPI - : apiFail.value - ? failoverAPI - : releseAPI; -export const BASE_API_URL = BASE_URL + 'api/'; -export const FETCH_API = 'https://fetch.vtsuru.live/'; -export const BASE_HUB_URL = - (process.env.NODE_ENV === 'development' - ? debugAPI - : apiFail.value - ? failoverAPI - : releseAPI) + 'hub/'; - -export const TURNSTILE_KEY = '0x4AAAAAAAETUSAKbds019h0'; - -export const CURRENT_HOST = `${window.location.protocol}//${window.location.host}/`; -export const CN_HOST = 'https://vtsuru.suki.club/'; - -export const USER_API_URL = BASE_API_URL + 'user/'; -export const ACCOUNT_API_URL = BASE_API_URL + 'account/'; -export const BILI_API_URL = BASE_API_URL + 'bili/'; -export const SONG_API_URL = BASE_API_URL + 'song-list/'; -export const NOTIFACTION_API_URL = BASE_API_URL + 'notification/'; -export const QUESTION_API_URL = BASE_API_URL + 'qa/'; -export const LOTTERY_API_URL = BASE_API_URL + 'lottery/'; -export const HISTORY_API_URL = BASE_API_URL + 'history/'; -export const SCHEDULE_API_URL = BASE_API_URL + 'schedule/'; -export const VIDEO_COLLECT_API_URL = BASE_API_URL + 'video-collect/'; -export const OPEN_LIVE_API_URL = BASE_API_URL + 'open-live/'; -export const SONG_REQUEST_API_URL = BASE_API_URL + 'live-request/'; -export const QUEUE_API_URL = BASE_API_URL + 'queue/'; -export const EVENT_API_URL = BASE_API_URL + 'event/'; -export const LIVE_API_URL = BASE_API_URL + 'live/'; -export const FEEDBACK_API_URL = BASE_API_URL + 'feedback/'; -export const MUSIC_REQUEST_API_URL = BASE_API_URL + 'music-request/'; -export const VTSURU_API_URL = BASE_API_URL + 'vtsuru/'; -export const POINT_API_URL = BASE_API_URL + 'point/'; -export const BILI_AUTH_API_URL = BASE_API_URL + 'bili-auth/'; -export const FORUM_API_URL = BASE_API_URL + 'forum/'; -export const USER_INDEX_API_URL = BASE_API_URL + 'user-index/'; -export const ANALYZE_API_URL = BASE_API_URL + 'analyze/'; - -export type TemplateMapType = { - [key: string]: { - name: string; - settingName?: string; - component: any; - }; -}; -export const ScheduleTemplateMap: TemplateMapType = { - '': { - name: '默认', - //settingName: 'Template.Schedule.Default', - component: markRaw(defineAsyncComponent( - () => import('@/views/view/scheduleTemplate/DefaultScheduleTemplate.vue') - )) - }, - pinky: { - name: '粉粉', - //settingName: 'Template.Schedule.Pinky', - component: markRaw(defineAsyncComponent( - () => import('@/views/view/scheduleTemplate/PinkySchedule.vue') - )) - }, - kawaii: { - name: '可爱?, - //settingName: 'Template.Schedule.Kawaii', - component: markRaw(defineAsyncComponent( - () => import('@/views/view/scheduleTemplate/KawaiiScheduleTemplate.vue') - )) - } -}; -export const SongListTemplateMap: TemplateMapType = { - '': { - name: '默认', - //settingName: 'Template.SongList.Default', - component: markRaw(defineAsyncComponent( - () => import('@/views/view/songListTemplate/DefaultSongListTemplate.vue') - )) - }, - simple: { - name: '简?, - //settingName: 'Template.SongList.Simple', - component: markRaw(defineAsyncComponent( - () => import('@/views/view/songListTemplate/SimpleSongListTemplate.vue') - )) - }, - traditional: { - name: '列表', - settingName: 'Template.SongList.Traditional', - component: markRaw(defineAsyncComponent( - () => - import('@/views/view/songListTemplate/TraditionalSongListTemplate.vue') - )) - } -}; - -export const IndexTemplateMap: TemplateMapType = { - '': { - name: '默认', - //settingName: 'Template.Index.Default', - component: markRaw(DefaultIndexTemplateVue) - } -}; - -export const defaultDanmujiCss = `@import url("https://fonts.googleapis.com/css?family=Changa%20One"); -@import url("https://fonts.googleapis.com/css?family=Imprima"); - -/* Transparent background */ -yt-live-chat-renderer { - background-color: transparent !important; -} - -yt-live-chat-ticker-renderer { - background-color: transparent !important; - box-shadow: none !important; -} - -yt-live-chat-author-chip #author-name { - background-color: transparent !important; -} - -yt-live-chat-item-list-renderer #item-scroller { - overflow: hidden !important; -} - -yt-live-chat-interact-message-renderer #content, -yt-live-chat-text-message-renderer #content, -yt-live-chat-membership-item-renderer #content { - overflow: visible !important; -} - -/* Hide header and input */ -yt-live-chat-header-renderer, -yt-live-chat-message-input-renderer { - display: none !important; -} - -/* Hide unimportant messages */ -yt-live-chat-interact-message-renderer[is-deleted], -yt-live-chat-text-message-renderer[is-deleted], -yt-live-chat-membership-item-renderer[is-deleted] { - display: none !important; -} - -yt-live-chat-mode-change-message-renderer, -yt-live-chat-viewer-engagement-message-renderer, -yt-live-chat-restricted-participation-renderer { - display: none !important; -} - -yt-live-chat-text-message-renderer a, -yt-live-chat-membership-item-renderer a { - text-decoration: none !important; -} - -/* Global Setting */ -yt-live-chat-renderer { - -} -#item-scroller { - -} - -/* Reduce side padding */ -yt-live-chat-interact-message-renderer, -yt-live-chat-text-message-renderer { - padding-left: 4px !important; - padding-right: 4px !important; -} - -/* Outlines */ -yt-live-chat-renderer * { - text-shadow: -2px -2px #000000, -2px -1px #000000, -2px 0px #000000, -2px 1px #000000, -2px 2px #000000, -1px -2px #000000, -1px -1px #000000, -1px 0px #000000, -1px 1px #000000, -1px 2px #000000, 0px -2px #000000, 0px -1px #000000, 0px 0px #000000, 0px 1px #000000, 0px 2px #000000, 1px -2px #000000, 1px -1px #000000, 1px 0px #000000, 1px 1px #000000, 1px 2px #000000, 2px -2px #000000, 2px -1px #000000, 2px 0px #000000, 2px 1px #000000, 2px 2px #000000; - font-family: "Imprima", "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", SimHei, Arial, sans-serif; - font-size: 18px !important; - line-height: 20px !important; -} - -/* Avatars */ -yt-live-chat-interact-message-renderer #author-photo, -yt-live-chat-interact-message-renderer #author-photo img, -yt-live-chat-text-message-renderer #author-photo, -yt-live-chat-text-message-renderer #author-photo img, -yt-live-chat-paid-message-renderer #author-photo, -yt-live-chat-paid-message-renderer #author-photo img, -yt-live-chat-membership-item-renderer #author-photo, -yt-live-chat-membership-item-renderer #author-photo img { - - width: 24px !important; - height: 24px !important; - border-radius: 24px !important; - margin-right: 6px !important; -} - -/* Channel names */ -yt-live-chat-interact-message-renderer #content #author-name, -yt-live-chat-text-message-renderer #content #author-name { - -} -yt-live-chat-interact-message-renderer #author-name[type="owner"], -yt-live-chat-interact-message-renderer yt-live-chat-author-badge-renderer[type="owner"], -yt-live-chat-text-message-renderer #author-name[type="owner"], -yt-live-chat-text-message-renderer yt-live-chat-author-badge-renderer[type="owner"] { - color: #ffd600 !important; -} -yt-live-chat-interact-message-renderer #author-name[type="moderator"], -yt-live-chat-interact-message-renderer yt-live-chat-author-badge-renderer[type="moderator"], -yt-live-chat-text-message-renderer #author-name[type="moderator"], -yt-live-chat-text-message-renderer yt-live-chat-author-badge-renderer[type="moderator"] { - color: #5e84f1 !important; -} -yt-live-chat-interact-message-renderer #author-name[type="member"], -yt-live-chat-interact-message-renderer yt-live-chat-author-badge-renderer[type="member"], -yt-live-chat-text-message-renderer #author-name[type="member"], -yt-live-chat-text-message-renderer yt-live-chat-author-badge-renderer[type="member"] { - color: #0f9d58 !important; -} - -yt-live-chat-interact-message-renderer #author-name, -yt-live-chat-text-message-renderer #author-name { - - color: #cccccc !important; - font-family: "Changa One", "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", SimHei, Arial, sans-serif; - font-size: 20px !important; - line-height: 20px !important; -} - -/* Show colon */ -yt-live-chat-text-message-renderer #author-name::after { - content: ":"; - margin-left: 2px; -} - -/* Hide badges */ -yt-live-chat-interact-message-renderer #chat-badges, -yt-live-chat-text-message-renderer #chat-badges { - - vertical-align: text-top !important; -} -img.yt-live-chat-author-badge-renderer, yt-icon.yt-live-chat-author-badge-renderer { - width: 20px; - height: 20px; -} - -/* Medal */ -yt-live-chat-author-medal-renderer { - display: none; - -} -yt-live-chat-author-medal-renderer[is-fan-group] { - display: flex; -} -#medal-name.yt-live-chat-author-medal-renderer { - - font-size: 14px !important; - line-height: 14px !important; -} - -#medal-level.yt-live-chat-author-medal-renderer { - - font-size: 14px !important; - line-height: 14px !important; -} - - -/* Messages */ -yt-live-chat-interact-message-renderer #message, -yt-live-chat-interact-message-renderer #message *, -yt-live-chat-text-message-renderer #message, -yt-live-chat-text-message-renderer #message * { - color: #ffffff !important; - font-family: "Imprima", "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", SimHei, Arial, sans-serif; - font-size: 18px !important; - line-height: 18px !important; -} - -yt-live-chat-text-message-renderer #image-and-message { - display: inline !important; - overflow: visible !important; -} - - - - -yt-live-chat-text-message-renderer #message { - display: inline !important; - overflow: visible !important; -} - -yt-live-chat-text-message-renderer #image-and-message .emoji { - width: auto !important; - height: 48px !important; -} - -#image-and-message img[display="block"] { - border-radius: 4px; -} - -#image-and-message img[display="inline"] { - position: relative; - top: 3px; - border-radius: 0px; -} - -/* Timestamps */ - - - -/* Background colors */ -body { - overflow: hidden; - background-color: rgba(0, 0, 0, 0); -} - -yt-live-chat-text-message-renderer, -yt-live-chat-text-message-renderer[is-highlighted] { - background-color: rgba(204, 204, 204, 0) !important; -} - -yt-live-chat-text-message-renderer[author-type="owner"], -yt-live-chat-text-message-renderer[author-type="owner"][is-highlighted] { - background-color: rgba(255, 214, 0, 0) !important; -} - -yt-live-chat-text-message-renderer[author-type="moderator"], -yt-live-chat-text-message-renderer[author-type="moderator"][is-highlighted] { - background-color: rgba(94, 132, 241, 0) !important; -} - -yt-live-chat-text-message-renderer[author-type="member"], -yt-live-chat-text-message-renderer[author-type="member"][is-highlighted] { - background-color: rgba(15, 157, 88, 0) !important; -} - -/* SuperChat/Fan Funding Messages */ -yt-live-chat-paid-message-renderer { - margin: 4px 0 !important; -} - -yt-live-chat-paid-message-renderer #author-name, -yt-live-chat-paid-message-renderer #author-name *, -yt-live-chat-membership-item-renderer #header-content-inner-column, -yt-live-chat-membership-item-renderer #header-content-inner-column * { - color: #ffffff !important; - font-family: "Changa One", "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", SimHei, Arial, sans-serif; - font-size: 20px !important; - line-height: 20px !important; -} - -yt-live-chat-paid-message-renderer #purchase-amount, -yt-live-chat-paid-message-renderer #purchase-amount *, -yt-live-chat-membership-item-renderer #header-subtext, -yt-live-chat-membership-item-renderer #header-subtext * { - color: #ffffff !important; - font-family: "Imprima", "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", SimHei, Arial, sans-serif; - font-size: 18px !important; - line-height: 18px !important; -} - -yt-live-chat-paid-message-renderer #content, -yt-live-chat-paid-message-renderer #content * { - color: #ffffff !important; - font-family: "Imprima", "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", SimHei, Arial, sans-serif; - font-size: 18px !important; - line-height: 18px !important; -} - -yt-live-chat-membership-item-renderer #card, -yt-live-chat-membership-item-renderer #header { - background-color: #0f9d58 !important; - margin: 4px 0 !important; -} - -yt-live-chat-ticker-renderer { - display: none !important; -} - -/* SuperChat Ticker */ -yt-live-chat-ticker-paid-message-item-renderer, -yt-live-chat-ticker-paid-message-item-renderer *, -yt-live-chat-ticker-sponsor-item-renderer, -yt-live-chat-ticker-sponsor-item-renderer * { - color: #ffffff !important; - font-family: "Imprima", "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", SimHei, Arial, sans-serif; -} - - - -/* Animation */ -@keyframes anim { - -} - -yt-live-chat-interact-message-renderer, -yt-live-chat-text-message-renderer, -yt-live-chat-membership-item-renderer, -yt-live-chat-paid-message-renderer { - animation: anim 0ms; - animation-fill-mode: both; -} -` diff --git a/package.json b/package.json index 8583ae5..28b1bbc 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "@vueuse/router": "^13.9.0", "@wangeditor/editor": "^5.1.23", "@wangeditor/editor-for-vue": "^5.1.12", - "bilibili-live-ws": "^6.3.1", + "bilibili-live-danmaku": "^0.7.14", "cropperjs": "^2.0.1", "crypto-js": "^4.2.0", "date-fns": "^4.1.0", @@ -55,7 +55,7 @@ "md5": "^2.3.0", "mitt": "^3.0.1", "monaco-editor": "^0.53.0", - "naive-ui": "^2.43.1", + "naive-ui": "2.42.0", "nanoid": "^5.1.6", "peerjs": "^1.5.5", "pinia": "^3.0.3", diff --git a/src/client/ClientFetcher.vue b/src/client/ClientFetcher.vue index 5e0cef7..8b3691d 100644 --- a/src/client/ClientFetcher.vue +++ b/src/client/ClientFetcher.vue @@ -50,6 +50,7 @@ import { NAlert, NButton, NCard, + NDataTable, NDescriptions, NDescriptionsItem, NDivider, @@ -65,7 +66,6 @@ import { NQrCode, NRadioButton, NRadioGroup, - NScrollbar, NSpin, NStatistic, NTabPane, @@ -75,7 +75,8 @@ import { NTooltip, useMessage, } from 'naive-ui' -import { computed, nextTick, onMounted, onUnmounted, ref, shallowRef, watch } from 'vue' +import type { DataTableColumns } from 'naive-ui' +import { computed, h, nextTick, onMounted, onUnmounted, ref, shallowRef, watch } from 'vue' import VChart from 'vue-echarts' import { useAccount } from '@/api/account' import { useWebFetcher } from '@/store/useWebFetcher' @@ -238,6 +239,60 @@ const sortedTodayTypes = computed(() => { .sort(([, countA], [, countB]) => countB - countA) }) +type TodayTypeRow = { + key: string + rank: number + type: string + count: number +} + +const todayTypeColumns: DataTableColumns = [ + { + title: '排名', + key: 'rank', + align: 'center', + width: 72, + }, + { + title: '类型', + key: 'type', + minWidth: 160, + ellipsis: { + tooltip: true, + }, + render: row => h( + NTag, + { + size: 'small', + type: 'info', + bordered: false, + style: 'max-width: 100%; justify-content: flex-start;', + }, + { + default: () => row.type, + }, + ), + }, + { + title: '事件数', + key: 'count', + align: 'right', + width: 120, + render: row => row.count.toLocaleString(), + }, +] + +const todayTypeTableData = computed(() => { + return sortedTodayTypes.value.map(([type, count], index) => ({ + key: type, + rank: index + 1, + type, + count, + })) +}) + +const todayTypeRowKey = (row: TodayTypeRow) => row.key + // Login Status (Computed from original snippet) const loginStatusString = computed(() => { switch (loginStatus.value) { @@ -1039,6 +1094,7 @@ onUnmounted(() => { @@ -1055,6 +1111,7 @@ onUnmounted(() => { @@ -1123,36 +1180,26 @@ onUnmounted(() => { 类型明细: - -

+
+ - +
@@ -1174,6 +1221,7 @@ onUnmounted(() => { v-if="historicalData.length > 0" ref="historyChart" :option="historyOption" + :manual-update="true" autoresize /> {