A decentralized music tracking and discovery platform built on AT Protocol 馃幍
rocksky.app
spotify
atproto
lastfm
musicbrainz
scrobbling
listenbrainz
1import { client } from ".";
2
3export const getPlaylists = async (
4 did: string,
5): Promise<
6 {
7 id: string;
8 name: string;
9 picture: string;
10 description?: string;
11 uri?: string;
12 spotifyLink?: string;
13 tidalLink?: string;
14 appleMusicLink?: string;
15 trackCount: number;
16 }[]
17> => {
18 const response = await client.get(
19 "/xrpc/app.rocksky.actor.getActorPlaylists",
20 {
21 params: { did },
22 },
23 );
24 return response.data.playlists;
25};
26
27export const getPlaylist = async (
28 did: string,
29 rkey: string,
30): Promise<{
31 id: string;
32 name: string;
33 picture: string;
34 description?: string;
35 uri?: string;
36 spotifyLink?: string;
37 tidalLink?: string;
38 appleMusicLink?: string;
39 curatedBy: {
40 id: string;
41 displayName: string;
42 did: string;
43 avatar: string;
44 handle: string;
45 };
46 trackCount: number;
47 tracks: {
48 id: string;
49 trackNumber: number;
50 album: string;
51 albumArt: string;
52 albumArtist: string;
53 title: string;
54 artist: string;
55 createdAt: string;
56 uri: string;
57 albumUri: string;
58 artistUri: string;
59 duration: number;
60 discNumber: number;
61 }[];
62}> => {
63 const response = await client.get("/xrpc/app.rocksky.playlist.getPlaylist", {
64 params: {
65 uri: `at://${did}/app.rocksky.playlist/${rkey}`,
66 },
67 });
68 return response.data;
69};