Skip to content

Commit 70eb9a1

Browse files
committed
feat: use new simplified apple music lcp endpoint
Signed-off-by: Matt Gleich <git@mattglei.ch>
1 parent 16670e7 commit 70eb9a1

File tree

5 files changed

+16
-42
lines changed

5 files changed

+16
-42
lines changed

src/lib/index/sections/music/music-section.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@
6565
<div>
6666
<h3 class="header">Playlists</h3>
6767
<div class="section playlists">
68-
{#each music.data!.playlist_summaries as summary (summary.id)}
69-
<Playlist {summary} />
68+
{#each music.data!.playlists as playlist (playlist.id)}
69+
<Playlist {playlist} />
7070
{/each}
7171
</div>
7272
</div>

src/lib/index/sections/music/playlist.svelte

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
<script lang="ts">
2-
import type { AppleMusicPlaylistSummary } from '$lib/lcp/applemusic.server';
2+
import type { AppleMusicPlaylist } from '$lib/lcp/applemusic.server';
33
import { Card, Image } from '@gleich/ui';
44
5-
const { summary }: { summary: AppleMusicPlaylistSummary } = $props();
5+
const { playlist }: { playlist: AppleMusicPlaylist } = $props();
66
</script>
77

8-
<a href={`/music/playlist/${summary.id}`} class="container">
8+
<a href={`/music/playlist/${playlist.id}`} class="container">
99
<Card padding="0">
1010
<div class="collage-container">
1111
<div class="collage">
12-
{#each summary.first_four_tracks as track (track.id)}
12+
{#each playlist.tracks.slice(0, 4) as track (track.id)}
1313
<div class="collage-image">
1414
<Image
1515
src={track.album_art_preview_url}
@@ -22,10 +22,10 @@
2222
</div>
2323
{/each}
2424
</div>
25-
<p class="name">{summary.name}</p>
25+
<p class="name">{playlist.name}</p>
2626
</div>
2727
<button class="view-more">
28-
View {summary.track_count} tracks
28+
View {playlist.tracks.length} tracks
2929
</button>
3030
</Card>
3131
</a>

src/lib/lcp/applemusic.server.ts

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,6 @@
1-
import { LCP_TOKEN } from '$env/static/private';
2-
import type { SvelteFetch } from './lcp.server';
3-
4-
export async function loadPlaylistFromLCP(
5-
id: string,
6-
fetch: SvelteFetch
7-
): Promise<AppleMusicPlaylist | null> {
8-
try {
9-
const res = await fetch(`https://lcp.mattglei.ch/applemusic/playlists/${id}`, {
10-
method: 'GET',
11-
cache: 'no-store',
12-
headers: {
13-
Authorization: `Bearer ${LCP_TOKEN}`
14-
}
15-
});
16-
return await res.json();
17-
} catch {
18-
return null;
19-
}
20-
}
21-
221
export interface CacheData {
232
recently_played: AppleMusicSong[];
24-
playlist_summaries: AppleMusicPlaylistSummary[];
3+
playlists: AppleMusicPlaylist[];
254
}
265

276
export interface AppleMusicSong {
@@ -36,13 +15,6 @@ export interface AppleMusicSong {
3615
preview_audio_url: string | null;
3716
}
3817

39-
export interface AppleMusicPlaylistSummary {
40-
name: string;
41-
id: string;
42-
track_count: number;
43-
first_four_tracks: AppleMusicSong[];
44-
}
45-
4618
export interface AppleMusicPlaylist {
4719
name: string;
4820
id: string;
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { loadPlaylistFromLCP, type AppleMusicPlaylist } from '$lib/lcp/applemusic.server';
2-
import { type SvelteFetch } from '$lib/lcp/lcp.server';
1+
import { type AppleMusicPlaylist, type CacheData } from '$lib/lcp/applemusic.server';
2+
import { Cache, loadFromLCP, type SvelteFetch } from '$lib/lcp/lcp.server';
33
import type { PageServerLoad } from './$types';
44

55
export interface PlaylistData {
6-
playlist: AppleMusicPlaylist | null;
6+
playlist: AppleMusicPlaylist | undefined;
77
}
88

99
export const load: PageServerLoad = async ({
@@ -13,5 +13,7 @@ export const load: PageServerLoad = async ({
1313
params: Record<string, string>;
1414
fetch: SvelteFetch;
1515
}) => ({
16-
playlist: await loadPlaylistFromLCP(params.playlistID, fetch)
16+
playlist: (await loadFromLCP<CacheData>(Cache.AppleMusic, fetch))?.data.playlists.find(
17+
(p) => p.id === params.playlistID
18+
)
1719
});

src/routes/music/playlist/[playlistID]/+page.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import Since from '$lib/time/since.svelte';
66
import ViewButton from '$lib/view-button.svelte';
77
import { DynamicHead, Error } from '@gleich/ui';
8-
import type { PlaylistData } from './proxy+page.server';
8+
import type { PlaylistData } from './+page.server';
99
1010
const { data }: { data: PlaylistData } = $props();
1111
</script>

0 commit comments

Comments
 (0)