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',