From 0bd0ea891951c7e34db88bdb614d218fbf21caa1 Mon Sep 17 00:00:00 2001 From: natilou Date: Fri, 29 Mar 2024 12:17:03 -0300 Subject: [PATCH] adding get son radio support to Jellyfin server --- backend/mediaprovider/jellyfin/jellyfinmediaprovider.go | 8 ++++++++ ui/controller/controller.go | 6 +++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/backend/mediaprovider/jellyfin/jellyfinmediaprovider.go b/backend/mediaprovider/jellyfin/jellyfinmediaprovider.go index c4b40f6..882c885 100644 --- a/backend/mediaprovider/jellyfin/jellyfinmediaprovider.go +++ b/backend/mediaprovider/jellyfin/jellyfinmediaprovider.go @@ -452,3 +452,11 @@ func (j *jellyfinMediaProvider) fillPlaylist(p *jellyfin.Playlist, pl *mediaprov pl.Owner = j.client.LoggedInUser() pl.Public = false } + +func (j *jellyfinMediaProvider) GetSongRadio(trackID string, count int) ([]*mediaprovider.Track, error) { + tr, err := j.client.GetInstantMix(trackID, jellyfin.TypeSong, count) + if err != nil { + return nil, err + } + return sharedutil.MapSlice(tr, toTrack), nil +} diff --git a/ui/controller/controller.go b/ui/controller/controller.go index 07f9a20..d64bc61 100644 --- a/ui/controller/controller.go +++ b/ui/controller/controller.go @@ -149,7 +149,7 @@ func (m *Controller) connectTracklistActionsWithReplayGainMode(tracklist *widget go func() { tracks, err := m.GetSongRadioTracks(track) if err != nil { - log.Printf("Error getting song radio: ", err) + log.Println("Error getting song radio: ", err) return } m.App.PlaybackManager.LoadTracks(tracks, false, false) @@ -886,12 +886,12 @@ func (c *Controller) ShowAlbumInfoDialog(albumID, albumName string, albumCover i func (c *Controller) GetSongRadioTracks(sourceTrack *mediaprovider.Track) ([]*mediaprovider.Track, error) { r, ok := c.App.ServerManager.Server.(mediaprovider.SupportsSongRadio) if !ok { - return nil, fmt.Errorf("Server does not support song radio") + return nil, fmt.Errorf("server does not support song radio") } radioTracks, err := r.GetSongRadio(sourceTrack.ID, 100) if err != nil { - return nil, fmt.Errorf("Error getting song radio: ", err) + return nil, fmt.Errorf("error getting song radio: %s", err.Error()) } // The goal of this implementation is to place the source track first in the queue.