This commit is contained in:
simojenki
2025-02-17 05:47:19 +00:00
parent b0dc11abcb
commit b97590dd36
5 changed files with 181 additions and 164 deletions

View File

@@ -60,7 +60,7 @@ export type Encoding = {
mimeType: string
}
export type Track = {
export type TrackSummary = {
id: string;
name: string;
encoding: Encoding,
@@ -68,9 +68,12 @@ export type Track = {
number: number | undefined;
genre: Genre | undefined;
coverArt: BUrn | undefined;
album: AlbumSummary;
artist: ArtistSummary;
rating: Rating;
}
export type Track = TrackSummary & {
album: AlbumSummary;
};
export type RadioStation = {
@@ -129,6 +132,18 @@ export const albumToAlbumSummary = (it: Album): AlbumSummary => ({
coverArt: it.coverArt
});
export const trackToTrackSummary = (it: Track): TrackSummary => ({
id: it.id,
name: it.name,
encoding: it.encoding,
duration: it.duration,
number: it.number,
genre: it.genre,
coverArt: it.coverArt,
artist: it.artist,
rating: it.rating
});
export const playlistToPlaylistSummary = (it: Playlist): PlaylistSummary => ({
id: it.id,
name: it.name,
@@ -199,8 +214,8 @@ export interface MusicLibrary {
deletePlaylist(id: string): Promise<boolean>
addToPlaylist(playlistId: string, trackId: string): Promise<boolean>
removeFromPlaylist(playlistId: string, indicies: number[]): Promise<boolean>
similarSongs(id: string): Promise<Track[]>;
topSongs(artistId: string): Promise<Track[]>;
similarSongs(id: string): Promise<TrackSummary[]>;
topSongs(artistId: string): Promise<TrackSummary[]>;
radioStation(id: string): Promise<RadioStation>
radioStations(): Promise<RadioStation[]>
}