diff --git a/plexapi/base.py b/plexapi/base.py index 0852426d2..d35ea8f11 100644 --- a/plexapi/base.py +++ b/plexapi/base.py @@ -283,6 +283,11 @@ def fetchItems(self, ekey, cls=None, container_start=None, container_size=None, results.extend(subresults) + container_start += container_size + + if container_start > total_size: + break + wanted_number_of_items = total_size - offset if maxresults is not None: wanted_number_of_items = min(maxresults, wanted_number_of_items) @@ -291,11 +296,6 @@ def fetchItems(self, ekey, cls=None, container_start=None, container_size=None, if wanted_number_of_items <= len(results): break - container_start += container_size - - if container_start > total_size: - break - return results def fetchItem(self, ekey, cls=None, **kwargs): diff --git a/tests/test_library.py b/tests/test_library.py index cc5289d5e..0bb2071f6 100644 --- a/tests/test_library.py +++ b/tests/test_library.py @@ -120,6 +120,16 @@ def test_library_fetchItem(plex, movie): assert item1 == item2 == movie +def test_library_fetchItems_with_maxresults(plex, tvshows): + items = tvshows.searchEpisodes() + assert len(items) > 5 + size = len(items) - 5 + ratingKeys = [item.ratingKey for item in items] + items1 = plex.fetchItems(ekey=ratingKeys, container_size=size) + items2 = plex.fetchItems(ekey=ratingKeys, container_size=size, maxresults=len(items)) + assert items1 == items2 == items + + def test_library_onDeck(plex, movie): movie.updateProgress(movie.duration // 4) # set progress to 25% assert movie in plex.library.onDeck()