diff --git a/src/plugins/api-server/backend/routes/control.ts b/src/plugins/api-server/backend/routes/control.ts index fccf12dc..9755bab0 100644 --- a/src/plugins/api-server/backend/routes/control.ts +++ b/src/plugins/api-server/backend/routes/control.ts @@ -754,8 +754,8 @@ export const register = ( return ctx.body(null); }); app.openapi(routes.search, async (ctx) => { - const { query } = ctx.req.valid('json'); - const response = await controller.search(query); + const { query, params, continuation } = ctx.req.valid('json'); + const response = await controller.search(query, params, continuation); ctx.status(200); return ctx.json(response as object); diff --git a/src/plugins/api-server/backend/scheme/search.ts b/src/plugins/api-server/backend/scheme/search.ts index 5dc8c5c3..3f854772 100644 --- a/src/plugins/api-server/backend/scheme/search.ts +++ b/src/plugins/api-server/backend/scheme/search.ts @@ -2,4 +2,6 @@ import { z } from '@hono/zod-openapi'; export const SearchSchema = z.object({ query: z.string(), + params: z.string().optional(), + continuation: z.string().optional(), }); diff --git a/src/providers/song-controls.ts b/src/providers/song-controls.ts index e03aa44a..45f71569 100644 --- a/src/providers/song-controls.ts +++ b/src/providers/song-controls.ts @@ -134,12 +134,12 @@ export default (win: BrowserWindow) => { }, clearQueue: () => win.webContents.send('ytmd:clear-queue'), - search: (query: string) => + search: (query: string, params?: string, continuation?: string) => new Promise((resolve) => { ipcMain.once('ytmd:search-results', (_, result) => { resolve(result as string); }); - win.webContents.send('ytmd:search', query); + win.webContents.send('ytmd:search', query, params, continuation); }), }; }; diff --git a/src/renderer.ts b/src/renderer.ts index a6d8a1a9..3488e84b 100644 --- a/src/renderer.ts +++ b/src/renderer.ts @@ -277,20 +277,25 @@ async function onApiLoaded() { }); }); - window.ipcRenderer.on('ytmd:search', async (_, query: string) => { - const app = document.querySelector('ytmusic-app'); - const searchBox = - document.querySelector('ytmusic-search-box'); + window.ipcRenderer.on( + 'ytmd:search', + async (_, query: string, params?: string, continuation?: string) => { + const app = document.querySelector('ytmusic-app'); + const searchBox = + document.querySelector('ytmusic-search-box'); - if (!app || !searchBox) return; + if (!app || !searchBox) return; - const result = await app.networkManager.fetch('/search', { - query, - suggestStats: searchBox.getSearchboxStats(), - }); + const result = await app.networkManager.fetch('/search', { + query, + params, + continuation, + suggestStats: searchBox.getSearchboxStats(), + }); - window.ipcRenderer.send('ytmd:search-results', result); - }); + window.ipcRenderer.send('ytmd:search-results', result); + }, + ); const video = document.querySelector('video')!; const audioContext = new AudioContext();