refactor: better organize some code
This commit is contained in:
parent
3e640524e8
commit
22c773c38e
@ -1,15 +1,19 @@
|
|||||||
import { get, writable } from "svelte/store"
|
import { get, writable } from "svelte/store"
|
||||||
|
|
||||||
const cachedLastTrack = writable<{track: LastTrack | null, since: number}>({track: null, since: 0})
|
const GET_RECENT_TRACKS_ENDPOINT = "https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=yusdacra&api_key=da1911d405b5b37383e200b8f36ee9ec&format=json&limit=1"
|
||||||
export type LastTrack = {name: string, artist: string, image: string | null, link: string}
|
const CACHE_EXPIRY_SECONDS = 10
|
||||||
|
|
||||||
|
type LastTrack = {name: string, artist: string, image: string | null, link: string}
|
||||||
|
type CachedLastTrack = {track: LastTrack | null, since: number}
|
||||||
|
const cachedLastTrack = writable<CachedLastTrack>({track: null, since: 0})
|
||||||
|
|
||||||
export const lastFmGetNowPlaying: () => Promise<LastTrack | null> = async () => {
|
export const lastFmGetNowPlaying: () => Promise<LastTrack | null> = async () => {
|
||||||
var cached = get(cachedLastTrack)
|
var cached = get(cachedLastTrack)
|
||||||
if (Date.now() - cached.since < 10 * 1000) {
|
if (Date.now() - cached.since < CACHE_EXPIRY_SECONDS * 1000) {
|
||||||
return cached.track
|
return cached.track
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
const API_URL = "https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=yusdacra&api_key=da1911d405b5b37383e200b8f36ee9ec&format=json&limit=1"
|
var resp = await (await fetch(GET_RECENT_TRACKS_ENDPOINT)).json()
|
||||||
var resp = await (await fetch(API_URL)).json()
|
|
||||||
var track = resp.recenttracks.track[0] ?? null
|
var track = resp.recenttracks.track[0] ?? null
|
||||||
if (!(track['@attr'].nowplaying ?? null)) {
|
if (!(track['@attr'].nowplaying ?? null)) {
|
||||||
throw "no nowplaying track found"
|
throw "no nowplaying track found"
|
||||||
|
@ -3,10 +3,15 @@ import SGDB from "steamgriddb";
|
|||||||
import { get, writable } from "svelte/store";
|
import { get, writable } from "svelte/store";
|
||||||
|
|
||||||
const STEAM_ID = "76561198106829949"
|
const STEAM_ID = "76561198106829949"
|
||||||
|
const GET_PLAYER_SUMMARY_ENDPOINT = `http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=${env.STEAM_API_KEY}&steamids=${STEAM_ID}&format=json`
|
||||||
|
const CACHE_EXPIRY_SECONDS = 10
|
||||||
|
|
||||||
|
type LastGame = {name: string, link: string, icon: string, pfp: string}
|
||||||
|
type CachedLastGame = {game: LastGame | null, since: number}
|
||||||
|
|
||||||
const steamgriddbClient = writable<SGDB | null>(null);
|
const steamgriddbClient = writable<SGDB | null>(null);
|
||||||
const cachedLastGame = writable<{game: LastGame | null, since: number}>({game: null, since: 0})
|
const cachedLastGame = writable<CachedLastGame>({game: null, since: 0})
|
||||||
type LastGame = {name: string, link: string, icon: string, pfp: string}
|
|
||||||
export const steamGetNowPlaying: () => Promise<LastGame | null> = async () => {
|
export const steamGetNowPlaying: () => Promise<LastGame | null> = async () => {
|
||||||
var griddbClient = get(steamgriddbClient)
|
var griddbClient = get(steamgriddbClient)
|
||||||
if (griddbClient === null) {
|
if (griddbClient === null) {
|
||||||
@ -14,12 +19,11 @@ export const steamGetNowPlaying: () => Promise<LastGame | null> = async () => {
|
|||||||
steamgriddbClient.set(griddbClient)
|
steamgriddbClient.set(griddbClient)
|
||||||
}
|
}
|
||||||
var cached = get(cachedLastGame)
|
var cached = get(cachedLastGame)
|
||||||
if (Date.now() - cached.since < 10 * 1000) {
|
if (Date.now() - cached.since < CACHE_EXPIRY_SECONDS * 1000) {
|
||||||
return cached.game
|
return cached.game
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
const API_URL = `http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=${env.STEAM_API_KEY}&steamids=${STEAM_ID}&format=json`
|
var profile = (await (await fetch(GET_PLAYER_SUMMARY_ENDPOINT)).json()).response.players[0]
|
||||||
var profile = (await (await fetch(API_URL)).json()).response.players[0]
|
|
||||||
if (!profile.gameid) {
|
if (!profile.gameid) {
|
||||||
throw "no game is being played"
|
throw "no game is being played"
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ export const ssr = true;
|
|||||||
export const prerender = false;
|
export const prerender = false;
|
||||||
export const trailingSlash = 'always';
|
export const trailingSlash = 'always';
|
||||||
|
|
||||||
export async function load({ request, cookies, url, setHeaders, fetch }) {
|
export async function load({ request, cookies, url, setHeaders }) {
|
||||||
notifyDarkVisitors(url, request) // no await so it doesnt block load
|
notifyDarkVisitors(url, request) // no await so it doesnt block load
|
||||||
|
|
||||||
setHeaders({ 'Cache-Control': 'no-cache' })
|
setHeaders({ 'Cache-Control': 'no-cache' })
|
||||||
|
Loading…
Reference in New Issue
Block a user