A decentralized music tracking and discovery platform built on AT Protocol 馃幍
rocksky.app
spotify
atproto
lastfm
musicbrainz
scrobbling
listenbrainz
1import { ROCKSKY_API_URL } from "../consts";
2import getLastDays from "../lib/getLastDays";
3import type { Track } from "../types/track";
4
5export default async function getTopTrack(handle: string) {
6 const [start, end] = getLastDays(7);
7 const url = new URL(
8 `${ROCKSKY_API_URL}/xrpc/app.rocksky.actor.getActorSongs`,
9 );
10 url.searchParams.append("did", handle);
11 url.searchParams.append("limit", "1");
12 url.searchParams.append("startDate", start.toISOString());
13 url.searchParams.append("endDate", end.toISOString());
14 const res = await fetch(url);
15
16 if (!res.ok) {
17 return { topTrack: null, ok: res.ok };
18 }
19
20 const { tracks } = (await res.json()) as { tracks: Track[] };
21 return { topTrack: tracks[0], ok: res.ok };
22}