From dca54cf4fb510530969acce0c778558598fa5a3d Mon Sep 17 00:00:00 2001 From: JChris246 Date: Wed, 8 Mar 2023 21:30:28 -0400 Subject: [PATCH] feat:add flags to control the direction of syncing --- .env.sample | 6 ++++++ src/main.py | 59 ++++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 51 insertions(+), 14 deletions(-) diff --git a/.env.sample b/.env.sample index 708f826..c8ff463 100644 --- a/.env.sample +++ b/.env.sample @@ -55,6 +55,12 @@ PLEX_TOKEN = "SuperSecretToken, SuperSecretToken2" ## Set to True if running into ssl certificate errors SSL_BYPASS = "False" +## control the direction of syncing. e.g. SYNC_FROM_PLEX_TO_JELLYFIN set to true will cause the updates from plex +## to be updated in jellyfin. SYNC_FROM_PLEX_TO_PLEX set to true will sync updates between multiple plex servers +SYNC_FROM_PLEX_TO_JELLYFIN = "True" +SYNC_FROM_JELLYFIN_TO_PLEX = "True" +SYNC_FROM_PLEX_TO_PLEX = "True" +SYNC_FROM_JELLYFIN_TO_JELLYFIN = "True" # Jellyfin diff --git a/src/main.py b/src/main.py index cb0442a..0b45ab9 100644 --- a/src/main.py +++ b/src/main.py @@ -264,6 +264,35 @@ def update_server_watched( ) +def should_sync_server(server_1_type, server_2_type): + sync_from_plex_to_jellyfin = str_to_bool( + os.getenv("SYNC_FROM_PLEX_TO_JELLYFIN", "True")) + sync_from_jelly_to_plex = str_to_bool( + os.getenv("SYNC_FROM_JELLYFIN_TO_PLEX", "True")) + sync_from_plex_to_plex = str_to_bool( + os.getenv("SYNC_FROM_PLEX_TO_PLEX", "True")) + sync_from_jelly_to_jellyfin = str_to_bool( + os.getenv("SYNC_FROM_JELLYFIN_TO_JELLYFIN", "True")) + + if server_1_type == "plex" and server_2_type == "plex" and not sync_from_plex_to_plex: + logger("Sync between plex and plex is disabled", 1) + return False + + if server_1_type == "plex" and server_2_type == "jellyfin" and not sync_from_jelly_to_plex: + logger("Sync from jellyfin to plex disabled", 1) + return False + + if server_1_type == "jellyfin" and server_2_type == "jellyfin" and not sync_from_jelly_to_jellyfin: + logger("Sync between jellyfin and jellyfin is disabled", 1) + return False + + if server_1_type == "jellyfin" and server_2_type == "plex" and not sync_from_plex_to_jellyfin: + logger("Sync from plex to jellyfin is disabled", 1) + return False + + return True + + def main_loop(): logfile = os.getenv("LOGFILE", "log.log") # Delete logfile if it exists @@ -370,21 +399,23 @@ def main_loop(): 1, ) - update_server_watched( - server_1, - server_2_watched_filtered, - user_mapping, - library_mapping, - dryrun, - ) + if should_sync_server(server_1[0], server_2[0]): + update_server_watched( + server_1, + server_2_watched_filtered, + user_mapping, + library_mapping, + dryrun, + ) - update_server_watched( - server_2, - server_1_watched_filtered, - user_mapping, - library_mapping, - dryrun, - ) + if should_sync_server(server_2[0], server_1[0]): + update_server_watched( + server_2, + server_1_watched_filtered, + user_mapping, + library_mapping, + dryrun, + ) def main():