orchard/src/renderer/todo.js
2022-08-04 05:27:29 +01:00

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