first commit

This commit is contained in:
vapormusic 2022-02-25 06:09:42 +07:00
parent 6245f6e601
commit 76f640a088
26 changed files with 155 additions and 150 deletions

View file

@ -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"]
}

View file

@ -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 ?? ''}

View file

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

View file

@ -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"]

View file

@ -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];
});
},

View file

@ -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",

View file

@ -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: {

View file

@ -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 => {

View file

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

View file

@ -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) {

View file

@ -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)) {

View file

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

View file

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

View file

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

View file

@ -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' : '')}">

View file

@ -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)
})

View file

@ -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);

View file

@ -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]
})

View file

@ -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
})
}

View file

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

View file

@ -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)
})

View file

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

View file

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

View file

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

View file

@ -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;
});

View file

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