diff --git a/backend/mediaprovider/mediaprovider.go b/backend/mediaprovider/mediaprovider.go index a8e61c2..126e7d0 100644 --- a/backend/mediaprovider/mediaprovider.go +++ b/backend/mediaprovider/mediaprovider.go @@ -34,7 +34,9 @@ type Favorites struct { type MediaProvider interface { GetAlbum(albumID string) (*AlbumWithTracks, error) - GetArtist(artistID string) (*Artist, error) + GetArtist(artistID string) (*ArtistWithAlbums, error) + + GetArtistInfo(artistID string) (*ArtistInfo, error) GetPlaylist(playlistID string) (*PlaylistWithTracks, error) @@ -56,9 +58,21 @@ type MediaProvider interface { GetFavorites() (Favorites, error) - GetPlaylists() ([]Playlist, error) - SetFavorite(params RatingFavoriteParameters) error SetRating(params RatingFavoriteParameters) error + + GetPlaylists() ([]Playlist, error) + + CreatePlaylist(name string, trackIDs []string) error + + EditPlaylist(id, name, description string, public bool) error + + EditPlaylistTracks(id string, trackIDsToAdd, trackIDsToRemove []string) error + + ReplacePlaylistTracks(id string, trackIDs []string) error + + DeletePlaylist(id string) error + + Scrobble(trackID string, submission bool) error } diff --git a/backend/mediaprovider/model.go b/backend/mediaprovider/model.go index 64f7a50..366a691 100644 --- a/backend/mediaprovider/model.go +++ b/backend/mediaprovider/model.go @@ -19,11 +19,23 @@ type AlbumWithTracks struct { } type Artist struct { - ID string - Name string + ID string + Name string + AlbumCount int +} + +type ArtistWithAlbums struct { + Artist Albums []Album } +type ArtistInfo struct { + Biography string + LastFMUrl string + ImageURL string + SimilarArtists []Artist +} + type Genre struct { Name string AlbumCount int @@ -39,10 +51,11 @@ type Track struct { Genre string ArtistIDs []string ArtistNames []string + Album string Rating int Favorite bool Size int64 - PlayCount int64 + PlayCount int FilePath string } diff --git a/backend/mediaprovider/subsonic/subsonicmediaprovider.go b/backend/mediaprovider/subsonic/subsonicmediaprovider.go new file mode 100644 index 0000000..e69de29