From f270a97fe20eee6ebea66b9d6b3e4028adbfbab5 Mon Sep 17 00:00:00 2001 From: rxlee <82369493+rxlee123@users.noreply.github.com> Date: Sat, 27 Jun 2026 00:19:47 +0800 Subject: [PATCH 1/5] Add playPlaylist function to handle playlist playback --- src/providers/song-controls.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/providers/song-controls.ts b/src/providers/song-controls.ts index b2b14000c9..8b69357a1f 100644 --- a/src/providers/song-controls.ts +++ b/src/providers/song-controls.ts @@ -146,5 +146,16 @@ export const getSongControls = (win: BrowserWindow) => { }); win.webContents.send('peard:search', query, params, continuation); }), + playPlaylist: (playlistId: ArgsType, videoId?: ArgsType) => { + const pid = parseStringFromArgsType(playlistId); + const vid = videoId ? parseStringFromArgsType(videoId) : null; + if (pid) { + let url = `https://music.youtube.com/playlist?list=${pid}`; + if (vid) { + url += `&v=${vid}`; + } + win.webContents.loadURL(url); + } + }, }; }; From 69a69167470f0c9c3c55977da53f499378c53204 Mon Sep 17 00:00:00 2001 From: rxlee <82369493+rxlee123@users.noreply.github.com> Date: Sat, 27 Jun 2026 00:21:00 +0800 Subject: [PATCH 2/5] Update control.ts --- .../api-server/backend/routes/control.ts | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/plugins/api-server/backend/routes/control.ts b/src/plugins/api-server/backend/routes/control.ts index 48ab32a824..0d7e2ef595 100644 --- a/src/plugins/api-server/backend/routes/control.ts +++ b/src/plugins/api-server/backend/routes/control.ts @@ -65,6 +65,29 @@ const routes = { description: 'Success', }, }, + }), + playPlaylist: createRoute({ + method: 'post', + path: `/api/${API_VERSION}/playPlaylist`, + summary: 'play playlist', + description: 'Plays a playlist given its ID and optionally a video ID', + request: { + body: { + content: { + 'application/json': { + schema: z.object({ + playlistId: z.string().describe('Playlist ID'), + videoId: z.string().optional().describe('Video ID (optional)'), + }), + }, + }, + }, + }, + responses: { + 204: { + description: 'Success', + }, + }, }), pause: createRoute({ method: 'post', From 5fcbdb61129143c75967cb9fcfce144dcb435259 Mon Sep 17 00:00:00 2001 From: rxlee <82369493+rxlee123@users.noreply.github.com> Date: Sat, 27 Jun 2026 00:22:33 +0800 Subject: [PATCH 3/5] Add openapi route for playing a playlist --- src/plugins/api-server/backend/routes/control.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/plugins/api-server/backend/routes/control.ts b/src/plugins/api-server/backend/routes/control.ts index 0d7e2ef595..836717d72f 100644 --- a/src/plugins/api-server/backend/routes/control.ts +++ b/src/plugins/api-server/backend/routes/control.ts @@ -620,6 +620,13 @@ export const register = ( ctx.status(204); return ctx.body(null); }); + app.openapi(routes.playPlaylist, (ctx) => { + const { playlistId, videoId } = ctx.req.valid('json'); + controller.playPlaylist(playlistId, videoId); + + ctx.status(204); + return ctx.body(null); + }); app.openapi(routes.pause, (ctx) => { controller.pause(); From fef5ac9b76ff7f0b0c953f362c375e6258be6a64 Mon Sep 17 00:00:00 2001 From: rxlee <82369493+rxlee123@users.noreply.github.com> Date: Sat, 27 Jun 2026 00:30:05 +0800 Subject: [PATCH 4/5] Update build.yml --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 669bb428c7..f810d208b8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,6 +3,8 @@ name: Build Pear Desktop on: push: branches: [ master ] + workflow_dispatch: + permissions: {} From 0fd213c5a5cbd099f23640d0d7a94f36af05c5ec Mon Sep 17 00:00:00 2001 From: rxlee <82369493+rxlee123@users.noreply.github.com> Date: Sat, 27 Jun 2026 00:54:19 +0800 Subject: [PATCH 5/5] Update build.yml --- .github/workflows/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f810d208b8..6da136eec1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,7 +3,6 @@ name: Build Pear Desktop on: push: branches: [ master ] - workflow_dispatch: permissions: {}