diff --git a/src/main/modules/openApi/index.ts b/src/main/modules/openApi/index.ts index 342caa1f..2c5f184e 100644 --- a/src/main/modules/openApi/index.ts +++ b/src/main/modules/openApi/index.ts @@ -2,6 +2,9 @@ import http from 'node:http' import querystring from 'node:querystring' import type { Socket } from 'node:net' import { getAddress } from '@common/utils/nodejs' +import { mainSend } from '@common/mainIpc' +import { BrowserWindow } from 'electron' +import { PLAYER_EVENT_NAME } from '@common/ipcNames' let status: LX.OpenAPI.Status = { status: false, @@ -65,6 +68,7 @@ const handleSubscribePlayerStatus = (req: http.IncomingMessage, res: http.Server const handleStartServer = async(port: number, ip: string) => new Promise((resolve, reject) => { playerStatusKeys = Object.keys(global.lx.player_status) as SubscribeKeys[] + const browserWindow = BrowserWindow.getFocusedWindow() as BrowserWindow; httpServer = http.createServer((req, res): void => { const [endUrl, query] = `/${req.url?.split('/').at(-1) ?? ''}`.split('?') let code @@ -117,6 +121,22 @@ const handleStartServer = async(port: number, ip: string) => new Promise(( // // ` // break + case '/play': + code = 200 + res.setHeader('Content-Type', 'text/plain; charset=utf-8') + res.setHeader('Access-Control-Allow-Origin', '*') + msg = 'OK' + mainSend(browserWindow, PLAYER_EVENT_NAME.player_play) + break + + case '/pause': + code = 200 + res.setHeader('Content-Type', 'text/plain; charset=utf-8') + res.setHeader('Access-Control-Allow-Origin', '*') + msg = 'OK' + mainSend(browserWindow, PLAYER_EVENT_NAME.player_pause) + break + case '/lyric': code = 200 res.setHeader('Content-Type', 'text/plain; charset=utf-8') diff --git a/src/renderer/core/player/index.ts b/src/renderer/core/player/index.ts index a63dbe4d..27b1c2ca 100644 --- a/src/renderer/core/player/index.ts +++ b/src/renderer/core/player/index.ts @@ -1,2 +1,3 @@ export * from './action' export * from './timeoutStop' +export * from './registerRendererEvents' diff --git a/src/renderer/core/player/registerRendererEvents.ts b/src/renderer/core/player/registerRendererEvents.ts new file mode 100644 index 00000000..48167645 --- /dev/null +++ b/src/renderer/core/player/registerRendererEvents.ts @@ -0,0 +1,13 @@ +import { pause, play } from '@renderer/core/player/index' +import { PLAYER_EVENT_NAME } from '@common/ipcNames' +import { rendererOff, rendererOn } from '@common/rendererIpc' + +export const registerPlayerAction = () => { + rendererOn(PLAYER_EVENT_NAME.player_play, play) + rendererOn(PLAYER_EVENT_NAME.player_pause, pause) + + return () => { + rendererOff(PLAYER_EVENT_NAME.player_play, play) + rendererOff(PLAYER_EVENT_NAME.player_pause, pause) + } +} diff --git a/src/renderer/core/useApp/useDataInit.ts b/src/renderer/core/useApp/useDataInit.ts index 98ce2912..cc9e7a71 100644 --- a/src/renderer/core/useApp/useDataInit.ts +++ b/src/renderer/core/useApp/useDataInit.ts @@ -10,6 +10,7 @@ import { onBeforeUnmount } from '@common/utils/vueTools' import { appSetting } from '@renderer/store/setting' import { playMusicInfo } from '@renderer/store/player/state' import { initDislikeInfo, registerRemoteDislikeAction } from '@renderer/core/dislikeList' +import { registerPlayerAction } from '@renderer/core/player/' const initPrevPlayInfo = async() => { const info = await getPlayInfo() @@ -34,10 +35,12 @@ export default () => { let unregister: null | (() => void) = null let unregisterDislikeEvent: null | (() => void) = null + let unregisterPlayerEvent: null | (() => void) = null onBeforeUnmount(() => { if (unregister) unregister() if (unregisterDislikeEvent) unregisterDislikeEvent() + if (unregisterPlayerEvent) unregisterPlayerEvent() }) return async() => { @@ -52,6 +55,7 @@ export default () => { }) window.lxData.userLists = await getUserLists() // 获取用户列表 unregisterDislikeEvent = registerRemoteDislikeAction() + unregisterPlayerEvent = registerPlayerAction() // 注册播放器相关操作 await initDislikeInfo() // 获取不喜欢列表 await initPrevPlayInfo().catch(err => { log.error(err)