From e26a62f760753446def2210071d909770d77dcc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Tue, 7 Jul 2026 16:07:33 +0300 Subject: [PATCH 1/5] Extract _build_watched_movies helper and refactor watched_movies to use it Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --- trakt/users.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/trakt/users.py b/trakt/users.py index 9f38ed6..6f24391 100644 --- a/trakt/users.py +++ b/trakt/users.py @@ -509,6 +509,19 @@ def show_collection(self): self._show_collection.append(show) yield self._show_collection + def _build_watched_movies(self, data): + """Parse raw API response data into a list of :class:`Movie` objects. + + :param data: List of raw movie dicts from the Trakt API + :return: List of :class:`Movie` instances + """ + watched_movies = [] + for movie in data: + movie_data = movie.pop('movie') + movie_data.update(movie) + watched_movies.append(Movie(**movie_data)) + return watched_movies + @property @get def watched_movies(self): @@ -519,11 +532,7 @@ def watched_movies(self): data = yield 'users/{user}/watched/movies'.format( user=slugify(self.username) ) - self._watched_movies = [] - for movie in data: - movie_data = movie.pop('movie') - movie_data.update(movie) - self._watched_movies.append(Movie(**movie_data)) + self._watched_movies = self._build_watched_movies(data) yield self._watched_movies @property From 22761ba01f8b6394fdcae6b5335b1ea726ebb169 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Tue, 7 Jul 2026 16:07:41 +0300 Subject: [PATCH 2/5] Add User.get_watched_movies method Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --- trakt/users.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/trakt/users.py b/trakt/users.py index 6f24391..e85fe87 100644 --- a/trakt/users.py +++ b/trakt/users.py @@ -522,6 +522,18 @@ def _build_watched_movies(self, data): watched_movies.append(Movie(**movie_data)) return watched_movies + @get + def get_watched_movies(self): + """Watched progress for all :class:`Movie` objects for this + :class:`User`. + + :return: List of :class:`Movie` instances + """ + data = yield 'users/{user}/watched/movies'.format( + user=slugify(self.username) + ) + yield self._build_watched_movies(data) + @property @get def watched_movies(self): From 6a6d92a82de9ed807648b0c74dff93dc6f4b8365 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Tue, 7 Jul 2026 16:07:48 +0300 Subject: [PATCH 3/5] Add test for get_watched_movies Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --- tests/test_users.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/test_users.py b/tests/test_users.py index 4a76264..96abe5c 100644 --- a/tests/test_users.py +++ b/tests/test_users.py @@ -125,6 +125,13 @@ def test_watched(): assert all([isinstance(s, TVShow) for s in sean.watched_shows]) +def test_get_watched_movies(): + sean = User('sean') + watched_movies = sean.get_watched_movies() + assert isinstance(watched_movies, list) + assert all([isinstance(m, Movie) for m in watched_movies]) + + def test_stats(): sean = User('sean') assert isinstance(sean.get_stats(), dict) From 7d5ddad9a39c8d2895fd005fb8a79e4b46e4c34d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Tue, 7 Jul 2026 16:12:24 +0300 Subject: [PATCH 4/5] Refactor watched_movies property to use get_watched_movies Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --- trakt/users.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/trakt/users.py b/trakt/users.py index e85fe87..39b58c7 100644 --- a/trakt/users.py +++ b/trakt/users.py @@ -541,10 +541,7 @@ def watched_movies(self): collection. """ if self._watched_movies is None: - data = yield 'users/{user}/watched/movies'.format( - user=slugify(self.username) - ) - self._watched_movies = self._build_watched_movies(data) + self._watched_movies = self.get_watched_movies() yield self._watched_movies @property From 6efabb217f628b79cc797e31e3da845dded5aafa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Tue, 7 Jul 2026 16:18:55 +0300 Subject: [PATCH 5/5] Remove redundant @get from watched_movies property Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --- trakt/users.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/trakt/users.py b/trakt/users.py index 39b58c7..be39a8e 100644 --- a/trakt/users.py +++ b/trakt/users.py @@ -535,14 +535,13 @@ def get_watched_movies(self): yield self._build_watched_movies(data) @property - @get def watched_movies(self): """Watched progress for all :class:`Movie`'s in this :class:`User`'s collection. """ if self._watched_movies is None: self._watched_movies = self.get_watched_movies() - yield self._watched_movies + return self._watched_movies @property @get