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 @@
+
+