- Spotify playlist, library, album and artist browsing with in-app playback - Song, playlist and album downloads via spotdl with YouTube and Bandcamp fallbacks - Electron desktop app (castLabs Widevine) with a permanent sidebar layout - Linux and Windows packaging scripts
38 lines
956 B
TypeScript
38 lines
956 B
TypeScript
export type LibraryHistoryEntry = {
|
|
id: string;
|
|
timestamp: number;
|
|
kind: "playlist" | "identify" | "convert";
|
|
title: string;
|
|
trackCount?: number;
|
|
artworkUrl?: string;
|
|
sourceUrl?: string;
|
|
};
|
|
|
|
const KEY = "aurora-spotirip-history-v1";
|
|
|
|
export function loadLibraryHistory(): LibraryHistoryEntry[] {
|
|
if (typeof window === "undefined") return [];
|
|
try {
|
|
const parsed = JSON.parse(window.localStorage.getItem(KEY) || "[]");
|
|
return Array.isArray(parsed) ? parsed : [];
|
|
} catch {
|
|
return [];
|
|
}
|
|
}
|
|
|
|
export function addLibraryHistory(entry: Omit<LibraryHistoryEntry, "id" | "timestamp">) {
|
|
const current = loadLibraryHistory();
|
|
const next: LibraryHistoryEntry[] = [
|
|
{
|
|
...entry,
|
|
id: crypto.randomUUID(),
|
|
timestamp: Date.now(),
|
|
},
|
|
...current,
|
|
].slice(0, 200);
|
|
window.localStorage.setItem(KEY, JSON.stringify(next));
|
|
}
|
|
|
|
export function clearLibraryHistory() {
|
|
window.localStorage.removeItem(KEY);
|
|
} |