diff --git a/.env.example b/.env.example deleted file mode 100644 index 95a3ce8..0000000 --- a/.env.example +++ /dev/null @@ -1,2 +0,0 @@ -LASTFM_API_KEY= -LASTFM_USER= diff --git a/package.json b/package.json index d507528..04fa0d8 100644 --- a/package.json +++ b/package.json @@ -33,9 +33,5 @@ "typescript-eslint": "^8.47.0", "vite": "^7.2.2", "vite-plugin-devtools-json": "^1.0.0" - }, - "dependencies": { - "lastfm-ts-api": "^2.2.0", - "node-cache": "^5.1.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3546fe7..3a146fb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,13 +7,6 @@ settings: importers: .: - dependencies: - lastfm-ts-api: - specifier: ^2.2.0 - version: 2.2.0 - node-cache: - specifier: ^5.1.2 - version: 5.1.2 devDependencies: '@eslint/compat': specifier: ^1.4.0 @@ -686,10 +679,6 @@ packages: class-variance-authority@0.7.1: resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} - clone@2.1.2: - resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} - engines: {node: '>=0.8'} - clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -928,9 +917,6 @@ packages: known-css-properties@0.37.0: resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==} - lastfm-ts-api@2.2.0: - resolution: {integrity: sha512-RGceA84ImKtPtFKZaAE9FbTI9hchjxAwi3ZJAr5nlrfVjvSQvpoEFtamrgJY+JYY9PdJusHil8eki00ll4ILZg==} - levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -1048,10 +1034,6 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - node-cache@5.1.2: - resolution: {integrity: sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==} - engines: {node: '>= 8.0.0'} - optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -1819,8 +1801,6 @@ snapshots: dependencies: clsx: 2.1.1 - clone@2.1.2: {} - clsx@2.1.1: {} color-convert@2.0.1: @@ -2067,8 +2047,6 @@ snapshots: known-css-properties@0.37.0: {} - lastfm-ts-api@2.2.0: {} - levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -2155,10 +2133,6 @@ snapshots: natural-compare@1.4.0: {} - node-cache@5.1.2: - dependencies: - clone: 2.1.2 - optionator@0.9.4: dependencies: deep-is: 0.1.4 diff --git a/src/lib/assets/icons/last-fm.png b/src/lib/assets/icons/last-fm.png deleted file mode 100644 index e6d66a7..0000000 Binary files a/src/lib/assets/icons/last-fm.png and /dev/null differ diff --git a/src/lib/assets/icons/last-fm.webp b/src/lib/assets/icons/last-fm.webp deleted file mode 100644 index d85eb30..0000000 Binary files a/src/lib/assets/icons/last-fm.webp and /dev/null differ diff --git a/src/lib/components/tiles/common/Tile.svelte b/src/lib/components/tiles/common/Tile.svelte index 2708ee6..d506a3b 100644 --- a/src/lib/components/tiles/common/Tile.svelte +++ b/src/lib/components/tiles/common/Tile.svelte @@ -266,7 +266,7 @@ Metro-like tile. Must be in a group to display correctly. grid-column-start: {column}; " onmousemove={active ? updateDynamicMouseValues : null} - href={active ? link : "#"} + href="#h" >
- - - - - {#if track} - - - {:else} - - {/if} - diff --git a/src/lib/components/tiles/pages/TileTextPage.svelte b/src/lib/components/tiles/pages/TileTextPage.svelte index 6e6b298..6228d45 100644 --- a/src/lib/components/tiles/pages/TileTextPage.svelte +++ b/src/lib/components/tiles/pages/TileTextPage.svelte @@ -20,14 +20,14 @@ Text page for a tile. Must be in a tile to display correctly.
-

{title}

+

{title}

{#if subtitle} -

{subtitle}

+

{subtitle}

{/if} {#if text} -

{text}

+

{text}

{/if}
diff --git a/src/lib/server/clients/last-fm.ts b/src/lib/server/clients/last-fm.ts deleted file mode 100644 index b33505b..0000000 --- a/src/lib/server/clients/last-fm.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { LASTFM_API_KEY, LASTFM_USER } from "$env/static/private"; -import { LastFMUser } from "lastfm-ts-api"; - -/** - * Last.fm API client. - */ -const client = new LastFMUser(LASTFM_API_KEY); - -/** - * Recent track. - */ -export interface RecentTrack { - /** - * Song title. - */ - title: string; - - /** - * Song artist. - */ - artist: string; - - /** - * Album title. - */ - album: string; - - /** - * Cover URL. - */ - cover: string; - - /** - * Song URL. - */ - url: string; -} - -/** - * Get the most recent track from a listening history. - * @returns Recent track. - */ -export async function getRecentTrack(): Promise { - // NOTE: fetch the recent tracks - const { - recenttracks: { - track: tracks, - }, - } = await client.getRecentTracks({ - user: LASTFM_USER, - }); - - // NOTE: get the first track and return it - const track = tracks.shift()!; - return { - title: track.name, - artist: track.artist["#text"], - album: track.album["#text"], - - // NOTE: the most HQ cover is always last in an array - cover: track.image.pop()!["#text"], - url: track.url, - }; -} diff --git a/src/routes/(tiles)/+page.server.ts b/src/routes/(tiles)/+page.server.ts deleted file mode 100644 index 5aa31e1..0000000 --- a/src/routes/(tiles)/+page.server.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { PageServerLoad } from './$types'; - -import { getRecentTrack } from '$lib/server/clients/last-fm'; - -export const load = (async () => { - return { track: await getRecentTrack() }; -}) satisfies PageServerLoad; diff --git a/src/routes/(tiles)/+page.svelte b/src/routes/(tiles)/+page.svelte index 6b2d053..3c121b1 100644 --- a/src/routes/(tiles)/+page.svelte +++ b/src/routes/(tiles)/+page.svelte @@ -1,6 +1,4 @@ - @@ -28,7 +23,16 @@ - + + + + { - return Response.json( - await getRecentTrack(), - { - headers: { 'cache-control': 'maxage=60' }, - }, - ); -};