From: Harmon Date: Sun, 7 Feb 2021 19:45:49 +0000 (-0600) Subject: Handle Twitter API issue with duplicate pages for API.search_users X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=3c1a397cd8d5bb81ff245ca0645c6462e57a5d33;p=tweepy.git Handle Twitter API issue with duplicate pages for API.search_users Resolves #1465 --- diff --git a/tweepy/cursor.py b/tweepy/cursor.py index 17b4904..5c09c22 100644 --- a/tweepy/cursor.py +++ b/tweepy/cursor.py @@ -181,6 +181,12 @@ class PageIterator(BaseIterator): def __init__(self, method, *args, **kwargs): BaseIterator.__init__(self, method, *args, **kwargs) self.current_page = 1 + # Keep track of previous page of items to handle Twitter API issue with + # duplicate pages + # https://twittercommunity.com/t/odd-pagination-behavior-with-get-users-search/148502 + # https://github.com/tweepy/tweepy/issues/1465 + # https://github.com/tweepy/tweepy/issues/958 + self.previous_items = [] def next(self): if self.limit > 0: @@ -188,9 +194,16 @@ class PageIterator(BaseIterator): raise StopIteration items = self.method(page=self.current_page, *self.args, **self.kwargs) + if len(items) == 0: raise StopIteration + + for item in items: + if item in self.previous_items: + raise StopIteration + self.current_page += 1 + self.previous_items = items return items def prev(self):