diff --git a/CHANGELOG b/CHANGELOG index 3376d56a..401803af 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,8 @@ # Requirements Update (requirements will need to be reinstalled) -Updated lxml requirement to 5.1.0 Updated gitpython requirement to 3.1.41 +Updated lxml requirement to 5.1.0 +Updated psutil requirement to 5.9.8 +Updated python-dotenv requirement to 1.0.1 # New Features Added `monitor_existing` to sonarr and radarr. To update the monitored status of items existing in plex to match the `monitor` declared. @@ -10,6 +12,7 @@ Added `monitor_existing` to sonarr and radarr. To update the monitored status of Added new [BoxOfficeMojo Builder](https://metamanager.wiki/en/latest/files/builders/mojo/) - credit to @nwithan8 for the suggestion and initial code submission Added new [`trakt_chart` attributes](https://metamanager.wiki/en/latest/files/builders/trakt/#trakt-chart) `network_ids`, `studio_ids`, `votes`, `tmdb_ratings`, `tmdb_votes`, `imdb_ratings`, `imdb_votes`, `rt_meters`, `rt_user_meters`, `metascores` and removed the deprecated `network` attribute Added [Trakt and MyAnimeList Authentication Page](https://metamanager.wiki/en/latest/config/auth/) allowing users to authenticate against those services directly from the wiki. credit to @chazlarson for developing the script +Trakt Builder `trakt_userlist` value `recommendations` removed and `favorites` added. # Defaults diff --git a/VERSION b/VERSION index 82d09022..40763fe3 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.20.0-develop17 +1.20.0-develop19 diff --git a/docs/files/builders/trakt.md b/docs/files/builders/trakt.md index 7673a31a..2c621d18 100644 --- a/docs/files/builders/trakt.md +++ b/docs/files/builders/trakt.md @@ -128,11 +128,11 @@ Finds every movie/show in the Trakt Userlist. The `sync_mode: sync` and `collection_order: custom` Setting are recommended since the lists are continuously updated and in a specific order. -| Attribute | Description & Values | -|:-----------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `userlist` | **Description:** Which Trakt userlist to query
**Values:**
`watchlist`Trakt User's Watchlist
`recommendations`Trakt User's Personal Recommendations list
`watched`Trakt User's Personal Watched list
`collected`Trakt User's Personal Collected list
| -| `user` | **Description:** The User who's user lists you want to query.
**Default:** `me`
**Values:** Username of User or `me` for the authenticated user. | -| `sort_by` | **Description:** How to sort the results
**Default:** `rank`
**Values:** `rank`, `added`, `released`, `title` | +| Attribute | Description & Values | +|:-----------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `userlist` | **Description:** Which Trakt userlist to query
**Values:**
`watchlist`Trakt User's Watchlist
`favorites`Trakt User's Personal Favorite list
`watched`Trakt User's Personal Watched list
`collection`Trakt User's Personal Collection list
| +| `user` | **Description:** The User who's user lists you want to query.
**Default:** `me`
**Values:** Username of User or `me` for the authenticated user. | +| `sort_by` | **Description:** How to sort the results
**Default:** `rank`
**Values:** `rank`, `added`, `released`, `title` | ```yaml collections: @@ -153,7 +153,7 @@ collections: trakt_userlist: - userlist: watched user: me - - userlist: collected + - userlist: collection user: me collection_order: custom sync_mode: sync diff --git a/modules/builder.py b/modules/builder.py index f33c876f..715addcd 100644 --- a/modules/builder.py +++ b/modules/builder.py @@ -2109,7 +2109,7 @@ class CollectionBuilder: elif method_name in ["trakt_watchlist", "trakt_collection"]: trakt_dicts = [] for trakt_user in util.get_list(method_data, split=False): - trakt_dicts.append({"userlist": "watchlist" if "trakt_watchlist" else "collected", "user": trakt_user}) + trakt_dicts.append({"userlist": method_name[6:], "user": trakt_user}) final_method = "trakt_userlist" else: terms = method_name.split("_") diff --git a/modules/trakt.py b/modules/trakt.py index e82d2000..2a3ece15 100644 --- a/modules/trakt.py +++ b/modules/trakt.py @@ -23,6 +23,7 @@ status_translation = { "returning": "returning series", "production": "in production", "planned": "planned", "canceled": "canceled", "ended": "ended" } +userlist_options = ["favorites", "watched", "collection", "watchlist"] periods = ["daily", "weekly", "monthly", "yearly", "all"] id_translation = {"movie": "movie", "show": "show", "season": "show", "episode": "show", "person": "person", "list": "list"} id_types = { @@ -493,17 +494,28 @@ class Trakt: final_dict["status"] = util.parse(err_type, "status", trakt_dict, methods=dict_methods, parent=method_name, datatype="commalist", options=status) valid_dicts.append(final_dict) else: - userlist = util.parse(err_type, "userlist", trakt_dict, methods=dict_methods, parent=method_name, options=["recommendations", "watched", "collected", "watchlist"]) + if "userlist" not in dict_methods: + raise Failed(f"{err_type} Error: {method_name} userlist attribute not found") + og_list = trakt_dict[dict_methods["year"]] + if not og_list: + raise Failed(f"{err_type} Error: {method_name} userlist attribute is blank") + if og_list == "collected": + logger.warning(f"{err_type} Warning: userlist value collected has been deprecated using collection") + userlist = "collection" + elif og_list == "recommendations": + raise Failed(f"{err_type} Error: {method_name} userlist value recommendations has been deprecated") + else: + userlist = util.parse(err_type, "userlist", trakt_dict, methods=dict_methods, parent=method_name, options=userlist_options) user = util.parse(err_type, "user", trakt_dict, methods=dict_methods, parent=method_name, default="me") sort_by = None - if userlist in ["recommendations", "watchlist"] and "sort_by" in dict_methods: + if userlist in ["favorites", "watchlist"] and "sort_by" in dict_methods: sort_by = util.parse(err_type, "sort_by", trakt_dict, methods=dict_methods, parent=method_name, default="rank", options=["rank", "added", "released", "title"]) - self._userlist("collection" if userlist == "collected" else userlist, user, is_movie, sort_by=sort_by) + self._userlist(userlist, user, is_movie, sort_by=sort_by) valid_dicts.append({"userlist": userlist, "user": user, "sort_by": sort_by}) except Failed as e: logger.error(e) if len(valid_dicts) == 0: - raise Failed(f"Trakt Error: No valid Trakt {method_name[6:].capitalize()}") + raise Failed(f"{err_type} Error: No valid Trakt {method_name[6:].capitalize()}") return valid_dicts def get_trakt_ids(self, method, data, is_movie): diff --git a/requirements.txt b/requirements.txt index c6cd440a..6a6d3a2e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,8 +5,8 @@ num2words==0.5.13 pathvalidate==3.2.0 pillow==10.2.0 PlexAPI==4.15.7 -psutil==5.9.7 -python-dotenv==1.0.0 +psutil==5.9.8 +python-dotenv==1.0.1 python-dateutil==2.8.2 requests==2.31.0 retrying==1.3.4