From 0b31bf3446a8e4b45641854928b3edf8e686552a Mon Sep 17 00:00:00 2001 From: karitham Date: Fri, 12 Sep 2025 21:02:00 +0000 Subject: [PATCH] use releases instead of release groups --- src/App.tsx | 73 ++++++++++++++++++++++++++--------------------------- 1 file changed, 36 insertions(+), 37 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 8d61f9a..1eab7b1 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -34,9 +34,8 @@ export default () => { }, ); const [artistRes] = createResource(settings, artistFetcher); - const [groupsFetcher] = makeCache( - (set: Settings) => - releaseGroups(set.username, undefined, set.range, set.count), + const [releasesFetcher] = makeCache( + (set: Settings) => releases(set.username, undefined, set.range, set.count), { storage: localStorage, sourceHash(source) { @@ -44,7 +43,7 @@ export default () => { }, }, ); - const [groupsRes] = createResource(settings, groupsFetcher); + const [releasesRes] = createResource(settings, releasesFetcher); return (
@@ -94,7 +93,7 @@ export default () => {

Top Albums

- + @@ -141,7 +140,7 @@ const ArtistsItem: Component<{ artist: ArtistStatsArtist }> = (props) => { {`Thumbnail = (props) => { ); }; -const ReleaseGroups: Component<{ groups: ReleaseGroupsGroup[] }> = (props) => { +const ReleaseGroups: Component<{ groups: Release[] }> = (props) => { return (
- {(group) => } + {(group) => }
); }; -const ReleaseGroupItem: Component<{ group: ReleaseGroupsGroup }> = (props) => { +const ReleaseGroupItem: Component<{ release: Release }> = (props) => { const [imageFetcher] = makeCache( - async (group: ReleaseGroupsGroup) => { - if (!group.caa_release_mbid) { + async (release: Release) => { + if (!release.caa_release_mbid) { return null; } const result = await getReleaseImageURL( "release", - group.caa_release_mbid, + release.caa_release_mbid, ); return result[0]?.image.replace("http://", "https://"); }, @@ -188,7 +187,7 @@ const ReleaseGroupItem: Component<{ group: ReleaseGroupsGroup }> = (props) => { storage: localStorage, }, ); - const [image] = createResource(props.group, imageFetcher); + const [image] = createResource(props.release, imageFetcher); return (
@@ -201,22 +200,22 @@ const ReleaseGroupItem: Component<{ group: ReleaseGroupsGroup }> = (props) => { {`Cover

- {props.group.release_group_name} + {props.release.release_name}

- {props.group.listen_count} listens + {props.release.listen_count} listens

); @@ -243,34 +242,34 @@ type ArtistStatsArtist = { listen_count: number; }; -export type ReleaseGroupsStats = { +export type ReleasesStats = { count: number; from_ts: number; last_updated: number; offset: number; range: string; - release_groups: ReleaseGroupsGroup[]; + releases: Release[]; to_ts: number; - total_release_group_count: number; + total_release_count: number; user_id: string; }; -type ReleaseGroupsGroup = { +export interface Release { artist_mbids: string[]; artist_name: string; - artists: - | { - artist_credit_name: string; - artist_mbid: string; - join_phrase: string; - }[] - | null; - caa_id: number | null; - caa_release_mbid: string | null; + artists?: Artist[]; + caa_id?: number; + caa_release_mbid?: string; listen_count: number; - release_group_mbid: string | null; - release_group_name: string; -}; + release_mbid: string; + release_name: string; +} + +export interface Artist { + artist_credit_name: string; + artist_mbid: string; + join_phrase: string; +} async function artists( user: string, @@ -287,13 +286,13 @@ async function artists( return getPayload(url); } -async function releaseGroups( +async function releases( user: string, offset: number = 0, range: Range = "this_week", count: number = 5, -): Promise { - const url = new URL(`${LB_API_URL}/1/stats/user/${user}/release-groups`); +): Promise { + const url = new URL(`${LB_API_URL}/1/stats/user/${user}/releases`); url.searchParams.set("offset", offset.toString()); url.searchParams.set("range", range); -- 2.51.2