// Apple Music Listen Now Page // URL : https://amp-api.music.apple.com/v1/me/recommendations?timezone=+00:00 // &with=friendsMix,library,social&art[social-profiles:url]=c // &name=listen-now&art[url]=c,f&omit[resource]=autos // &relate[editorial-items]=contents // &extend=editorialCard,editorialVideo // &extend[albums]=artistUrl // &extend[library-albums]=artistUrl // &extend[playlists]=artistNames,editorialArtwork // &extend[library-playlists]=artistNames,editorialArtwork // &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-profiles,social-upsells // &l=en-gb&platform=web await app.mk.api.personalRecommendations( "", { 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"], "extend[playlists]": ["artistNames", "editorialArtwork"], "extend[library-playlists]": ["artistNames", "editorialArtwork"], "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-profiles,social-upsells", l: "en-gb", platform: "web", }, { includeResponseMeta: !0, reload: !0, } ); // Browse page await app.mk.api.groupings("", { platform: "web", name: "music", l: "en-gb", "omit[resource:artists]": "relationships", "include[albums]": "artists", "include[songs]": "artists", "include[music-videos]": "artists", extend: "editorialArtwork,artistUrl", "fields[artists]": "name,url,artwork,editorialArtwork,genreNames,editorialNotes", "art[url]": "f", }); // Radio page await app.mk.api.recentRadioStations("", { l: "en-gb", platform: "web", "art[url]": "f", }); // Recently Added await app.mk.api.library.recentlyAdded( { platform: "web", include: { "library-albums": ["artists"], "library-artists": ["catalog"], }, fields: { artists: ["url"], albums: "artistName,artistUrl,artwork,contentRating,editorialArtwork,name,playParams,releaseDate,url", }, includeOnly: ["catalog", "artists"], limit: 25, }, { reload: !0, includePagination: !0, } ); // Songs await app.mk.api.library.songs({ limit: 100 }).then((data) => { console.log(data); }); // Artists await app.mk.api.library.artists({ limit: 100 }).then((data) => { console.log(data); }); // Artists await app.mk.api.library.albums({ limit: 100 }).then((data) => { console.log(data); }); // Albums // does not like limit = 100 for some reason await app.mk.api.library.albums({ limit: 50 }).then((data) => { console.log(data); }); // Made For You app.mk.api.recommendations("", { extend: "editorialArtwork,artistUrl" }); // Library with library length await app.mk.api.library.songs("", { limit: 100 }, { includeResponseMeta: !0 }).then((data) => { console.log(data); }); // Artist View Top Songs app.mk.api.artistView("325096253", "top-songs", {}, { view: "top-songs", includeResponseMeta: !0 }); // Artist Page Data app .mkapi( "artists", false, "412778295", { views: "featured-release,full-albums,appears-on-albums,featured-albums,featured-on-albums,singles,compilation-albums,live-albums,latest-release,top-music-videos,similar-artists,top-songs,playlists,more-to-hear,more-to-see", extend: "artistBio,bornOrFormed,editorialArtwork,editorialVideo,isGroup,origin,hero", "extend[playlists]": "trackCount", "omit[resource:songs]": "relationships", "fields[albums]": "artistName,artistUrl,artwork,contentRating,editorialArtwork,name,playParams,releaseDate,url,trackCount", "limit[artists:top-songs]": 20, "art[url]": "f", }, { includeResponseMeta: !0 } ) .then((data) => { console.log(data); }); // download entire library var library = []; var downloaded = null; function downloadChunk() { if (downloaded == null) { app.mk.api.library.songs("", { limit: 100 }, { includeResponseMeta: !0 }).then((response) => { processChunk(response); }); } else { downloaded.next("", { limit: 100 }, { includeResponseMeta: !0 }).then((response) => { processChunk(response); }); } } function processChunk(response) { downloaded = response; library = library.concat(downloaded.data); if (downloaded.meta.total > library.length) { console.log(`downloading next chunk - ${library.length} songs so far`); downloadChunk(); } else { console.log(library); } } //Some Available Functions from MusicKit // recentPlayed() -> recently played songs ? // create Artist / Song/ Album stations: app.mk.setStationQueue({ artist: "1258279972" }); app.mk.setStationQueue({ song: "1437308307" }); // yes the song id here can be the albumId, but just keep using the song: // Sorting Playlists, send an array of tracks in the format below // playlist must be fully recursively downloaded first before sorting app.mk.api.library.putPlaylistTracklisting(app.showingPlaylist.attributes.playParams.id, [ { id: relationships.tracks.data[X].id, type: relationships.tracks.data[X].type, }, { id: relationships.tracks.data[X].id, type: relationships.tracks.data[X].type, }, { id: relationships.tracks.data[X].id, type: relationships.tracks.data[X].type, }, ]);