mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-16 20:52:06 +00:00
feat(api-server): add optional params for search (#3440)
This commit is contained in:
@ -754,8 +754,8 @@ export const register = (
|
|||||||
return ctx.body(null);
|
return ctx.body(null);
|
||||||
});
|
});
|
||||||
app.openapi(routes.search, async (ctx) => {
|
app.openapi(routes.search, async (ctx) => {
|
||||||
const { query } = ctx.req.valid('json');
|
const { query, params, continuation } = ctx.req.valid('json');
|
||||||
const response = await controller.search(query);
|
const response = await controller.search(query, params, continuation);
|
||||||
|
|
||||||
ctx.status(200);
|
ctx.status(200);
|
||||||
return ctx.json(response as object);
|
return ctx.json(response as object);
|
||||||
|
|||||||
@ -2,4 +2,6 @@ import { z } from '@hono/zod-openapi';
|
|||||||
|
|
||||||
export const SearchSchema = z.object({
|
export const SearchSchema = z.object({
|
||||||
query: z.string(),
|
query: z.string(),
|
||||||
|
params: z.string().optional(),
|
||||||
|
continuation: z.string().optional(),
|
||||||
});
|
});
|
||||||
|
|||||||
@ -134,12 +134,12 @@ export default (win: BrowserWindow) => {
|
|||||||
},
|
},
|
||||||
clearQueue: () => win.webContents.send('ytmd:clear-queue'),
|
clearQueue: () => win.webContents.send('ytmd:clear-queue'),
|
||||||
|
|
||||||
search: (query: string) =>
|
search: (query: string, params?: string, continuation?: string) =>
|
||||||
new Promise((resolve) => {
|
new Promise((resolve) => {
|
||||||
ipcMain.once('ytmd:search-results', (_, result) => {
|
ipcMain.once('ytmd:search-results', (_, result) => {
|
||||||
resolve(result as string);
|
resolve(result as string);
|
||||||
});
|
});
|
||||||
win.webContents.send('ytmd:search', query);
|
win.webContents.send('ytmd:search', query, params, continuation);
|
||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@ -277,20 +277,25 @@ async function onApiLoaded() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
window.ipcRenderer.on('ytmd:search', async (_, query: string) => {
|
window.ipcRenderer.on(
|
||||||
const app = document.querySelector<YouTubeMusicAppElement>('ytmusic-app');
|
'ytmd:search',
|
||||||
const searchBox =
|
async (_, query: string, params?: string, continuation?: string) => {
|
||||||
document.querySelector<SearchBoxElement>('ytmusic-search-box');
|
const app = document.querySelector<YouTubeMusicAppElement>('ytmusic-app');
|
||||||
|
const searchBox =
|
||||||
|
document.querySelector<SearchBoxElement>('ytmusic-search-box');
|
||||||
|
|
||||||
if (!app || !searchBox) return;
|
if (!app || !searchBox) return;
|
||||||
|
|
||||||
const result = await app.networkManager.fetch('/search', {
|
const result = await app.networkManager.fetch('/search', {
|
||||||
query,
|
query,
|
||||||
suggestStats: searchBox.getSearchboxStats(),
|
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 video = document.querySelector('video')!;
|
||||||
const audioContext = new AudioContext();
|
const audioContext = new AudioContext();
|
||||||
|
|||||||
Reference in New Issue
Block a user