Aurora SpotiRip desktop and web app
- 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
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
import superjson from "superjson";
|
||||
|
||||
export type SpotifyAlbumTrack = {
|
||||
id: string;
|
||||
name: string;
|
||||
artist: string;
|
||||
uri?: string;
|
||||
durationMs: number;
|
||||
trackNumber?: number;
|
||||
discNumber?: number;
|
||||
externalUrl?: string;
|
||||
};
|
||||
|
||||
export type OutputType = {
|
||||
album: {
|
||||
id: string;
|
||||
name: string;
|
||||
artist: string;
|
||||
releaseDate?: string;
|
||||
totalTracks?: number;
|
||||
imageUrl?: string;
|
||||
externalUrl?: string;
|
||||
};
|
||||
tracks: SpotifyAlbumTrack[];
|
||||
};
|
||||
|
||||
export async function getSpotifyAlbum(albumId: string): Promise<OutputType> {
|
||||
const response = await fetch(
|
||||
"/_api/spotify-album?albumId=" + encodeURIComponent(albumId),
|
||||
{ cache: "no-store" },
|
||||
);
|
||||
if (!response.ok) {
|
||||
const parsed = superjson.parse<{ error: string }>(await response.text());
|
||||
throw new Error(parsed.error);
|
||||
}
|
||||
return superjson.parse<OutputType>(await response.text());
|
||||
}
|
||||
Reference in New Issue
Block a user