diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 826a647..4dcee0f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,6 +25,7 @@ jobs: runs-on: ubuntu-latest needs: pytest strategy: + fail-fast: false matrix: include: - dockerfile: Dockerfile.alpine diff --git a/src/black_white.py b/src/black_white.py index e32ee08..5b44c03 100644 --- a/src/black_white.py +++ b/src/black_white.py @@ -15,7 +15,7 @@ def setup_black_white_lists( blacklist_library, blacklist_library_type, blacklist_users, - "White", + "Black", library_mapping, user_mapping, ) @@ -24,7 +24,7 @@ def setup_black_white_lists( whitelist_library, whitelist_library_type, whitelist_users, - "Black", + "White", library_mapping, user_mapping, ) diff --git a/src/jellyfin.py b/src/jellyfin.py index 78f0484..32078bc 100644 --- a/src/jellyfin.py +++ b/src/jellyfin.py @@ -49,8 +49,11 @@ def get_episode_guids(episode): # Create a dictionary for the episode with its provider IDs and media sources episode_dict = {k.lower(): v for k, v in episode["ProviderIds"].items()} episode_dict["title"] = episode["Name"] - episode_dict["locations"] = tuple( - [x["Path"].split("/")[-1] for x in episode["MediaSources"]] + + episode_dict["locations"] = ( + tuple([x["Path"].split("/")[-1] for x in ["MediaSources"] if "Path" in x]) + if "MediaSources" in episode + else tuple() ) episode_dict["status"] = { @@ -238,7 +241,11 @@ async def get_user_library_watched( k.lower(): v for k, v in show["ProviderIds"].items() } show_guids["title"] = show["Name"] - show_guids["locations"] = tuple([show["Path"].split("/")[-1]]) + show_guids["locations"] = ( + tuple([show["Path"].split("/")[-1]]) + if "Path" in show + else tuple() + ) show_guids = frozenset(show_guids.items()) show_identifiers = { "show_guids": show_guids, @@ -550,24 +557,27 @@ async def update_user_watched( if "MediaSources" in jellyfin_video: for movie_location in jellyfin_video["MediaSources"]: - if ( - contains_nested( - movie_location["Path"].split("/")[-1], - videos_movies_ids["locations"], - ) - is not None - ): - for video in videos: - if ( - contains_nested( - movie_location["Path"].split("/")[-1], - video["locations"], - ) - is not None - ): - movie_status = video["status"] - break - break + if "Path" in movie_location: + if ( + contains_nested( + movie_location["Path"].split("/")[-1], + videos_movies_ids["locations"], + ) + is not None + ): + for video in videos: + if ( + contains_nested( + movie_location["Path"].split("/")[ + -1 + ], + video["locations"], + ) + is not None + ): + movie_status = video["status"] + break + break if not movie_status: for ( @@ -697,26 +707,31 @@ async def update_user_watched( for episode_location in jellyfin_episode[ "MediaSources" ]: - if ( - contains_nested( - episode_location["Path"].split("/")[-1], - videos_episodes_ids["locations"], - ) - is not None - ): - for episode in episode_videos: - if ( - contains_nested( - episode_location["Path"].split( - "/" - )[-1], - episode["locations"], - ) - is not None - ): - episode_status = episode["status"] - break - break + if "Path" in episode_location: + if ( + contains_nested( + episode_location["Path"].split("/")[ + -1 + ], + videos_episodes_ids["locations"], + ) + is not None + ): + for episode in episode_videos: + if ( + contains_nested( + episode_location[ + "Path" + ].split("/")[-1], + episode["locations"], + ) + is not None + ): + episode_status = episode[ + "status" + ] + break + break if not episode_status: for ( @@ -735,15 +750,19 @@ async def update_user_watched( ): for episode in episode_videos: if ( - episode_provider_id.lower() - in episode[ - episode_provider_source.lower() - ] + episode_provider_source.lower() + in episode ): - episode_status = episode[ - "status" - ] - break + if ( + episode_provider_id.lower() + in episode[ + episode_provider_source.lower() + ] + ): + episode_status = episode[ + "status" + ] + break break if episode_status: