Compare commits
1 commit
f0f6b7391a
...
13fb29389e
| Author | SHA1 | Date | |
|---|---|---|---|
| 13fb29389e |
1 changed files with 28 additions and 5 deletions
|
|
@ -1,5 +1,15 @@
|
||||||
import { LASTFM_API_KEY, LASTFM_USER } from "$env/static/private";
|
import { LASTFM_API_KEY, LASTFM_USER } from "$env/static/private";
|
||||||
|
|
||||||
import { LastFMUser } from "lastfm-ts-api";
|
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.
|
* Last.fm API client.
|
||||||
|
|
@ -36,11 +46,7 @@ export interface RecentTrack {
|
||||||
url: string;
|
url: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
async function _getRecentTrack(): Promise<RecentTrack> {
|
||||||
* Get the most recent track from a listening history.
|
|
||||||
* @returns Recent track.
|
|
||||||
*/
|
|
||||||
export async function getRecentTrack(): Promise<RecentTrack> {
|
|
||||||
// NOTE: fetch the recent tracks
|
// NOTE: fetch the recent tracks
|
||||||
const {
|
const {
|
||||||
recenttracks: {
|
recenttracks: {
|
||||||
|
|
@ -62,3 +68,20 @@ export async function getRecentTrack(): Promise<RecentTrack> {
|
||||||
url: track.url,
|
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;
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue