feat: 新的OpenAPI

This commit is contained in:
14Kay 2024-10-11 14:39:35 +08:00
parent cb16bd0324
commit 859575aedb
4 changed files with 38 additions and 0 deletions

View File

@ -2,6 +2,9 @@ import http from 'node:http'
import querystring from 'node:querystring' import querystring from 'node:querystring'
import type { Socket } from 'node:net' import type { Socket } from 'node:net'
import { getAddress } from '@common/utils/nodejs' 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 = { let status: LX.OpenAPI.Status = {
status: false, status: false,
@ -65,6 +68,7 @@ const handleSubscribePlayerStatus = (req: http.IncomingMessage, res: http.Server
const handleStartServer = async(port: number, ip: string) => new Promise<void>((resolve, reject) => { const handleStartServer = async(port: number, ip: string) => new Promise<void>((resolve, reject) => {
playerStatusKeys = Object.keys(global.lx.player_status) as SubscribeKeys[] playerStatusKeys = Object.keys(global.lx.player_status) as SubscribeKeys[]
const browserWindow = BrowserWindow.getFocusedWindow() as BrowserWindow;
httpServer = http.createServer((req, res): void => { httpServer = http.createServer((req, res): void => {
const [endUrl, query] = `/${req.url?.split('/').at(-1) ?? ''}`.split('?') const [endUrl, query] = `/${req.url?.split('/').at(-1) ?? ''}`.split('?')
let code let code
@ -117,6 +121,22 @@ const handleStartServer = async(port: number, ip: string) => new Promise<void>((
// </body> // </body>
// </html>` // </html>`
// break // 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': case '/lyric':
code = 200 code = 200
res.setHeader('Content-Type', 'text/plain; charset=utf-8') res.setHeader('Content-Type', 'text/plain; charset=utf-8')

View File

@ -1,2 +1,3 @@
export * from './action' export * from './action'
export * from './timeoutStop' export * from './timeoutStop'
export * from './registerRendererEvents'

View File

@ -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)
}
}

View File

@ -10,6 +10,7 @@ import { onBeforeUnmount } from '@common/utils/vueTools'
import { appSetting } from '@renderer/store/setting' import { appSetting } from '@renderer/store/setting'
import { playMusicInfo } from '@renderer/store/player/state' import { playMusicInfo } from '@renderer/store/player/state'
import { initDislikeInfo, registerRemoteDislikeAction } from '@renderer/core/dislikeList' import { initDislikeInfo, registerRemoteDislikeAction } from '@renderer/core/dislikeList'
import { registerPlayerAction } from '@renderer/core/player/'
const initPrevPlayInfo = async() => { const initPrevPlayInfo = async() => {
const info = await getPlayInfo() const info = await getPlayInfo()
@ -34,10 +35,12 @@ export default () => {
let unregister: null | (() => void) = null let unregister: null | (() => void) = null
let unregisterDislikeEvent: null | (() => void) = null let unregisterDislikeEvent: null | (() => void) = null
let unregisterPlayerEvent: null | (() => void) = null
onBeforeUnmount(() => { onBeforeUnmount(() => {
if (unregister) unregister() if (unregister) unregister()
if (unregisterDislikeEvent) unregisterDislikeEvent() if (unregisterDislikeEvent) unregisterDislikeEvent()
if (unregisterPlayerEvent) unregisterPlayerEvent()
}) })
return async() => { return async() => {
@ -52,6 +55,7 @@ export default () => {
}) })
window.lxData.userLists = await getUserLists() // 获取用户列表 window.lxData.userLists = await getUserLists() // 获取用户列表
unregisterDislikeEvent = registerRemoteDislikeAction() unregisterDislikeEvent = registerRemoteDislikeAction()
unregisterPlayerEvent = registerPlayerAction() // 注册播放器相关操作
await initDislikeInfo() // 获取不喜欢列表 await initDislikeInfo() // 获取不喜欢列表
await initPrevPlayInfo().catch(err => { await initPrevPlayInfo().catch(err => {
log.error(err) log.error(err)