From b44bd0be32782773a4559311a5fa393bff032dc9 Mon Sep 17 00:00:00 2001 From: Fabio Manganiello Date: Tue, 16 Jul 2024 03:48:45 +0200 Subject: [PATCH] [Media UI] Download Audio support. --- .../src/components/panels/Media/Browser.vue | 2 ++ .../src/components/panels/Media/Index.vue | 25 +++++++++++++------ .../src/components/panels/Media/Item.vue | 3 +++ .../panels/Media/Providers/Mixin.vue | 1 + .../panels/Media/Providers/YouTube.vue | 3 +++ .../Media/Providers/YouTube/Channel.vue | 2 ++ .../panels/Media/Providers/YouTube/Feed.vue | 2 ++ .../Media/Providers/YouTube/Playlist.vue | 2 ++ .../Media/Providers/YouTube/Playlists.vue | 2 ++ .../Media/Providers/YouTube/Subscriptions.vue | 2 ++ .../src/components/panels/Media/Results.vue | 5 +++- 11 files changed, 40 insertions(+), 9 deletions(-) diff --git a/platypush/backend/http/webapp/src/components/panels/Media/Browser.vue b/platypush/backend/http/webapp/src/components/panels/Media/Browser.vue index adecd59797..b224ed6b4d 100644 --- a/platypush/backend/http/webapp/src/components/panels/Media/Browser.vue +++ b/platypush/backend/http/webapp/src/components/panels/Media/Browser.vue @@ -28,6 +28,7 @@ @add-to-playlist="$emit('add-to-playlist', $event)" @back="back" @download="$emit('download', $event)" + @download-audio="$emit('download-audio', $event)" @path-change="$emit('path-change', $event)" @play="$emit('play', $event)" /> @@ -50,6 +51,7 @@ export default { 'back', 'create-playlist', 'download', + 'download-audio', 'path-change', 'play', 'remove-from-playlist', diff --git a/platypush/backend/http/webapp/src/components/panels/Media/Index.vue b/platypush/backend/http/webapp/src/components/panels/Media/Index.vue index 3a4a844849..3e1798bc7d 100644 --- a/platypush/backend/http/webapp/src/components/panels/Media/Index.vue +++ b/platypush/backend/http/webapp/src/components/panels/Media/Index.vue @@ -60,6 +60,7 @@ @play="play" @view="view" @download="download" + @download-audio="downloadAudio" v-if="selectedView === 'search'" /> @@ -82,6 +83,7 @@ @add-to-playlist="addToPlaylistItem = $event" @back="selectedResult = null" @download="download" + @download-audio="downloadAudio" @path-change="browserFilter = ''" @play="play($event)" v-else-if="selectedView === 'browser'" @@ -344,15 +346,19 @@ export default { window.open(ret.url, '_blank') }, - async download(item) { + async download(item, args) { switch (item.type) { case 'torrent': - return await this.downloadTorrent(item) + return await this.downloadTorrent(item, args) case 'youtube': - return await this.downloadYoutube(item) + return await this.downloadYoutube(item, args) } }, + async downloadAudio(item) { + await this.download(item, {onlyAudio: true}) + }, + async refresh() { this.selectedPlayer.status = await this.selectedPlayer.component.status(this.selectedPlayer) }, @@ -454,7 +460,7 @@ export default { return await this.request(`${torrentPlugin}.download`, {torrent: item.url || item}) }, - async downloadYoutube(item) { + async downloadYoutube(item, args) { if (!item?.url) { this.notify({ text: 'No YouTube URL available', @@ -464,10 +470,13 @@ export default { return } - await this.request( - `${this.pluginName}.download`, - {url: item.url}, - ) + const requestArgs = {url: item.url} + const onlyAudio = !!args?.onlyAudio + if (onlyAudio) { + requestArgs.only_audio = true + } + + await this.request(`${this.pluginName}.download`, requestArgs) }, async selectSubtitles(item) { diff --git a/platypush/backend/http/webapp/src/components/panels/Media/Item.vue b/platypush/backend/http/webapp/src/components/panels/Media/Item.vue index a313186b46..278956d2fd 100644 --- a/platypush/backend/http/webapp/src/components/panels/Media/Item.vue +++ b/platypush/backend/http/webapp/src/components/panels/Media/Item.vue @@ -17,6 +17,8 @@ v-if="item.type !== 'torrent'" /> + @@ -42,6 +43,7 @@ export default { emits: [ 'add-to-playlist', 'download', + 'download-audio', 'play', 'select', ], diff --git a/platypush/backend/http/webapp/src/components/panels/Media/Results.vue b/platypush/backend/http/webapp/src/components/panels/Media/Results.vue index c6a41c39d6..6c602fd9e2 100644 --- a/platypush/backend/http/webapp/src/components/panels/Media/Results.vue +++ b/platypush/backend/http/webapp/src/components/panels/Media/Results.vue @@ -14,7 +14,9 @@ @select="$emit('select', i)" @play="$emit('play', item)" @view="$emit('view', item)" - @download="$emit('download', item)" /> + @download="$emit('download', item)" + @download-audio="$emit('download-audio', item)" + /> @@ -37,6 +39,7 @@ export default { emits: [ 'add-to-playlist', 'download', + 'download-audio', 'open-channel', 'play', 'remove-from-playlist',