first commit
This commit is contained in:
parent
6245f6e601
commit
76f640a088
26 changed files with 155 additions and 150 deletions
|
@ -169,7 +169,7 @@ export default class LastFMPlugin {
|
|||
|
||||
const res = await this._win.webContents.executeJavaScript(`
|
||||
(async () => {
|
||||
const subMk = await MusicKit.getInstance().api.v3.music("/v1/catalog/" + MusicKit.getInstance().storefrontId + "/songs/${songId}", {
|
||||
const subMk = await MusicKit.getInstance().api.music("/v1/catalog/" + MusicKit.getInstance().storefrontId + "/songs/${songId}", {
|
||||
include: {
|
||||
songs: ["artists"]
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@ const MusicKitInterop = {
|
|||
const id = nowPlayingItem?._songId ?? (nowPlayingItem?.songId ?? nowPlayingItem?.id)
|
||||
if (id != null && id != -1) {
|
||||
try{
|
||||
const query = await mk.api.v3.music(`/v1${(((nowPlayingItem?._songId ?? nowPlayingItem?.songId) != null) && ((nowPlayingItem?._songId ?? nowPlayingItem?.songId) != -1)) ? `/catalog/${mk.storefrontId}/` : `/me/library/`}songs/${id}?l=${app.mklang}`);
|
||||
const query = await mk.api.music(`/v1${(((nowPlayingItem?._songId ?? nowPlayingItem?.songId) != null) && ((nowPlayingItem?._songId ?? nowPlayingItem?.songId) != -1)) ? `/catalog/${mk.storefrontId}/` : `/me/library/`}songs/${id}?l=${app.mklang}`);
|
||||
if (query?.data?.data[0]){
|
||||
let attrs = query?.data?.data[0]?.attributes;
|
||||
if (attrs?.name) { nowPlayingItem.attributes.name = attrs?.name ?? ''}
|
||||
|
|
|
@ -203,7 +203,7 @@ const app = new Vue({
|
|||
},
|
||||
v3: {
|
||||
requestBody: {
|
||||
platform: "web"
|
||||
platform: "auto"
|
||||
}
|
||||
},
|
||||
tmpHeight: '',
|
||||
|
@ -408,7 +408,7 @@ const app = new Vue({
|
|||
if (item.includes("ra.")) {
|
||||
type = "stations"
|
||||
}
|
||||
let found = await app.mk.api.v3.music(`/v1/catalog/us/${type}/${item}`)
|
||||
let found = await app.mk.api.music(`/v1/catalog/us/${type}/${item}`)
|
||||
this.socialBadges.mediaItems.push(found.data.data[0])
|
||||
} catch (e) {
|
||||
|
||||
|
@ -458,7 +458,7 @@ const app = new Vue({
|
|||
}) {
|
||||
let self = this
|
||||
try {
|
||||
app.mk.api.v3.music("/v1/social/badging-map").then(data => {
|
||||
app.mk.api.music("/v1/social/badging-map").then(data => {
|
||||
self.socialBadges.badgeMap = data.data.results.badgingMap
|
||||
cb(data.data.results.badgingMap)
|
||||
})
|
||||
|
@ -521,7 +521,7 @@ const app = new Vue({
|
|||
})
|
||||
} else if ((self.selectedMediaItems[i].kind == "album" || self.selectedMediaItems[i].kind == "albums") && self.selectedMediaItems[i].isLibrary != true) {
|
||||
self.selectedMediaItems[i].kind = "albums"
|
||||
let res = await self.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/albums/${self.selectedMediaItems[i].id}/tracks`);
|
||||
let res = await self.mk.api.music(`/v1/catalog/${app.mk.storefrontId}/albums/${self.selectedMediaItems[i].id}/tracks`);
|
||||
let ids = res.data.data.map(function (i) {
|
||||
return {id: i.id, type: i.type}
|
||||
})
|
||||
|
@ -534,7 +534,7 @@ const app = new Vue({
|
|||
})
|
||||
} else if ((self.selectedMediaItems[i].kind == "library-album" || self.selectedMediaItems[i].kind == "library-albums") || (self.selectedMediaItems[i].kind == "album" && self.selectedMediaItems[i].isLibrary == true)) {
|
||||
self.selectedMediaItems[i].kind = "library-albums"
|
||||
let res = await self.mk.api.v3.music(`/v1/me/library/albums/${self.selectedMediaItems[i].id}/tracks`);
|
||||
let res = await self.mk.api.music(`/v1/me/library/albums/${self.selectedMediaItems[i].id}/tracks`);
|
||||
let ids = res.data.data.map(function (i) {
|
||||
return {id: i.id, type: i.type}
|
||||
})
|
||||
|
@ -561,7 +561,7 @@ const app = new Vue({
|
|||
})
|
||||
} else if ((self.selectedMediaItems[i].kind == "album" || self.selectedMediaItems[i].kind == "albums") && self.selectedMediaItems[i].isLibrary != true) {
|
||||
self.selectedMediaItems[i].kind = "albums"
|
||||
let res = await self.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/albums/${self.selectedMediaItems[i].id}/tracks`);
|
||||
let res = await self.mk.api.music(`/v1/catalog/${app.mk.storefrontId}/albums/${self.selectedMediaItems[i].id}/tracks`);
|
||||
let ids = res.data.data.map(function (i) {
|
||||
return {id: i.id, type: i.type}
|
||||
})
|
||||
|
@ -574,7 +574,7 @@ const app = new Vue({
|
|||
})
|
||||
} else if ((self.selectedMediaItems[i].kind == "library-album" || self.selectedMediaItems[i].kind == "library-albums") || (self.selectedMediaItems[i].kind == "album" && self.selectedMediaItems[i].isLibrary == true)) {
|
||||
self.selectedMediaItems[i].kind = "library-albums"
|
||||
let res = await self.mk.api.v3.music(`/v1/me/library/albums/${self.selectedMediaItems[i].id}/tracks`);
|
||||
let res = await self.mk.api.music(`/v1/me/library/albums/${self.selectedMediaItems[i].id}/tracks`);
|
||||
let ids = res.data.data.map(function (i) {
|
||||
return {id: i.id, type: i.type}
|
||||
})
|
||||
|
@ -588,7 +588,7 @@ const app = new Vue({
|
|||
|
||||
}
|
||||
this.modals.addToPlaylist = false
|
||||
await app.mk.api.v3.music(
|
||||
await app.mk.api.music(
|
||||
`/v1/me/library/playlists/${playlist_id}/tracks`, {}, {
|
||||
fetchOptions: {
|
||||
method: "POST",
|
||||
|
@ -612,8 +612,9 @@ const app = new Vue({
|
|||
this.setLzManual()
|
||||
clearTimeout(this.hangtimer)
|
||||
this.mk = MusicKit.getInstance()
|
||||
let needsReload = (typeof localStorage["music.ampwebplay.media-user-token"] == "undefined")
|
||||
this.mk.authorize().then(() => {
|
||||
let needsReload = (typeof localStorage["music.8r23j2835d.media-user-token"] == "undefined")
|
||||
this.mk.authorize().then((token) => {
|
||||
console.log(mytoken,'token')
|
||||
self.mkIsReady = true
|
||||
if (needsReload) {
|
||||
document.location.reload()
|
||||
|
@ -638,7 +639,7 @@ const app = new Vue({
|
|||
|
||||
try {
|
||||
// Set profile name
|
||||
this.chrome.userinfo = (await app.mk.api.v3.music(`/v1/me/social-profile`)).data.data[0]
|
||||
this.chrome.userinfo = (await app.mk.api.music(`/v1/me/social-profile`)).data.data[0]
|
||||
} catch (err) {
|
||||
}
|
||||
|
||||
|
@ -748,7 +749,7 @@ const app = new Vue({
|
|||
}
|
||||
break;
|
||||
case "history":
|
||||
let history = await app.mk.api.v3.music(`/v1/me/recent/played/tracks`, {l: app.mklang})
|
||||
let history = await app.mk.api.music(`/v1/me/recent/played/tracks`, {l: app.mklang})
|
||||
if (history.data.data.length > 0) {
|
||||
let lastItem = history.data.data[0]
|
||||
let kind = lastItem.attributes.playParams.kind;
|
||||
|
@ -822,7 +823,7 @@ const app = new Vue({
|
|||
} catch (e) {
|
||||
}
|
||||
if (previewURL == null && ((app.mk.nowPlayingItem?._songId ?? (app.mk.nowPlayingItem["songId"] ?? app.mk.nowPlayingItem.relationships.catalog.data[0].id)) != -1)) {
|
||||
app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/songs/${app.mk.nowPlayingItem?._songId ?? (app.mk.nowPlayingItem["songId"] ?? app.mk.nowPlayingItem.relationships.catalog.data[0].id)}`).then((response) => {
|
||||
app.mk.api.music(`/v1/catalog/${app.mk.storefrontId}/songs/${app.mk.nowPlayingItem?._songId ?? (app.mk.nowPlayingItem["songId"] ?? app.mk.nowPlayingItem.relationships.catalog.data[0].id)}`).then((response) => {
|
||||
previewURL = response.data.data[0].attributes.previews[0].url
|
||||
if (previewURL)
|
||||
ipcRenderer.send('getPreviewURL', previewURL)
|
||||
|
@ -1017,7 +1018,7 @@ const app = new Vue({
|
|||
},
|
||||
async editPlaylistFolder(id, name = app.getLz('term.newPlaylist')) {
|
||||
let self = this
|
||||
this.mk.api.v3.music(
|
||||
this.mk.api.music(
|
||||
`/v1/me/library/playlist-folders/${id}`, {}, {
|
||||
fetchOptions: {
|
||||
method: "PATCH",
|
||||
|
@ -1032,7 +1033,7 @@ const app = new Vue({
|
|||
},
|
||||
async editPlaylist(id, name = app.getLz('term.newPlaylist')) {
|
||||
let self = this
|
||||
this.mk.api.v3.music(
|
||||
this.mk.api.music(
|
||||
`/v1/me/library/playlists/${id}`, {}, {
|
||||
fetchOptions: {
|
||||
method: "PATCH",
|
||||
|
@ -1061,7 +1062,7 @@ const app = new Vue({
|
|||
if (tracks.length > 0) {
|
||||
request.tracks = tracks
|
||||
}
|
||||
app.mk.api.v3.music(`/v1/me/library/playlists`, {}, {
|
||||
app.mk.api.music(`/v1/me/library/playlists`, {}, {
|
||||
fetchOptions: {
|
||||
method: "POST",
|
||||
body: JSON.stringify({
|
||||
|
@ -1093,7 +1094,7 @@ const app = new Vue({
|
|||
deletePlaylist(id) {
|
||||
let self = this
|
||||
if (confirm(app.getLz('term.deletePlaylist'))) {
|
||||
app.mk.api.v3.music(`/v1/me/library/playlists/${id}`, {}, {
|
||||
app.mk.api.music(`/v1/me/library/playlists/${id}`, {}, {
|
||||
fetchOptions: {
|
||||
method: "DELETE"
|
||||
}
|
||||
|
@ -1117,20 +1118,20 @@ const app = new Vue({
|
|||
app.appRoute("collection-list")
|
||||
},
|
||||
async showArtistView(artist, title, view) {
|
||||
let response = (await app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/artists/${artist}/view/${view}?l=${this.mklang}`, {}, {includeResponseMeta: !0})).data
|
||||
let response = (await app.mk.api.music(`/v1/catalog/${app.mk.storefrontId}/artists/${artist}/view/${view}?l=${this.mklang}`, {}, {includeResponseMeta: !0})).data
|
||||
console.log(response)
|
||||
await this.showCollection(response, title, "artists")
|
||||
},
|
||||
async showRecordLabelView(label, title, view) {
|
||||
let response = (await app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/record-labels/${label}/view/${view}?l=${this.mklang}`)).data
|
||||
let response = (await app.mk.api.music(`/v1/catalog/${app.mk.storefrontId}/record-labels/${label}/view/${view}?l=${this.mklang}`)).data
|
||||
await this.showCollection(response, title, "record-labels")
|
||||
},
|
||||
async showSearchView(term, group, title) {
|
||||
|
||||
let requestBody = {
|
||||
platform: "web",
|
||||
platform: "auto",
|
||||
groups: group,
|
||||
types: "activities,albums,apple-curators,artists,curators,editorial-items,music-movies,music-videos,playlists,songs,stations,tv-episodes,uploaded-videos,record-labels",
|
||||
types: "activities,albums,apple-curators,artists,curators,editorial-items,music-videos,playlists,songs,stations,record-labels",
|
||||
limit: 25,
|
||||
relate: {
|
||||
editorialItems: ["contents"]
|
||||
|
@ -1155,7 +1156,7 @@ const app = new Vue({
|
|||
groups: group,
|
||||
l: this.mklang
|
||||
}
|
||||
let response = await app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/search?term=${term}`, requestBody, {
|
||||
let response = await app.mk.api.music(`/v1/catalog/${app.mk.storefrontId}/search?term=${term}`, requestBody, {
|
||||
includeResponseMeta: !0
|
||||
})
|
||||
|
||||
|
@ -1199,7 +1200,7 @@ const app = new Vue({
|
|||
let self = this
|
||||
const params = {
|
||||
include: "tracks",
|
||||
platform: "web",
|
||||
platform: "auto",
|
||||
"include[library-playlists]": "catalog,tracks",
|
||||
"fields[playlists]": "curatorName,playlistType,name,artwork,url,playParams",
|
||||
"include[library-songs]": "catalog,artists,albums,playParams,name,artwork,url",
|
||||
|
@ -1210,12 +1211,12 @@ const app = new Vue({
|
|||
if (!transient) {
|
||||
this.playlists.loadingState = 0;
|
||||
}
|
||||
app.mk.api.v3.music(`/v1/me/library/playlists/${id}`, params).then(res => {
|
||||
app.mk.api.music(`/v1/me/library/playlists/${id}`, params).then(res => {
|
||||
self.getPlaylistContinuous(res, transient)
|
||||
}).catch((e) => {
|
||||
console.log(e);
|
||||
try {
|
||||
app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/playlists/${id}`, params).then(res => {
|
||||
app.mk.api.music(`/v1/catalog/${app.mk.storefrontId}/playlists/${id}`, params).then(res => {
|
||||
self.getPlaylistContinuous(res, transient)
|
||||
})
|
||||
} catch (err) {
|
||||
|
@ -1286,7 +1287,7 @@ const app = new Vue({
|
|||
this.search.hints = []
|
||||
return
|
||||
}
|
||||
let hints = await (await app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/search/hints?term=${this.search.term}`)).data.results
|
||||
let hints = await (await app.mk.api.music(`/v1/catalog/${app.mk.storefrontId}/search/hints?term=${this.search.term}`)).data.results
|
||||
this.search.hints = hints ? hints.terms : []
|
||||
},
|
||||
getSongProgress() {
|
||||
|
@ -1366,7 +1367,7 @@ const app = new Vue({
|
|||
if (kind.toString().includes("apple-curator")) {
|
||||
kind = "appleCurator"
|
||||
app.getTypeFromID("appleCurator", (id), false, {
|
||||
platform: "web",
|
||||
platform: "auto",
|
||||
include: "grouping,playlists",
|
||||
extend: "editorialArtwork",
|
||||
"art[url]": "f"
|
||||
|
@ -1484,7 +1485,7 @@ const app = new Vue({
|
|||
}
|
||||
|
||||
if (artistId == "") {
|
||||
let artistQuery = (await app.mk.api.v3.music(`v1/catalog/${app.mk.storefrontId}/search?term=${item.attributes.artistName}`, {
|
||||
let artistQuery = (await app.mk.api.music(`v1/catalog/${app.mk.storefrontId}/search?term=${item.attributes.artistName}`, {
|
||||
limit: 1,
|
||||
types: 'artists'
|
||||
})).data.results;
|
||||
|
@ -1522,7 +1523,7 @@ const app = new Vue({
|
|||
|
||||
if (albumId == "") {
|
||||
try {
|
||||
let albumQuery = (await app.mk.api.v3.music(`v1/catalog/${app.mk.storefrontId}/search?term=${(item.attributes.albumName ?? item.attributes.name ?? "") + " " + (item.attributes.artistName ?? "")}`, {
|
||||
let albumQuery = (await app.mk.api.music(`v1/catalog/${app.mk.storefrontId}/search?term=${(item.attributes.albumName ?? item.attributes.name ?? "") + " " + (item.attributes.artistName ?? "")}`, {
|
||||
limit: 1,
|
||||
types: 'albums'
|
||||
})).data.results;
|
||||
|
@ -1546,7 +1547,7 @@ const app = new Vue({
|
|||
|
||||
if (labelId == "") {
|
||||
try {
|
||||
let labelQuery = (await app.mk.api.v3.music(`v1/catalog/${app.mk.storefrontId}/search?term=${item.attributes.recordLabel}`, {
|
||||
let labelQuery = (await app.mk.api.music(`v1/catalog/${app.mk.storefrontId}/search?term=${item.attributes.recordLabel}`, {
|
||||
limit: 1,
|
||||
types: 'record-labels'
|
||||
})).data.results;
|
||||
|
@ -1618,7 +1619,7 @@ const app = new Vue({
|
|||
// var playlistId = id
|
||||
// const params = {
|
||||
// include: "tracks",
|
||||
// platform: "web",
|
||||
// platform: "auto",
|
||||
// "include[library-playlists]": "catalog,tracks",
|
||||
// "fields[playlists]": "curatorName,playlistType,name,artwork,url",
|
||||
// "include[library-songs]": "catalog,artists,albums",
|
||||
|
@ -1927,9 +1928,9 @@ const app = new Vue({
|
|||
let truemethod = (!method.endsWith("s")) ? (method + "s") : method;
|
||||
try {
|
||||
if (library) {
|
||||
return await this.mk.api.v3.music(`v1/me/library/${truemethod}/${term.toString()}`, params, params2)
|
||||
return await this.mk.api.music(`v1/me/library/${truemethod}/${term.toString()}`, params, params2)
|
||||
} else {
|
||||
return await this.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/${truemethod}/${term.toString()}`, params, params2)
|
||||
return await this.mk.api.music(`/v1/catalog/${app.mk.storefrontId}/${truemethod}/${term.toString()}`, params, params2)
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
|
@ -1974,23 +1975,23 @@ const app = new Vue({
|
|||
"include[library-songs]": "catalog,artists,albums",
|
||||
"fields[artists]": "name,url,id",
|
||||
"fields[albums]": "name,url,id",
|
||||
platform: "web",
|
||||
platform: "auto",
|
||||
"fields[catalog]": "artistUrl,albumUrl",
|
||||
"fields[songs]": "artistName,artistUrl,artwork,contentRating,editorialArtwork,name,playParams,releaseDate,url",
|
||||
limit: 100,
|
||||
l: self.mklang
|
||||
}
|
||||
const safeparams = {
|
||||
"platform": "web",
|
||||
platform: "auto",
|
||||
"limit": 80
|
||||
}
|
||||
self.library.songs.downloadState = 1
|
||||
if (downloaded == null) {
|
||||
app.mk.api.v3.music(`/v1/me/library/songs/`, params).then((response) => {
|
||||
app.mk.api.music(`/v1/me/library/songs/`, params).then((response) => {
|
||||
processChunk(response.data)
|
||||
}).catch((error) => {
|
||||
console.log('safe loading');
|
||||
app.mk.api.v3.music(`/v1/me/library/songs/`, safeparams).then((response) => {
|
||||
app.mk.api.music(`/v1/me/library/songs/`, safeparams).then((response) => {
|
||||
processChunk(response.data)
|
||||
}).catch((error) => {
|
||||
console.log('safe loading failed', error)
|
||||
|
@ -2000,11 +2001,11 @@ const app = new Vue({
|
|||
})
|
||||
} else {
|
||||
if (downloaded.next != null) {
|
||||
app.mk.api.v3.music(downloaded.next, params).then((response) => {
|
||||
app.mk.api.music(downloaded.next, params).then((response) => {
|
||||
processChunk(response.data)
|
||||
}).catch((error) => {
|
||||
console.log('safe loading');
|
||||
app.mk.api.v3.music(downloaded.next, safeparams).then((response) => {
|
||||
app.mk.api.music(downloaded.next, safeparams).then((response) => {
|
||||
processChunk(response.data)
|
||||
}).catch((error) => {
|
||||
console.log('safe loading failed', error)
|
||||
|
@ -2078,14 +2079,14 @@ const app = new Vue({
|
|||
"include[library-albums]": "catalog,artists,albums",
|
||||
"fields[artists]": "name,url,id",
|
||||
"fields[albums]": "name,url,id",
|
||||
platform: "web",
|
||||
platform: "auto",
|
||||
"fields[catalog]": "artistUrl,albumUrl",
|
||||
"fields[albums]": "artistName,artistUrl,artwork,contentRating,editorialArtwork,name,playParams,releaseDate,url",
|
||||
limit: 100,
|
||||
l: self.mklang
|
||||
}
|
||||
const safeparams = {
|
||||
platform: "web",
|
||||
platform: "auto",
|
||||
limit: "60",
|
||||
"include[library-albums]": "artists",
|
||||
"include[library-artists]": "catalog",
|
||||
|
@ -2095,11 +2096,11 @@ const app = new Vue({
|
|||
"includeOnly": "catalog,artists"
|
||||
}
|
||||
if (downloaded == null) {
|
||||
app.mk.api.v3.music(`/v1/me/library/albums/`, params).then((response) => {
|
||||
app.mk.api.music(`/v1/me/library/albums/`, params).then((response) => {
|
||||
processChunk(response.data)
|
||||
}).catch((error) => {
|
||||
console.log('safe loading');
|
||||
app.mk.api.v3.music(`/v1/me/library/albums/`, safeparams).then((response) => {
|
||||
app.mk.api.music(`/v1/me/library/albums/`, safeparams).then((response) => {
|
||||
processChunk(response.data)
|
||||
}).catch((error) => {
|
||||
console.log('safe loading failed', error)
|
||||
|
@ -2109,11 +2110,11 @@ const app = new Vue({
|
|||
})
|
||||
} else {
|
||||
if (downloaded.next != null) {
|
||||
app.mk.api.v3.music(downloaded.next, params).then((response) => {
|
||||
app.mk.api.music(downloaded.next, params).then((response) => {
|
||||
processChunk(response.data)
|
||||
}).catch((error) => {
|
||||
console.log('safe loading');
|
||||
app.mk.api.v3.music(downloaded.next, safeparams).then((response) => {
|
||||
app.mk.api.music(downloaded.next, safeparams).then((response) => {
|
||||
processChunk(response.data)
|
||||
}).catch((error) => {
|
||||
console.log('safe loading failed', error);
|
||||
|
@ -2188,7 +2189,7 @@ const app = new Vue({
|
|||
// "include[library-artists]": "catalog,artists,albums",
|
||||
// "fields[artists]": "name,url,id",
|
||||
// "fields[albums]": "name,url,id",
|
||||
platform: "web",
|
||||
platform: "auto",
|
||||
// "fields[catalog]": "artistUrl,albumUrl",
|
||||
// "fields[artists]": "artistName,artistUrl,artwork,contentRating,editorialArtwork,name,playParams,releaseDate,url",
|
||||
limit: 100,
|
||||
|
@ -2196,15 +2197,15 @@ const app = new Vue({
|
|||
}
|
||||
const safeparams = {
|
||||
include: "catalog",
|
||||
platform: "web",
|
||||
platform: "auto",
|
||||
limit: 50,
|
||||
}
|
||||
if (downloaded == null) {
|
||||
app.mk.api.v3.music(`/v1/me/library/artists/`, params).then((response) => {
|
||||
app.mk.api.music(`/v1/me/library/artists/`, params).then((response) => {
|
||||
processChunk(response.data)
|
||||
}).catch((error) => {
|
||||
console.log('safe loading');
|
||||
app.mk.api.v3.music(`/v1/me/library/artists/`, safeparams).then((response) => {
|
||||
app.mk.api.music(`/v1/me/library/artists/`, safeparams).then((response) => {
|
||||
processChunk(response.data)
|
||||
}).catch((error) => {
|
||||
console.log('safe loading failed', error)
|
||||
|
@ -2215,11 +2216,11 @@ const app = new Vue({
|
|||
|
||||
} else {
|
||||
if (downloaded.next != null) {
|
||||
app.mk.api.v3.music(downloaded.next, params).then((response) => {
|
||||
app.mk.api.music(downloaded.next, params).then((response) => {
|
||||
processChunk(response.data)
|
||||
}).catch((error) => {
|
||||
console.log('safe loading');
|
||||
app.mk.api.v3.music(downloaded.next, safeparams).then((response) => {
|
||||
app.mk.api.music(downloaded.next, safeparams).then((response) => {
|
||||
processChunk(response.data)
|
||||
}).catch((error) => {
|
||||
console.log('safe loading failed', error)
|
||||
|
@ -2304,9 +2305,9 @@ const app = new Vue({
|
|||
return
|
||||
}
|
||||
try {
|
||||
this.listennow = (await this.mk.api.v3.music(`v1/me/recommendations?timezone=${encodeURIComponent(this.formatTimezoneOffset())}`, {
|
||||
this.listennow = (await this.mk.api.music(`v1/me/recommendations?timezone=${encodeURIComponent(this.formatTimezoneOffset())}`, {
|
||||
name: "listen-now",
|
||||
with: "friendsMix,library,social",
|
||||
with: "friendsMix,library",
|
||||
"art[social-profiles:url]": "c",
|
||||
"art[url]": "c,f",
|
||||
"omit[resource]": "autos",
|
||||
|
@ -2324,8 +2325,8 @@ const app = new Vue({
|
|||
"fields[artists]": ["name", "url"],
|
||||
"extend[stations]": ["airDate", "supportsAirTimeUpdates"],
|
||||
"meta[stations]": "inflectionPoints",
|
||||
types: "artists,albums,editorial-items,library-albums,library-playlists,music-movies,music-videos,playlists,stations,uploaded-audios,uploaded-videos,activities,apple-curators,curators,tv-shows,social-upsells",
|
||||
platform: "web",
|
||||
types: "artists,albums,editorial-items,library-albums,library-playlists,music-videos,playlists,stations,activities,apple-curators,curators",
|
||||
platform: "auto",
|
||||
l: this.mklang
|
||||
}, {
|
||||
includeResponseMeta: !0,
|
||||
|
@ -2346,9 +2347,9 @@ const app = new Vue({
|
|||
return
|
||||
}
|
||||
try {
|
||||
let browse = await app.mk.api.v3.music(`/v1/editorial/${app.mk.storefrontId}/groupings`, {
|
||||
platform: "web",
|
||||
name: "music",
|
||||
let browse = await app.mk.api.music(`/v1/editorial/${app.mk.storefrontId}/groupings`, {
|
||||
platform: "auto",
|
||||
// name: "music",
|
||||
"omit[resource:artists]": "relationships",
|
||||
"include[albums]": "artists",
|
||||
"include[songs]": "artists",
|
||||
|
@ -2371,8 +2372,8 @@ const app = new Vue({
|
|||
return
|
||||
}
|
||||
try {
|
||||
this.radio.personal = (await app.mk.api.v3.music(`/v1/me/recent/radio-stations`, {
|
||||
"platform": "web",
|
||||
this.radio.personal = (await app.mk.api.music(`/v1/me/recent/radio-stations`, {
|
||||
platform: "auto",
|
||||
"art[url]": "f",
|
||||
l: this.mklang
|
||||
})).data.data;
|
||||
|
@ -2386,7 +2387,7 @@ const app = new Vue({
|
|||
return
|
||||
}
|
||||
try {
|
||||
mfu = await app.mk.api.v3.music("/v1/me/library/playlists?platform=web&extend=editorialVideo&fields%5Bplaylists%5D=lastModifiedDate&filter%5Bfeatured%5D=made-for-you&include%5Blibrary-playlists%5D=catalog&fields%5Blibrary-playlists%5D=artwork%2Cname%2CplayParams%2CdateAdded")
|
||||
mfu = await app.mk.api.music("/v1/me/library/playlists?platform=auto&extend=editorialVideo&fields%5Bplaylists%5D=lastModifiedDate&filter%5Bfeatured%5D=made-for-you&include%5Blibrary-playlists%5D=catalog&fields%5Blibrary-playlists%5D=artwork%2Cname%2CplayParams%2CdateAdded")
|
||||
this.madeforyou = mfu.data
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
|
@ -2395,7 +2396,7 @@ const app = new Vue({
|
|||
},
|
||||
newPlaylistFolder(name = app.getLz('term.newPlaylistFolder')) {
|
||||
let self = this
|
||||
this.mk.api.v3.music(
|
||||
this.mk.api.music(
|
||||
"/v1/me/library/playlist-folders/", {}, {
|
||||
fetchOptions: {
|
||||
method: "POST",
|
||||
|
@ -2440,7 +2441,7 @@ const app = new Vue({
|
|||
const songID = (this.mk.nowPlayingItem != null) ? this.mk.nowPlayingItem["_songId"] ?? (this.mk.nowPlayingItem["songId"] ?? -1) : -1;
|
||||
// this.getMXM( trackName, artistName, 'en', duration);
|
||||
if (songID != -1) {
|
||||
this.mk.api.v3.music(`v1/catalog/${this.mk.storefrontId}/songs/${songID}/lyrics`)
|
||||
this.mk.api.music(`v1/catalog/${this.mk.storefrontId}/songs/${songID}/lyrics`)
|
||||
.then((response) => {
|
||||
this.lyricsMediaItem = response.data?.data[0]?.attributes["ttml"]
|
||||
this.parseTTML()
|
||||
|
@ -2457,7 +2458,7 @@ const app = new Vue({
|
|||
removeFromLibrary(kind, id) {
|
||||
let self = this
|
||||
let truekind = (!kind.endsWith("s")) ? (kind + "s") : kind;
|
||||
app.mk.api.v3.music(`v1/me/library/${truekind}/${id.toString()}`, {}, {
|
||||
app.mk.api.music(`v1/me/library/${truekind}/${id.toString()}`, {}, {
|
||||
fetchOptions: {
|
||||
method: "DELETE"
|
||||
}
|
||||
|
@ -3118,9 +3119,9 @@ const app = new Vue({
|
|||
if (term == "") {
|
||||
return
|
||||
}
|
||||
//this.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/search?term=${this.search.term}`
|
||||
this.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/search?term=${encodeURIComponent(this.search.term)}`, {
|
||||
types: "activities,albums,apple-curators,artists,curators,editorial-items,music-movies,music-videos,playlists,songs,stations,tv-episodes,uploaded-videos,record-labels",
|
||||
//this.mk.api.music(`/v1/catalog/${app.mk.storefrontId}/search?term=${this.search.term}`
|
||||
this.mk.api.music(`/v1/catalog/${app.mk.storefrontId}/search?term=${encodeURIComponent(this.search.term)}`, {
|
||||
types: "activities,albums,apple-curators,artists,curators,editorial-items,music-videos,playlists,songs,stations,record-labels",
|
||||
"relate[editorial-items]": "contents",
|
||||
"include[editorial-items]": "contents",
|
||||
"include[albums]": "artists",
|
||||
|
@ -3128,12 +3129,12 @@ const app = new Vue({
|
|||
"include[songs]": "artists,albums",
|
||||
"include[music-videos]": "artists",
|
||||
"extend": "artistUrl",
|
||||
"fields[artists]": "url,name,artwork,hero",
|
||||
"fields[artists]": "url,name,hero",
|
||||
"fields[albums]": "artistName,artistUrl,artwork,contentRating,editorialArtwork,name,playParams,releaseDate,url",
|
||||
"with": "serverBubbles,lyricHighlights",
|
||||
"art[url]": "c,f",
|
||||
"omit[resource]": "autos",
|
||||
"platform": "web",
|
||||
platform: "auto",
|
||||
limit: 25,
|
||||
l: this.mklang
|
||||
}).then(function (results) {
|
||||
|
@ -3141,16 +3142,16 @@ const app = new Vue({
|
|||
self.search.results = results.data.results
|
||||
})
|
||||
|
||||
await app.mk.api.v3.music(`v1/social/${app.mk.storefrontId}/search?term=${app.search.term}`, {
|
||||
types: ["playlists", "social-profiles"],
|
||||
limit: 25,
|
||||
with: ["serverBubbles", "lyricSnippet"],
|
||||
"art[url]": "f",
|
||||
"art[social-profiles:url]": "c"
|
||||
}, {includeResponseMeta: !0}).then(function (results) {
|
||||
results.data.results["meta"] = results.data.meta
|
||||
self.search.resultsSocial = results.data.results
|
||||
})
|
||||
// await app.mk.api.music(`v1/social/${app.mk.storefrontId}/search?term=${app.search.term}`, {
|
||||
// types: ["playlists", "social-profiles"],
|
||||
// limit: 25,
|
||||
// with: ["serverBubbles", "lyricSnippet"],
|
||||
// "art[url]": "f",
|
||||
// "art[social-profiles:url]": "c"
|
||||
// }, {includeResponseMeta: !0}).then(function (results) {
|
||||
// results.data.results["meta"] = results.data.meta
|
||||
// self.search.resultsSocial = results.data.results
|
||||
// })
|
||||
},
|
||||
async inLibrary(items = []) {
|
||||
let types = []
|
||||
|
@ -3182,7 +3183,7 @@ const app = new Vue({
|
|||
result[key] = item[key];
|
||||
return result;
|
||||
}, {});
|
||||
return (await this.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}`, {
|
||||
return (await this.mk.api.music(`/v1/catalog/${app.mk.storefrontId}`, {
|
||||
...{
|
||||
"omit[resource]": "autos",
|
||||
relate: "library",
|
||||
|
@ -3296,7 +3297,7 @@ const app = new Vue({
|
|||
} catch (e) {
|
||||
}
|
||||
} else {
|
||||
let data = await this.mk.api.v3.music(`/v1/me/library/songs/${this.mk.nowPlayingItem.id}`);
|
||||
let data = await this.mk.api.music(`/v1/me/library/songs/${this.mk.nowPlayingItem.id}`);
|
||||
data = data.data.data[0];
|
||||
if (data != null && data !== "" && data.attributes != null && data.attributes.artwork != null) {
|
||||
this.currentArtUrl = (data["attributes"]["artwork"]["url"] ?? '').replace('{w}', 50).replace('{h}', 50);
|
||||
|
@ -3320,7 +3321,7 @@ const app = new Vue({
|
|||
async setLibraryArt() {
|
||||
if (typeof this.mk.nowPlayingItem === "undefined") return;
|
||||
try {
|
||||
const data = await this.mk.api.v3.music(`/v1/me/library/songs/${this.mk.nowPlayingItem.id}`);
|
||||
const data = await this.mk.api.music(`/v1/me/library/songs/${this.mk.nowPlayingItem.id}`);
|
||||
data = data.data.data[0];
|
||||
|
||||
if (data != null && data !== "") {
|
||||
|
@ -3334,7 +3335,7 @@ const app = new Vue({
|
|||
async setLibraryArtBG() {
|
||||
if (typeof this.mk.nowPlayingItem === "undefined") return;
|
||||
try {
|
||||
const data = await this.mk.api.v3.music(`/v1/me/library/songs/${this.mk.nowPlayingItem.id}`);
|
||||
const data = await this.mk.api.music(`/v1/me/library/songs/${this.mk.nowPlayingItem.id}`);
|
||||
data = data.data.data[0];
|
||||
|
||||
if (data != null && data !== "") {
|
||||
|
@ -3372,7 +3373,7 @@ const app = new Vue({
|
|||
}
|
||||
id = item.id
|
||||
}
|
||||
let response = await this.mk.api.v3.music(`/v1/me/ratings/${type}?platform=web&ids=${type.includes('library') ? item.id : id}`)
|
||||
let response = await this.mk.api.music(`/v1/me/ratings/${type}?platform=auto&ids=${type.includes('library') ? item.id : id}`)
|
||||
if (response.data.data.length != 0) {
|
||||
let value = response.data.data[0].attributes.value
|
||||
return value
|
||||
|
@ -3389,7 +3390,7 @@ const app = new Vue({
|
|||
}
|
||||
id = item.id
|
||||
}
|
||||
this.mk.api.v3.music(`/v1/me/ratings/${type}/${id}`, {}, {
|
||||
this.mk.api.music(`/v1/me/ratings/${type}/${id}`, {}, {
|
||||
fetchOptions: {
|
||||
method: "PUT",
|
||||
body: JSON.stringify({
|
||||
|
@ -3410,7 +3411,7 @@ const app = new Vue({
|
|||
}
|
||||
id = item.id
|
||||
}
|
||||
this.mk.api.v3.music(`/v1/me/ratings/${type}/${id}`, {}, {
|
||||
this.mk.api.music(`/v1/me/ratings/${type}/${id}`, {}, {
|
||||
fetchOptions: {
|
||||
method: "PUT",
|
||||
body: JSON.stringify({
|
||||
|
@ -3431,7 +3432,7 @@ const app = new Vue({
|
|||
}
|
||||
id = item.id
|
||||
}
|
||||
this.mk.api.v3.music(`/v1/me/ratings/${type}/${id}`, {}, {
|
||||
this.mk.api.music(`/v1/me/ratings/${type}/${id}`, {}, {
|
||||
fetchOptions: {
|
||||
method: "DELETE",
|
||||
}
|
||||
|
@ -3506,7 +3507,7 @@ const app = new Vue({
|
|||
fetchPlaylist(id, callback) {
|
||||
// id can be found in playlist.attributes.playParams.globalId
|
||||
// this.mk.api.
|
||||
this.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/playlists/${id}`).then(res => {
|
||||
this.mk.api.music(`/v1/catalog/${app.mk.storefrontId}/playlists/${id}`).then(res => {
|
||||
callback(res.data.data[0])
|
||||
})
|
||||
|
||||
|
@ -3855,7 +3856,7 @@ const app = new Vue({
|
|||
let u = this.cfg.general.language;
|
||||
// use MusicKit.getInstance or crash
|
||||
try {
|
||||
let item = await MusicKit.getInstance().api.v3.music(`v1/storefronts/${app.mk.storefrontId}`)
|
||||
let item = await MusicKit.getInstance().api.music(`v1/storefronts/${app.mk.storefrontId}`)
|
||||
let langcodes = item.data.data[0].attributes.supportedLanguageTags;
|
||||
if (langcodes) langcodes = langcodes.map(function (u) {
|
||||
return u.replace(/-Han[s|t]/i, "").toLowerCase()
|
||||
|
@ -4010,7 +4011,7 @@ function fallbackinitMusicKit() {
|
|||
function loadAlternateKey() {
|
||||
let parsedJson = JSON.parse(this.responseText)
|
||||
MusicKit.configure({
|
||||
developerToken: parsedJson.developerToken,
|
||||
developerToken: 'eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlhXM0w4WVQzUzQifQ.eyJpYXQiOjE2NDU3Njg0MzUsImV4cCI6MTY2MTMyMDQzNSwiaXNzIjoiOFIyM0oyODM1RCJ9.h54gKwfUTR4AOsf_n00a5DKvTfTqbcZJGrxCOvJWFMHhKll-jTb-NqNzMX4Zi0EsCPfFcEueShdsTRE1rJzHzw',
|
||||
app: {
|
||||
name: 'Apple Music',
|
||||
build: '1978.4.1',
|
||||
|
@ -4034,7 +4035,7 @@ document.addEventListener('musickitloaded', function () {
|
|||
function initMusicKit() {
|
||||
let parsedJson = JSON.parse(this.responseText)
|
||||
MusicKit.configure({
|
||||
developerToken: parsedJson.token,
|
||||
developerToken: 'eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlhXM0w4WVQzUzQifQ.eyJpYXQiOjE2NDU3Njg0MzUsImV4cCI6MTY2MTMyMDQzNSwiaXNzIjoiOFIyM0oyODM1RCJ9.h54gKwfUTR4AOsf_n00a5DKvTfTqbcZJGrxCOvJWFMHhKll-jTb-NqNzMX4Zi0EsCPfFcEueShdsTRE1rJzHzw',
|
||||
app: {
|
||||
name: 'Apple Music',
|
||||
build: '1978.4.1',
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// &fields[albums]=artistName,artistUrl,artwork,contentRating,editorialArtwork,editorialVideo,name,playParams,releaseDate,url
|
||||
// &fields[artists]=name,url&extend[stations]=airDate,supportsAirTimeUpdates&meta[stations]=inflectionPoints
|
||||
// &types=artists,albums,editorial-items,library-albums,library-playlists,music-movies,music-videos,playlists,stations,uploaded-audios,uploaded-videos,activities,apple-curators,curators,tv-shows,social-profiles,social-upsells
|
||||
// &l=en-gb&platform=web
|
||||
// &l=en-gb&platform=auto
|
||||
|
||||
await app.mk.api.personalRecommendations("",
|
||||
{
|
||||
|
@ -48,7 +48,7 @@ await app.mk.api.personalRecommendations("",
|
|||
// Browse page
|
||||
await app.mk.api.groupings("",
|
||||
{
|
||||
platform: "web",
|
||||
platform: "auto",
|
||||
name: "music",
|
||||
l: "en-gb",
|
||||
"omit[resource:artists]": "relationships",
|
||||
|
@ -63,12 +63,12 @@ await app.mk.api.groupings("",
|
|||
// Radio page
|
||||
await app.mk.api.recentRadioStations("",
|
||||
{l: "en-gb",
|
||||
"platform": "web",
|
||||
platform: "auto",
|
||||
"art[url]": "f"});
|
||||
|
||||
// Recently Added
|
||||
await app.mk.api.library.recentlyAdded({
|
||||
"platform": "web",
|
||||
platform: "auto",
|
||||
include: {
|
||||
"library-albums": ["artists"],
|
||||
"library-artists": ["catalog"]
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
if(typeof this.item.relationships.catalog == "object") {
|
||||
artistId = this.item.relationships.catalog.data[0].id
|
||||
}
|
||||
app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/artists/${artistId}`).then(response => {
|
||||
app.mk.api.music(`/v1/catalog/${app.mk.storefrontId}/artists/${artistId}`).then(response => {
|
||||
this.artist = response.data.data[0];
|
||||
});
|
||||
},
|
||||
|
|
|
@ -58,8 +58,8 @@
|
|||
},
|
||||
async select(e) {
|
||||
let u = this.item
|
||||
let u1 = await app.mk.api.v3.music(`/v1/me/library/artists/${u.id}/albums`, {
|
||||
"platform": "web",
|
||||
let u1 = await app.mk.api.music(`/v1/me/library/artists/${u.id}/albums`, {
|
||||
platform: "auto",
|
||||
"include[library-albums]": "artists,tracks",
|
||||
"include[library-artists]": "catalog",
|
||||
"fields[artists]": "url",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<script type="text/x-template" id="listennow-child">
|
||||
<div v-observe-visibility="{callback: visibilityChanged}">
|
||||
<template v-if="isVisible && recom.attributes.display.kind != 'MusicSuperHeroShelf'">
|
||||
<template v-if="isVisible && recom.attributes.display?.kind != 'MusicSuperHeroShelf'">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3>{{ recom.attributes.title ? recom.attributes.title.stringForDisplay : ""}}</h3>
|
||||
|
@ -9,7 +9,7 @@
|
|||
<button class="cd-btn-seeall" @click="app.showCollection(recom.relationships.contents, recom.attributes.title ? recom.attributes.title.stringForDisplay : '', 'listen_now')" >{{app.getLz('term.seeAll')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
<template v-if="recom.attributes.display.kind == 'MusicCoverShelf'">
|
||||
<template v-if="!recom.id.startsWith('6-') && index != 0">
|
||||
<mediaitem-scroller-horizontal-large
|
||||
:items="recom.relationships.contents.data.limit(10)"></mediaitem-scroller-horizontal-large>
|
||||
</template>
|
||||
|
@ -18,7 +18,7 @@
|
|||
:items="recom.relationships.contents.data.limit(10)"></mediaitem-scroller-horizontal-sp>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else-if="recom.attributes.display.kind != 'MusicSuperHeroShelf'">
|
||||
<template v-else-if="recom.attributes.display?.kind != 'MusicSuperHeroShelf'">
|
||||
<div style="height:330px"> </div>
|
||||
</template>
|
||||
|
||||
|
@ -27,11 +27,11 @@
|
|||
<script>
|
||||
Vue.component('listennow-child', {
|
||||
template: "#listennow-child",
|
||||
props: ["recom"],
|
||||
props: ["recom", "index"],
|
||||
data: function () {
|
||||
return {
|
||||
isVisible: true,
|
||||
app: this.$root
|
||||
app: this.$root,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
|
|
@ -539,8 +539,8 @@
|
|||
var playlistId = id
|
||||
function getPlaylist(id, isLibrary) {
|
||||
if (isLibrary) {
|
||||
return this.app.mk.api.v3.music(`/v1/me/library/playlists/${id}`)
|
||||
} else { return this.app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/playlists/${id}`) }
|
||||
return this.app.mk.api.music(`/v1/me/library/playlists/${id}`)
|
||||
} else { return this.app.mk.api.music(`/v1/catalog/${app.mk.storefrontId}/playlists/${id}`) }
|
||||
}
|
||||
try {
|
||||
getPlaylist(id, isLibrary).then(res => {
|
||||
|
|
|
@ -150,7 +150,7 @@
|
|||
let friends = this.badges[id]
|
||||
if (friends) {
|
||||
friends.forEach(function (friend) {
|
||||
self.app.mk.api.v3.music(`/v1/social/${app.mk.storefrontId}/social-profiles/${friend}`).then(data => {
|
||||
self.app.mk.api.music(`/v1/social/${app.mk.storefrontId}/social-profiles/${friend}`).then(data => {
|
||||
self.itemBadges.push(data.data.data[0])
|
||||
})
|
||||
})
|
||||
|
@ -170,7 +170,7 @@
|
|||
let kind = this.item.type ?? this.item.attributes.playParams.kind
|
||||
let truekind = (!kind.endsWith("s")) ? (kind + "s") : kind;
|
||||
if (truekind == "musicVideos") {truekind = "music-videos"}
|
||||
let res = await app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/?ids[${truekind}]=${this.item.attributes.playParams.id ?? this.item.id}`,params);
|
||||
let res = await app.mk.api.music(`/v1/catalog/${app.mk.storefrontId}/?ids[${truekind}]=${this.item.attributes.playParams.id ?? this.item.id}`,params);
|
||||
res = res.data.data[0]
|
||||
this.addedToLibrary = (res && res.attributes && res.attributes.inLibrary) ? res.attributes.inLibrary : false
|
||||
} else {
|
||||
|
@ -186,13 +186,13 @@
|
|||
let kind = this.item.type ?? this.item.attributes.playParams.kind
|
||||
let truekind = (!kind.endsWith("s")) ? (kind + "s") : kind;
|
||||
if (truekind == "musicVideos") {truekind = "music-videos"}
|
||||
let res = await app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/?ids[${truekind}]=${this.item.attributes.playParams.id ?? this.item.id}`,params);
|
||||
let res = await app.mk.api.music(`/v1/catalog/${app.mk.storefrontId}/?ids[${truekind}]=${this.item.attributes.playParams.id ?? this.item.id}`,params);
|
||||
res= res.data.data[0]
|
||||
if (res && res.relationships && res.relationships.library && res.relationships.library.data && res.relationships.library.data.length > 0) {
|
||||
id = res.relationships.library.data[0].id
|
||||
}
|
||||
|
||||
app.mk.api.v3.music(`v1/me/library/${truekind}/${id.toString()}`,{},
|
||||
app.mk.api.music(`v1/me/library/${truekind}/${id.toString()}`,{},
|
||||
{
|
||||
fetchOptions: {
|
||||
method: "DELETE"
|
||||
|
|
|
@ -66,7 +66,7 @@
|
|||
},
|
||||
methods: {
|
||||
async getHistory() {
|
||||
let history = await app.mk.api.v3.music(`/v1/me/recent/played/tracks`, { l : this.$root.mklang})
|
||||
let history = await app.mk.api.music(`/v1/me/recent/played/tracks`, { l : this.$root.mklang})
|
||||
this.history = history.data.data
|
||||
},
|
||||
select(e, position) {
|
||||
|
|
|
@ -88,7 +88,7 @@
|
|||
console.log(sendTo)
|
||||
let type = item.type.replace("library-", "")
|
||||
let typeTo = sendTo.type
|
||||
this.$root.mk.api.v3.music(`/v1/me/library/${type}/${item.id}/parent`, {}, {
|
||||
this.$root.mk.api.music(`/v1/me/library/${type}/${item.id}/parent`, {}, {
|
||||
fetchOptions: {
|
||||
method: "PUT",
|
||||
body: JSON.stringify({
|
||||
|
@ -197,7 +197,7 @@
|
|||
this.getChildren()
|
||||
this.toggleFolder()
|
||||
|
||||
this.$root.mk.api.v3.music(`v1/me/library/playlist-folders/${item.id}/children`).then(data => {
|
||||
this.$root.mk.api.music(`v1/me/library/playlist-folders/${item.id}/children`).then(data => {
|
||||
let children = data.data.data;
|
||||
children.forEach(child => {
|
||||
if(!self.$root.playlists.listing.find(listing => listing.id == child.id)) {
|
||||
|
|
|
@ -82,7 +82,7 @@
|
|||
src="musickit.js?v=1"></script>
|
||||
<script>
|
||||
if (typeof MusicKit == 'undefined') {
|
||||
document.write(unescape("%3Cscript src='https://js-cdn.music.apple.com/musickit/v2/amp/musickit.js' type='text/javascript'%3E%3C/script%3E"));
|
||||
document.write(unescape("%3Cscript src='https://js-cdn.music.apple.com/musickit/v2/musickit.js' type='text/javascript'%3E%3C/script%3E"));
|
||||
}
|
||||
</script>
|
||||
<script src="./js/fast-plural-rules.js"></script>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<script type="text/x-template" id="cider-applecurator">
|
||||
<div class="content-inner">
|
||||
<h1 class="header-text">{{ data.attributes.shortName ?? data.attributes.name}}</h1>
|
||||
<h1 class="header-text">{{ data.attributes?.shortName ?? data.attributes?.name}}</h1>
|
||||
<template v-if="data.relationships && data.relationships.grouping">
|
||||
<template v-for="(recom,index) in data.relationships.grouping.data[0].relationships.tabs.data[0].relationships.children.data">
|
||||
<div class="row">
|
||||
|
@ -26,6 +26,10 @@
|
|||
</template>
|
||||
</template>
|
||||
</template>
|
||||
<template v-if="data.relationships && data.relationships.playlists">
|
||||
<mediaitem-square :size="'300'" :item="playlist" v-for="(playlist,index) in data.relationships.playlists.data">
|
||||
</mediaitem-square>
|
||||
</template>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
}
|
||||
try {
|
||||
const chunkArtistData = await Promise.all(chunks.map(chunk =>
|
||||
this.app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/artists?ids=${chunk.toString()}&views=latest-release&include[songs]=albums&fields[albums]=artistName,artistUrl,artwork,contentRating,editorialArtwork,editorialVideo,name,playParams,releaseDate,url,trackCount&limit[artists:top-songs]=2&art[url]=f`)))
|
||||
this.app.mk.api.music(`/v1/catalog/${app.mk.storefrontId}/artists?ids=${chunk.toString()}&views=latest-release&include[songs]=albums&fields[albums]=artistName,artistUrl,artwork,contentRating,editorialArtwork,editorialVideo,name,playParams,releaseDate,url,trackCount&limit[artists:top-songs]=2&art[url]=f`)))
|
||||
chunkArtistData.forEach(chunkResult =>
|
||||
chunkResult.data.data.forEach(item => {
|
||||
self.artists.push(item)
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
<div class="artist-image" v-if="!(data.attributes.editorialVideo && (data.attributes.editorialVideo.motionArtistWide16x9 || data.attributes.editorialVideo.motionArtistFullscreen16x9))">
|
||||
<mediaitem-artwork
|
||||
shadow="large"
|
||||
:url="data.attributes.artwork ? data.attributes.artwork.url : ''"
|
||||
:url="data.attributes?.artwork ? data.attributes.artwork?.url : ''"
|
||||
size="190" type="artists"></mediaitem-artwork>
|
||||
<button class="overlay-play" @click="app.mk.setStationQueue({artist:'a-'+data.id}).then(()=>{
|
||||
app.mk.play()
|
||||
|
@ -35,7 +35,7 @@
|
|||
</button>
|
||||
</div>
|
||||
<div class="artworkContainer" v-if="!(data.attributes.editorialVideo && (data.attributes.editorialVideo.motionArtistWide16x9 || data.attributes.editorialVideo.motionArtistFullscreen16x9))">
|
||||
<artwork-material :url="data.attributes.artwork.url" size="190" images="1"></artwork-material>
|
||||
<artwork-material :url="data.attributes.artwork?.url ?? ''" size="190" images="1"></artwork-material>
|
||||
</div>
|
||||
</div>
|
||||
<div class="floating-header" :style="{opacity: (headerVisible ? 0 : 1),'pointer-events': (headerVisible ? 'none' : '')}">
|
||||
|
|
|
@ -259,7 +259,7 @@
|
|||
let friends = badges[id]
|
||||
if (friends) {
|
||||
friends.forEach(function (friend) {
|
||||
self.app.mk.api.v3.music(`/v1/social/${app.mk.storefrontId}/social-profiles/${friend}`).then(data => {
|
||||
self.app.mk.api.music(`/v1/social/${app.mk.storefrontId}/social-profiles/${friend}`).then(data => {
|
||||
self.itemBadges.push(data.data.data[0])
|
||||
})
|
||||
})
|
||||
|
@ -323,7 +323,7 @@
|
|||
}
|
||||
let kind = this.data.attributes.playParams.kind ?? this.data.type ?? '';
|
||||
const truekind = (!kind.endsWith("s")) ? (kind + "s") : kind;
|
||||
app.mk.api.v3.music(`v1/me/library/${truekind}/${id.toString()}`, {},
|
||||
app.mk.api.music(`v1/me/library/${truekind}/${id.toString()}`, {},
|
||||
{
|
||||
fetchOptions: {
|
||||
method: "DELETE"
|
||||
|
@ -369,7 +369,7 @@
|
|||
return
|
||||
}
|
||||
console.log('sds', this.convert())
|
||||
await app.mk.api.v3.music(
|
||||
await app.mk.api.music(
|
||||
`/v1/me/library/playlists/${this.data.attributes.playParams.id}/tracks`,
|
||||
{},
|
||||
{
|
||||
|
@ -449,7 +449,7 @@
|
|||
if (route === '') {
|
||||
return
|
||||
}
|
||||
app.mk.api.v3.music(route).then(res => {
|
||||
app.mk.api.music(route).then(res => {
|
||||
console.log(res.data.data[0].attributes.url)
|
||||
app.copyToClipboard(res.data.data[0].attributes.url)
|
||||
})
|
||||
|
|
|
@ -84,7 +84,7 @@
|
|||
}
|
||||
this.loading = true
|
||||
|
||||
this.api.v3.music(this.data.next, app.collectionList.requestBody).then((response) => {
|
||||
this.api.music(this.data.next, app.collectionList.requestBody).then((response) => {
|
||||
console.log(response)
|
||||
if (!app.collectionList.response.groups) {
|
||||
this.data.data = this.data.data.concat(response.data.data);
|
||||
|
|
|
@ -127,7 +127,7 @@
|
|||
},
|
||||
methods: {
|
||||
async seeAllHistory() {
|
||||
let hist = await app.mk.api.v3.music(`/v1/me/recent/played/tracks`, {
|
||||
let hist = await app.mk.api.music(`/v1/me/recent/played/tracks`, {
|
||||
l: this.$root.mklang
|
||||
})
|
||||
app.showCollection(hist.data, app.getLz('term.history'))
|
||||
|
@ -160,14 +160,14 @@
|
|||
}
|
||||
}
|
||||
if (playlists.length != 0) {
|
||||
this.app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/playlists/${playlists.toString()}`, {
|
||||
this.app.mk.api.music(`/v1/catalog/${app.mk.storefrontId}/playlists/${playlists.toString()}`, {
|
||||
l: this.$root.mklang
|
||||
}).then(playlistsData => {
|
||||
self.favorites.push(...playlistsData.data)
|
||||
})
|
||||
}
|
||||
if (libraryPlaylists.length != 0) {
|
||||
this.app.mk.api.v3.music(`v1/me/library/playlists/${playlists.toString()}`, {
|
||||
this.app.mk.api.music(`v1/me/library/playlists/${playlists.toString()}`, {
|
||||
l: this.$root.mklang
|
||||
}).then(playlistsData => {
|
||||
self.favorites.push(...playlistsData.data)
|
||||
|
@ -184,7 +184,7 @@
|
|||
}
|
||||
try {
|
||||
const chunkArtistData = await Promise.all(chunks.map(chunk =>
|
||||
this.app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/artists?ids=${chunk.toString()}&views=latest-release&include[songs]=albums&fields[albums]=artistName,artistUrl,artwork,contentRating,editorialArtwork,editorialVideo,name,playParams,releaseDate,url,trackCount&limit[artists:top-songs]=2&art[url]=f`)))
|
||||
this.app.mk.api.music(`/v1/catalog/${app.mk.storefrontId}/artists?ids=${chunk.toString()}&views=latest-release&include[songs]=albums&fields[albums]=artistName,artistUrl,artwork,contentRating,editorialArtwork,editorialVideo,name,playParams,releaseDate,url,trackCount&limit[artists:top-songs]=2&art[url]=f`)))
|
||||
chunkArtistData.forEach(chunkResult =>
|
||||
chunkResult.data.data.forEach(item => {
|
||||
if (item.views["latest-release"].data.length != 0) {
|
||||
|
@ -204,7 +204,7 @@
|
|||
},
|
||||
async getListenNowData() {
|
||||
let self = this
|
||||
this.app.mk.api.v3.music(`/v1/me/recommendations?timezone=${encodeURIComponent(app.formatTimezoneOffset())}&name=listen-now&with=friendsMix,library,social&art[social-profiles:url]=c&art[url]=c,f&omit[resource]=autos&relate[editorial-items]=contents&extend=editorialCard,editorialVideo&extend[albums]=artistUrl&extend[library-albums]=artistUrl,editorialVideo&extend[playlists]=artistNames,editorialArtwork,editorialVideo&extend[library-playlists]=artistNames,editorialArtwork,editorialVideo&extend[social-profiles]=topGenreNames&include[albums]=artists&include[songs]=artists&include[music-videos]=artists&fields[albums]=artistName,artistUrl,artwork,contentRating,editorialArtwork,editorialVideo,name,playParams,releaseDate,url&fields[artists]=name,url&extend[stations]=airDate,supportsAirTimeUpdates&meta[stations]=inflectionPoints&types=artists,albums,editorial-items,library-albums,library-playlists,music-movies,music-videos,playlists,stations,uploaded-audios,uploaded-videos,activities,apple-curators,curators,tv-shows,social-upsells&platform=web&l=${this.$root.mklang}`).then((data) => {
|
||||
this.app.mk.api.music(`/v1/me/recommendations?timezone=${encodeURIComponent(app.formatTimezoneOffset())}&name=listen-now&with=friendsMix,library&art[social-profiles:url]=c&art[url]=c,f&omit[resource]=autos&relate[editorial-items]=contents&extend=editorialCard,editorialVideo&extend[albums]=artistUrl&extend[library-albums]=artistUrl,editorialVideo&extend[playlists]=artistNames,editorialArtwork,editorialVideo&extend[library-playlists]=artistNames,editorialArtwork,editorialVideo&extend[social-profiles]=topGenreNames&include[albums]=artists&include[songs]=artists&include[music-videos]=artists&fields[albums]=artistName,artistUrl,artwork,contentRating,editorialArtwork,editorialVideo,name,playParams,releaseDate,url&fields[artists]=name,url&extend[stations]=airDate,supportsAirTimeUpdates&meta[stations]=inflectionPoints&types=artists,albums,editorial-items,library-albums,library-playlists,music-videos,playlists,stations,activities,apple-curators,curators&platform=auto&l=${this.$root.mklang}`).then((data) => {
|
||||
console.log(data.data.data[1])
|
||||
try {
|
||||
self.madeForYou = data.data.data.filter(section => {
|
||||
|
@ -227,7 +227,7 @@
|
|||
self.sectionsReady.push("friendsListeningTo")
|
||||
});
|
||||
|
||||
app.mk.api.v3.music("/v1/me/social/profile/").then((response) => {
|
||||
app.mk.api.music("/v1/me/social/profile/").then((response) => {
|
||||
self.profile = response.data.data[0]
|
||||
})
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
mounted() {
|
||||
this.$nextTick(async function () {
|
||||
if (this.$data.videos == null || this.$data.videos.length == 0)
|
||||
this.$data.videos = (await this.$root.mk.api.v3.music('/v1/me/library/music-videos')).data?.data ?? []
|
||||
this.$data.videos = (await this.$root.mk.api.music('/v1/me/library/music-videos')).data?.data ?? []
|
||||
this.$data.loaded = true
|
||||
})
|
||||
}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<script type="text/x-template" id="cider-listen-now">
|
||||
<div class="content-inner">
|
||||
<h1 class="header-text">{{app.getLz('term.listenNow')}}</h1>
|
||||
<template v-for="recom in data.data">
|
||||
<listennow-child :recom="recom"></listennow-child>
|
||||
<template v-for="(recom, index) in data.data">
|
||||
<listennow-child :index="index" :recom="recom"></listennow-child>
|
||||
</template>
|
||||
</div>
|
||||
</script>
|
||||
|
|
|
@ -283,7 +283,7 @@
|
|||
let friends = badges[id]
|
||||
if (friends) {
|
||||
friends.forEach(function (friend) {
|
||||
self.app.mk.api.v3.music(`/v1/social/${app.mk.storefrontId}/social-profiles/${friend}`).then(data => {
|
||||
self.app.mk.api.music(`/v1/social/${app.mk.storefrontId}/social-profiles/${friend}`).then(data => {
|
||||
self.itemBadges.push(data.data.data[0])
|
||||
})
|
||||
})
|
||||
|
@ -347,7 +347,7 @@
|
|||
}
|
||||
let kind = this.data.attributes.playParams.kind ?? this.data.type ?? '';
|
||||
const truekind = (!kind.endsWith("s")) ? (kind + "s") : kind;
|
||||
app.mk.api.v3.music(`v1/me/library/${truekind}/${id.toString()}`, {},
|
||||
app.mk.api.music(`v1/me/library/${truekind}/${id.toString()}`, {},
|
||||
{
|
||||
fetchOptions: {
|
||||
method: "DELETE"
|
||||
|
@ -393,7 +393,7 @@
|
|||
return
|
||||
}
|
||||
console.log('sds', this.convert())
|
||||
await app.mk.api.v3.music(
|
||||
await app.mk.api.music(
|
||||
`/v1/me/library/playlists/${this.data.attributes.playParams.id}/tracks`,
|
||||
{},
|
||||
{
|
||||
|
@ -473,7 +473,7 @@
|
|||
if (route === '') {
|
||||
return
|
||||
}
|
||||
app.mk.api.v3.music(route).then(res => {
|
||||
app.mk.api.music(route).then(res => {
|
||||
console.log(res.data.data[0].attributes.url)
|
||||
app.copyToClipboard(res.data.data[0].attributes.url)
|
||||
})
|
||||
|
|
|
@ -165,7 +165,7 @@
|
|||
}
|
||||
},
|
||||
async mounted() {
|
||||
let podcastShow = await app.mk.api.v3.podcasts(`/v1/me/library/podcasts?include=episodes`)
|
||||
let podcastShow = await app.mk.api.podcasts(`/v1/me/library/podcasts?include=episodes`)
|
||||
this.podcasts = podcastShow.data.data
|
||||
if (podcastShow.data.next) {
|
||||
await this.getNext(podcastShow.data.next)
|
||||
|
@ -190,7 +190,7 @@
|
|||
if(this.search.term == "") {
|
||||
return
|
||||
}
|
||||
app.mk.api.v3.podcasts("/v1/catalog/us/search", {term: this.search.term, types: ["podcasts"], limit: 25}).then(response => {
|
||||
app.mk.api.podcasts("/v1/catalog/us/search", {term: this.search.term, types: ["podcasts"], limit: 25}).then(response => {
|
||||
console.log(response)
|
||||
self.search.results = response.data.results.podcasts.data
|
||||
})
|
||||
|
@ -215,7 +215,7 @@
|
|||
},
|
||||
async getEpisodes(podcast) {
|
||||
this.episodes = []
|
||||
let eps = await app.mk.api.v3.podcasts(`/v1/catalog/${app.mk.storefrontId}/podcasts/${podcast.id}?include=episodes`)
|
||||
let eps = await app.mk.api.podcasts(`/v1/catalog/${app.mk.storefrontId}/podcasts/${podcast.id}?include=episodes`)
|
||||
|
||||
eps.data.data[0].relationships.episodes.data.forEach(ep => {
|
||||
this.episodes.push(ep)
|
||||
|
@ -226,7 +226,7 @@
|
|||
},
|
||||
async getNextEpisodes(next, podcastId) {
|
||||
|
||||
let podcastShow = await app.mk.api.v3.podcasts(next)
|
||||
let podcastShow = await app.mk.api.podcasts(next)
|
||||
if(podcastId != this.podcastSelected.id) {
|
||||
return
|
||||
}
|
||||
|
@ -238,7 +238,7 @@
|
|||
}
|
||||
},
|
||||
async getNext(next) {
|
||||
let podcastShow = await app.mk.api.v3.podcasts(next)
|
||||
let podcastShow = await app.mk.api.podcasts(next)
|
||||
this.podcasts = this.podcasts.concat(podcastShow.data.data)
|
||||
if (podcastShow.data.next) {
|
||||
await this.getNext(podcastShow.data.next)
|
||||
|
|
|
@ -97,12 +97,12 @@
|
|||
},
|
||||
async mounted() {
|
||||
// Get available years
|
||||
let year = await app.mk.api.v3.music("/v1/me/music-summaries/search?extend=inLibrary&period=year&fields[music-summaries]=period%2Cyear&include[music-summaries]=playlist")
|
||||
let year = await app.mk.api.music("/v1/me/music-summaries/search?extend=inLibrary&period=year&fields[music-summaries]=period%2Cyear&include[music-summaries]=playlist")
|
||||
this.years = year.data.data
|
||||
this.years.reverse()
|
||||
localStorage.setItem("seenReplay", true)
|
||||
this.getReplayYear();
|
||||
const musicGenre = await app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/genres/34`)
|
||||
const musicGenre = await app.mk.api.music(`/v1/catalog/${app.mk.storefrontId}/genres/34`)
|
||||
this.musicTypeGenre = musicGenre.data.data[0].attributes.name
|
||||
},
|
||||
methods: {
|
||||
|
@ -145,10 +145,10 @@
|
|||
},
|
||||
async getReplayYear(year = new Date().getFullYear()) {
|
||||
this.loaded.id = -1
|
||||
let response = await app.mk.api.v3.music(`/v1/me/music-summaries/year-${year}?extend=inLibrary&views=top-artists%2Ctop-albums%2Ctop-songs&include[music-summaries]=playlist&include[playlists]=tracks&includeOnly=playlist%2Ctracks%2Csong%2Cartist%2Calbum`)
|
||||
let response = await app.mk.api.music(`/v1/me/music-summaries/year-${year}?extend=inLibrary&views=top-artists%2Ctop-albums%2Ctop-songs&include[music-summaries]=playlist&include[playlists]=tracks&includeOnly=playlist%2Ctracks%2Csong%2Cartist%2Calbum`)
|
||||
let replayData = response.data.data[0]
|
||||
// extended playlist
|
||||
let playlist = await app.mk.api.v3.music(replayData.relationships.playlist.data[0].href, {extend: "editorialArtwork,editorialVideo"})
|
||||
let playlist = await app.mk.api.music(replayData.relationships.playlist.data[0].href, {extend: "editorialArtwork,editorialVideo"})
|
||||
replayData.playlist = playlist.data.data[0]
|
||||
this.loaded = replayData
|
||||
}
|
||||
|
|
|
@ -116,7 +116,7 @@
|
|||
},
|
||||
async getCategories() {
|
||||
if (this.categoriesView != [] && this.categoriesView.length > 0) { this.categoriesReady = true; return await true; } else {
|
||||
let response = await this.app.mk.api.v3.music(`/v1/recommendations/${this.app.mk.storefrontId}?timezone=${encodeURIComponent(this.app.formatTimezoneOffset())}&name=search-landing&platform=web&extend=editorialArtwork&art%5Burl%5D=f%2Cc&types=editorial-items%2Capple-curators%2Cactivities&l=${this.$root.mklang}`);
|
||||
let response = await this.app.mk.api.music(`/v1/recommendations/${this.app.mk.storefrontId}?timezone=${encodeURIComponent(this.app.formatTimezoneOffset())}&name=search-landing&platform=auto&extend=editorialArtwork&art%5Burl%5D=f%2Cc&types=editorial-items%2Capple-curators%2Cactivities&l=${this.$root.mklang}`);
|
||||
this.categoriesView = response.data.data;
|
||||
console.log(this.categoriesView)
|
||||
this.categoriesReady = true;
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
}
|
||||
},
|
||||
async mounted() {
|
||||
app.mk.api.v3.music("/v1/catalog/us/artists/669831761").then(response => {
|
||||
app.mk.api.music("/v1/catalog/us/artists/669831761").then(response => {
|
||||
this.artist = response.data.data[0];
|
||||
this.artistLoaded = true;
|
||||
});
|
||||
|
|
|
@ -145,7 +145,7 @@
|
|||
let friends = this.badges[id]
|
||||
if (friends) {
|
||||
friends.forEach(function (friend) {
|
||||
self.app.mk.api.v3.music(`/v1/social/${app.mk.storefrontId}/social-profiles/${friend}`).then(data => {
|
||||
self.app.mk.api.music(`/v1/social/${app.mk.storefrontId}/social-profiles/${friend}`).then(data => {
|
||||
self.itemBadges.push(data.data.data[0])
|
||||
})
|
||||
})
|
||||
|
@ -186,7 +186,7 @@
|
|||
}
|
||||
let kind = this.item.attributes.playParams.kind ?? this.item.type ?? '';
|
||||
var truekind = (!kind.endsWith("s")) ? (kind + "s") : kind;
|
||||
app.mk.api.v3.music(`v1/me/library/${truekind}/${id.toString()}`,{},
|
||||
app.mk.api.music(`v1/me/library/${truekind}/${id.toString()}`,{},
|
||||
{
|
||||
fetchOptions: {
|
||||
method: "DELETE"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue