193 lines
6.3 KiB
JavaScript
193 lines
6.3 KiB
JavaScript
// 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,
|
|
},
|
|
]);
|