Failed to sync - Unknown error
╭───────────────────── Traceback (most recent call last) ──────────────────────╮
│ /app/letterboxd_trakt/main.py:31 in run │
│ │
│ 28 │ │ │ │ continue │
│ 29 │ │ │ │
│ 30 │ │ │ if account.sync_diary: │
│ ❱ 31 │ │ │ │ sync_letterboxd_diary(config, account) │
│ 32 │ │ │ │
│ 33 │ │ │ if account.sync_watchlist: │
│ 34 │ │ │ │ sync_letterboxd_watchlist(config, account) │
│ │
│ /app/letterboxd_trakt/sync.py:258 in sync_letterboxd_diary │
│ │
│ 255 │ │ ) │
│ 256 │ │ return │
│ 257 │ │
│ ❱ 258 │ trakt_user = T_user("me") │
│ 259 │ trakt_movie_ratings: list[T_Movie] = trakt_user.get_ratings("movie │
│ 260 │ trakt_movie_watches: list[T_Movie] = trakt_user.watched_movies │
│ 261 │
│ │
│ /usr/local/lib/python3.13/site-packages/trakt/users.py:346 in init │
│ │
│ 343 │ │ if len(kwargs) > 0: │
│ 344 │ │ │ self._build(kwargs) │
│ 345 │ │ else: │
│ ❱ 346 │ │ │ self._get() │
│ 347 │ │
│ 348 │ @get │
│ 349 │ def _get(self): │
│ │
│ /usr/local/lib/python3.13/site-packages/trakt/decorators.py:48 in inner │
│ │
│ 45 │ │ │ # Handle cached property responses │
│ 46 │ │ │ return resp │
│ 47 │ │ url, generator, _ = resp │
│ ❱ 48 │ │ json_data = api().get(url) │
│ 49 │ │ try: │
│ 50 │ │ │ return generator.send(json_data) │
│ 51 │ │ except StopIteration: │
│ │
│ /usr/local/lib/python3.13/site-packages/trakt/api.py:54 in get │
│ │
│ 51 │ │ Raises: │
│ 52 │ │ │ Various exceptions from raise_if_needed based on HTTP st │
│ 53 │ │ """ │
│ ❱ 54 │ │ return self.request('get', url) │
│ 55 │ │
│ 56 │ def delete(self, url: str): │
│ 57 │ │ self.request('delete', url) │
│ │
│ /usr/local/lib/python3.13/site-packages/trakt/api.py:134 in request │
│ │
│ 131 │ │ self.logger.debug('RESPONSE [%s] (%s): %s', method, url, str(r │
│ 132 │ │ if response.status_code == 204: # HTTP no content │
│ 133 │ │ │ return None │
│ ❱ 134 │ │ self.raise_if_needed(response) │
│ 135 │ │ │
│ 136 │ │ return self.decode_response(response) │
│ 137 │
│ │
│ /usr/local/lib/python3.13/site-packages/trakt/api.py:147 in raise_if_needed │
│ │
│ 144 │ │
│ 145 │ def raise_if_needed(self, response): │
│ 146 │ │ if response.status_code in self.error_map: │
│ ❱ 147 │ │ │ raise self.error_mapresponse.status_code │
│ 148 │ │
│ 149 │ @Property │
│ 150 │ @lru_cache(maxsize=None) │
╰──────────────────────────────────────────────────────────────────────────────╯
OAuthException: Unauthorized - OAuth must be provided
Failed to sync - Unknown error
╭───────────────────── Traceback (most recent call last) ──────────────────────╮
│ /app/letterboxd_trakt/main.py:31 in run │
│ │
│ 28 │ │ │ │ continue │
│ 29 │ │ │ │
│ 30 │ │ │ if account.sync_diary: │
│ ❱ 31 │ │ │ │ sync_letterboxd_diary(config, account) │
│ 32 │ │ │ │
│ 33 │ │ │ if account.sync_watchlist: │
│ 34 │ │ │ │ sync_letterboxd_watchlist(config, account) │
│ │
│ /app/letterboxd_trakt/sync.py:258 in sync_letterboxd_diary │
│ │
│ 255 │ │ ) │
│ 256 │ │ return │
│ 257 │ │
│ ❱ 258 │ trakt_user = T_user("me") │
│ 259 │ trakt_movie_ratings: list[T_Movie] = trakt_user.get_ratings("movie │
│ 260 │ trakt_movie_watches: list[T_Movie] = trakt_user.watched_movies │
│ 261 │
│ │
│ /usr/local/lib/python3.13/site-packages/trakt/users.py:346 in init │
│ │
│ 343 │ │ if len(kwargs) > 0: │
│ 344 │ │ │ self._build(kwargs) │
│ 345 │ │ else: │
│ ❱ 346 │ │ │ self._get() │
│ 347 │ │
│ 348 │ @get │
│ 349 │ def _get(self): │
│ │
│ /usr/local/lib/python3.13/site-packages/trakt/decorators.py:48 in inner │
│ │
│ 45 │ │ │ # Handle cached property responses │
│ 46 │ │ │ return resp │
│ 47 │ │ url, generator, _ = resp │
│ ❱ 48 │ │ json_data = api().get(url) │
│ 49 │ │ try: │
│ 50 │ │ │ return generator.send(json_data) │
│ 51 │ │ except StopIteration: │
│ │
│ /usr/local/lib/python3.13/site-packages/trakt/api.py:54 in get │
│ │
│ 51 │ │ Raises: │
│ 52 │ │ │ Various exceptions from
raise_if_neededbased on HTTP st ││ 53 │ │ """ │
│ ❱ 54 │ │ return self.request('get', url) │
│ 55 │ │
│ 56 │ def delete(self, url: str): │
│ 57 │ │ self.request('delete', url) │
│ │
│ /usr/local/lib/python3.13/site-packages/trakt/api.py:134 in request │
│ │
│ 131 │ │ self.logger.debug('RESPONSE [%s] (%s): %s', method, url, str(r │
│ 132 │ │ if response.status_code == 204: # HTTP no content │
│ 133 │ │ │ return None │
│ ❱ 134 │ │ self.raise_if_needed(response) │
│ 135 │ │ │
│ 136 │ │ return self.decode_response(response) │
│ 137 │
│ │
│ /usr/local/lib/python3.13/site-packages/trakt/api.py:147 in raise_if_needed │
│ │
│ 144 │ │
│ 145 │ def raise_if_needed(self, response): │
│ 146 │ │ if response.status_code in self.error_map: │
│ ❱ 147 │ │ │ raise self.error_mapresponse.status_code │
│ 148 │ │
│ 149 │ @Property │
│ 150 │ @lru_cache(maxsize=None) │
╰──────────────────────────────────────────────────────────────────────────────╯
OAuthException: Unauthorized - OAuth must be provided