Skip to content

Commit d73f7e0

Browse files
committed
support library scoping on more Jellyfin browsing operations
1 parent f4e84d9 commit d73f7e0

File tree

6 files changed

+27
-17
lines changed

6 files changed

+27
-17
lines changed

backend/mediaprovider/jellyfin/artistiterator.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ func (j *jellyfinMediaProvider) IterateArtists(sortOrder string, filter mediapro
5454
return j.client.GetAlbumArtists(jellyfin.QueryOpts{
5555
Sort: jfSort,
5656
Paging: paging,
57+
Filter: jellyfin.Filter{ParentID: j.currentLibraryID},
5758
})
5859
},
5960
sortFn,

backend/mediaprovider/jellyfin/iterators.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,10 @@ func (j *jellyfinMediaProvider) IterateAlbums(sortOrder string, filter mediaprov
7777

7878
func (j *jellyfinMediaProvider) SearchAlbums(searchQuery string, filter mediaprovider.AlbumFilter) mediaprovider.AlbumIterator {
7979
fetcher := func(offs, limit int) ([]*mediaprovider.Album, error) {
80-
sr, err := j.client.Search(searchQuery, jellyfin.TypeAlbum, jellyfin.Paging{StartIndex: offs, Limit: limit})
80+
var opts jellyfin.QueryOpts
81+
opts.Paging = jellyfin.Paging{StartIndex: offs, Limit: limit}
82+
opts.Filter.ParentID = j.currentLibraryID
83+
sr, err := j.client.Search(searchQuery, jellyfin.TypeAlbum, opts)
8184
if err != nil {
8285
return nil, err
8386
}
@@ -103,7 +106,10 @@ func (j *jellyfinMediaProvider) IterateTracks(searchQuery string) mediaprovider.
103106
}
104107
} else {
105108
fetcher = func(offs, limit int) ([]*mediaprovider.Track, error) {
106-
sr, err := j.client.Search(searchQuery, jellyfin.TypeSong, jellyfin.Paging{StartIndex: offs, Limit: limit})
109+
var opts jellyfin.QueryOpts
110+
opts.Paging = jellyfin.Paging{StartIndex: offs, Limit: limit}
111+
opts.Filter.ParentID = j.currentLibraryID
112+
sr, err := j.client.Search(searchQuery, jellyfin.TypeSong, opts)
107113
if err != nil {
108114
return nil, err
109115
}

backend/mediaprovider/jellyfin/jellyfinmediaprovider.go

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ func (j *jellyfinMediaProvider) GetLibraries() ([]mediaprovider.Library, error)
7373

7474
func (j *jellyfinMediaProvider) SetLibrary(id string) error {
7575
j.currentLibraryID = id
76+
j.genresCached = nil
7677
return nil
7778
}
7879

@@ -235,15 +236,16 @@ func (j *jellyfinMediaProvider) GetCoverArt(id string, size int) (image.Image, e
235236
return j.client.GetItemImage(id, "Primary", size, 92)
236237
}
237238

238-
func (s *jellyfinMediaProvider) GetFavorites() (mediaprovider.Favorites, error) {
239+
func (j *jellyfinMediaProvider) GetFavorites() (mediaprovider.Favorites, error) {
239240
var wg sync.WaitGroup
240241
var favorites mediaprovider.Favorites
241242

243+
var opts jellyfin.QueryOpts
244+
opts.Filter.Favorite = true
245+
opts.Filter.ParentID = j.currentLibraryID
242246
wg.Add(1)
243247
go func() {
244-
var opts jellyfin.QueryOpts
245-
opts.Filter.Favorite = true
246-
al, err := s.client.GetAlbums(opts)
248+
al, err := j.client.GetAlbums(opts)
247249
if err == nil && len(al) > 0 {
248250
favorites.Albums = sharedutil.MapSlice(al, toAlbum)
249251
}
@@ -252,9 +254,7 @@ func (s *jellyfinMediaProvider) GetFavorites() (mediaprovider.Favorites, error)
252254

253255
wg.Add(1)
254256
go func() {
255-
var opts jellyfin.QueryOpts
256-
opts.Filter.Favorite = true
257-
ar, err := s.client.GetAlbumArtists(opts)
257+
ar, err := j.client.GetAlbumArtists(opts)
258258
if err == nil && len(ar) > 0 {
259259
favorites.Artists = sharedutil.MapSlice(ar, toArtist)
260260
}
@@ -263,9 +263,7 @@ func (s *jellyfinMediaProvider) GetFavorites() (mediaprovider.Favorites, error)
263263

264264
wg.Add(1)
265265
go func() {
266-
var opts jellyfin.QueryOpts
267-
opts.Filter.Favorite = true
268-
tr, err := s.client.GetSongs(opts)
266+
tr, err := j.client.GetSongs(opts)
269267
if err == nil && len(tr) > 0 {
270268
favorites.Tracks = sharedutil.MapSlice(tr, toTrack)
271269
}
@@ -281,7 +279,7 @@ func (j *jellyfinMediaProvider) GetGenres() ([]*mediaprovider.Genre, error) {
281279
return j.genresCached, nil
282280
}
283281

284-
g, err := j.client.GetGenres(jellyfin.Paging{}, "")
282+
g, err := j.client.GetGenres(jellyfin.Paging{}, j.currentLibraryID)
285283
if err != nil {
286284
return nil, err
287285
}

backend/mediaprovider/jellyfin/searchall.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,24 @@ func (j *jellyfinMediaProvider) SearchAll(searchQuery string, maxResults int) ([
2020
var genres []jellyfin.NameID
2121
var playlists []*jellyfin.Playlist
2222

23+
var opts jellyfin.QueryOpts
24+
opts.Paging.Limit = limit
25+
opts.Filter.ParentID = j.currentLibraryID
2326
wg.Add(1)
2427
go func() {
25-
albumResult, _ := j.client.Search(searchQuery, jellyfin.TypeAlbum, jellyfin.Paging{Limit: limit})
28+
albumResult, _ := j.client.Search(searchQuery, jellyfin.TypeAlbum, opts)
2629
albums = albumResult.Albums
2730
wg.Done()
2831
}()
2932
wg.Add(1)
3033
go func() {
31-
artistResult, _ := j.client.Search(searchQuery, jellyfin.TypeArtist, jellyfin.Paging{Limit: limit})
34+
artistResult, _ := j.client.Search(searchQuery, jellyfin.TypeArtist, opts)
3235
artists = artistResult.Artists
3336
wg.Done()
3437
}()
3538
wg.Add(1)
3639
go func() {
37-
songResult, _ := j.client.Search(searchQuery, jellyfin.TypeSong, jellyfin.Paging{Limit: limit})
40+
songResult, _ := j.client.Search(searchQuery, jellyfin.TypeSong, opts)
3841
songs = songResult.Songs
3942
wg.Done()
4043
}()

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ require (
1010
github.com/deluan/sanitize v0.0.0-20230310221930-6e18967d9fc1
1111
github.com/dweymouth/fyne-advanced-list v0.0.0-20250211191927-58ea85eec72c
1212
github.com/dweymouth/fyne-tooltip v0.3.0
13-
github.com/dweymouth/go-jellyfin v0.0.0-20250715154414-d0a1630ee74f
13+
github.com/dweymouth/go-jellyfin v0.0.0-20250716005557-0ea2becece1f
1414
github.com/godbus/dbus/v5 v5.1.0
1515
github.com/google/uuid v1.3.0
1616
github.com/hashicorp/go-retryablehttp v0.7.7

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ github.com/dweymouth/go-jellyfin v0.0.0-20250531151636-29591764f0a0 h1:9t1CR83uz
2727
github.com/dweymouth/go-jellyfin v0.0.0-20250531151636-29591764f0a0/go.mod h1:fcUagHBaQnt06GmBAllNE0J4O/7064zXRWdqnTTtVjI=
2828
github.com/dweymouth/go-jellyfin v0.0.0-20250715154414-d0a1630ee74f h1:7O7Cn17pwKHG7zPgNhxMabXJP1ZdmNVxCb4i8yJgVZo=
2929
github.com/dweymouth/go-jellyfin v0.0.0-20250715154414-d0a1630ee74f/go.mod h1:fcUagHBaQnt06GmBAllNE0J4O/7064zXRWdqnTTtVjI=
30+
github.com/dweymouth/go-jellyfin v0.0.0-20250716005557-0ea2becece1f h1:QsKPwFpTHuYHEEuhvp4VBClkHh00bNNgQ/2Ij1bkk8M=
31+
github.com/dweymouth/go-jellyfin v0.0.0-20250716005557-0ea2becece1f/go.mod h1:fcUagHBaQnt06GmBAllNE0J4O/7064zXRWdqnTTtVjI=
3032
github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
3133
github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
3234
github.com/felixge/fgprof v0.9.3 h1:VvyZxILNuCiUCSXtPtYmmtGvb65nqXh2QFWc0Wpf2/g=

0 commit comments

Comments
 (0)