From 58aa41f525f59a80c5861adb8c064e7574e03470 Mon Sep 17 00:00:00 2001 From: booploops <49113086+booploops@users.noreply.github.com> Date: Wed, 15 Jun 2022 07:59:23 -0700 Subject: [PATCH] radio stations now display the current track --- src/renderer/main/vueapp.js | 34 +++++++++++++++++++++++++++----- src/renderer/views/pages/zoo.ejs | 2 ++ 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/renderer/main/vueapp.js b/src/renderer/main/vueapp.js index 660467d2..6a9a7c23 100644 --- a/src/renderer/main/vueapp.js +++ b/src/renderer/main/vueapp.js @@ -922,6 +922,15 @@ const app = new Vue({ } }) + this.mk.addEventListener(MusicKit.Events.timedMetadataDidChange, (e) => { + app.mk.nowPlayingItem.attributes.name = e.title + app.mk.nowPlayingItem.attributes.artistName = e.performer + app.mk.nowPlayingItem.attributes.albumName = e.album + app.currentArtUrl = e.links[0].url + app.mk.nowPlayingItem._songId = e._adamId ? e._adamId : -1 + app.mk.nowPlayingItem.id = e._adamId ? e._adamId : -1 + }) + this.mk.addEventListener(MusicKit.Events.nowPlayingItemDidChange, (a) => { if (self.$refs.queue) { self.$refs.queue.updateQueue(); @@ -1993,14 +2002,21 @@ const app = new Vue({ }, async getNowPlayingItemDetailed(target) { + let nowPlayingItem = JSON.parse(JSON.stringify(this.mk.nowPlayingItem)) + if(nowPlayingItem.type === "radioStation" && app.mk.nowPlayingItem.id !== -1) { + nowPlayingItem.playParams = {kind: "songs"} + nowPlayingItem.attributes.playParams.catalogId = app.mk.nowPlayingItem.id + nowPlayingItem.attributes.playParams.id = app.mk.nowPlayingItem.id + nowPlayingItem.id = app.mk.nowPlayingItem.id + } try { - let u = await app.mkapi(app.mk.nowPlayingItem.playParams.kind, - (app.mk.nowPlayingItem.songId == -1), - (app.mk.nowPlayingItem.songId != -1) ? app.mk.nowPlayingItem.songId : app.mk.nowPlayingItem["id"], + let u = await app.mkapi(nowPlayingItem.playParams.kind, + (nowPlayingItem.songId == -1), + (nowPlayingItem.songId != -1) ? nowPlayingItem.songId : nowPlayingItem["id"], { "include[songs]": "albums,artists", l: app.mklang }); app.searchAndNavigate(u.data.data[0], target) } catch (e) { - app.searchAndNavigate(app.mk.nowPlayingItem, target) + app.searchAndNavigate(nowPlayingItem, target) } }, async searchAndNavigate(item, target) { @@ -4323,7 +4339,15 @@ const app = new Vue({ this.showMenuPanel(menus[useMenu], event) try { - let result = await this.inLibrary([this.mk.nowPlayingItem]) + // if its a radio station, then change the attributes to match a song + const nowPlayingItem = JSON.parse(JSON.stringify(this.mk.nowPlayingItem)) + if(nowPlayingItem.type == "radioStation" && app.mk.nowPlayingItem.id != -1) { + nowPlayingItem.type = "song" + nowPlayingItem.attributes.playParams.catalogId = app.mk.nowPlayingItem.id + nowPlayingItem.attributes.playParams.id = app.mk.nowPlayingItem.id + nowPlayingItem.id = app.mk.nowPlayingItem.id + } + let result = await this.inLibrary([nowPlayingItem]) if (result[0].attributes.inLibrary) { menus.normal.items.find(x => x.id == 'addToLibrary').hidden = true menus.normal.items.find(x => x.id == 'removeFromLibrary').hidden = false diff --git a/src/renderer/views/pages/zoo.ejs b/src/renderer/views/pages/zoo.ejs index dcd6807d..b8c955b7 100644 --- a/src/renderer/views/pages/zoo.ejs +++ b/src/renderer/views/pages/zoo.ejs @@ -21,6 +21,8 @@ + +