more refactoring - compiles now but not extensively tested

This commit is contained in:
Drew Weymouth
2023-05-14 20:50:06 -07:00
parent 85042fcbd4
commit fd106560d0
20 changed files with 216 additions and 249 deletions
@@ -95,6 +95,7 @@ func (s *subsonicMediaProvider) GetArtist(artistID string) (*mediaprovider.Artis
Artist: mediaprovider.Artist{
ID: ar.ID,
Name: ar.Name,
Favorite: !ar.Starred.IsZero(),
AlbumCount: ar.AlbumCount,
},
Albums: sharedutil.MapSlice(ar.Album, toAlbum),
@@ -168,12 +169,21 @@ func (s *subsonicMediaProvider) GetPlaylist(playlistID string) (*mediaprovider.P
return nil, err
}
return &mediaprovider.PlaylistWithTracks{
Playlist: toPlaylist(pl),
Tracks: sharedutil.MapSlice(pl.Entry, toTrack),
Playlist: mediaprovider.Playlist{
ID: pl.ID,
CoverArtID: pl.CoverArt,
Name: pl.Name,
Description: pl.Comment,
TrackCount: pl.SongCount,
Public: pl.Public,
Owner: pl.Owner,
Duration: pl.Duration,
},
Tracks: sharedutil.MapSlice(pl.Entry, toTrack),
}, nil
}
func (s *subsonicMediaProvider) GetPlaylists() ([]mediaprovider.Playlist, error) {
func (s *subsonicMediaProvider) GetPlaylists() ([]*mediaprovider.Playlist, error) {
pl, err := s.client.GetPlaylists(map[string]string{})
if err != nil {
return nil, err
@@ -209,6 +219,18 @@ func (s *subsonicMediaProvider) GetStreamURL(trackID string) (string, error) {
return u.String(), nil
}
func (s *subsonicMediaProvider) GetTopTracks(artist mediaprovider.Artist, count int) ([]*mediaprovider.Track, error) {
params := map[string]string{}
if count > 0 {
params["count"] = strconv.Itoa(count)
}
tr, err := s.client.GetTopSongs(artist.Name, params)
if err != nil {
return nil, err
}
return sharedutil.MapSlice(tr, toTrack), nil
}
func (s *subsonicMediaProvider) ReplacePlaylistTracks(playlistID string, trackIDs []string) error {
return s.client.CreatePlaylistWithTracks(trackIDs, map[string]string{"playlistId": playlistID})
}
@@ -319,8 +341,9 @@ func toArtist(ar *subsonic.Artist) *mediaprovider.Artist {
return nil
}
return &mediaprovider.Artist{
ID: ar.ID,
Name: ar.Name,
ID: ar.ID,
Name: ar.Name,
Favorite: !ar.Starred.IsZero(),
}
}
@@ -331,16 +354,20 @@ func toArtistFromID3(ar *subsonic.ArtistID3) *mediaprovider.Artist {
return &mediaprovider.Artist{
ID: ar.ID,
Name: ar.Name,
Favorite: !ar.Starred.IsZero(),
AlbumCount: ar.AlbumCount,
}
}
func toPlaylist(pl *subsonic.Playlist) mediaprovider.Playlist {
return mediaprovider.Playlist{
func toPlaylist(pl *subsonic.Playlist) *mediaprovider.Playlist {
return &mediaprovider.Playlist{
Name: pl.Name,
ID: pl.ID,
CoverArtID: pl.CoverArt,
Description: pl.Comment,
Owner: pl.Owner,
Public: pl.Public,
TrackCount: pl.SongCount,
Duration: pl.Duration,
}
}