Compare commits

..

1 commit

Author SHA1 Message Date
13fb29389e feat(api/music): initial implementation 2025-12-03 17:25:57 +05:00

View file

@ -1,5 +1,15 @@
import { LASTFM_API_KEY, LASTFM_USER } from "$env/static/private";
import { LastFMUser } from "lastfm-ts-api";
import NodeCache from "node-cache";
/**
* API cache.
*/
const cache = new NodeCache({
// NOTE: TTL is 1 minute
stdTTL: 60,
});
/**
* Last.fm API client.
@ -36,11 +46,7 @@ export interface RecentTrack {
url: string;
}
/**
* Get the most recent track from a listening history.
* @returns Recent track.
*/
export async function getRecentTrack(): Promise<RecentTrack> {
async function _getRecentTrack(): Promise<RecentTrack> {
// NOTE: fetch the recent tracks
const {
recenttracks: {
@ -62,3 +68,20 @@ export async function getRecentTrack(): Promise<RecentTrack> {
url: track.url,
};
}
/**
* Get the most recent track from a listening history.
* @returns Recent track.
*/
export async function getRecentTrack(): Promise<RecentTrack> {
let result = cache.get<RecentTrack>("recentTrack");
if (result !== undefined) {
return result;
}
result = await _getRecentTrack();
cache.set("recentTrack", result);
return result;
}