Move lots of setup_users to functions
This commit is contained in:
@@ -455,6 +455,81 @@ def is_episode_in_dict(episode, episode_watched_list_2_keys_dict):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def generate_user_list(server):
|
||||||
|
# generate list of users from server 1 and server 2
|
||||||
|
server_type = server[0]
|
||||||
|
server_connection = server[1]
|
||||||
|
|
||||||
|
server_users = []
|
||||||
|
if server_type == "plex":
|
||||||
|
server_users = [x.title.lower() for x in server_connection.users]
|
||||||
|
elif server_type == "jellyfin":
|
||||||
|
server_users = [key.lower() for key in server_connection.users.keys()]
|
||||||
|
|
||||||
|
return server_users
|
||||||
|
|
||||||
|
def combine_user_lists(server_1_users, server_2_users, user_mapping):
|
||||||
|
# combined list of overlapping users from plex and jellyfin
|
||||||
|
users = {}
|
||||||
|
|
||||||
|
for server_1_user in server_1_users:
|
||||||
|
if user_mapping:
|
||||||
|
jellyfin_plex_mapped_user = search_mapping(user_mapping, server_1_user)
|
||||||
|
if jellyfin_plex_mapped_user:
|
||||||
|
users[server_1_user] = jellyfin_plex_mapped_user
|
||||||
|
continue
|
||||||
|
|
||||||
|
if server_1_user in server_2_users:
|
||||||
|
users[server_1_user] = server_1_user
|
||||||
|
|
||||||
|
for server_2_user in server_2_users:
|
||||||
|
if user_mapping:
|
||||||
|
plex_jellyfin_mapped_user = search_mapping(user_mapping, server_2_user)
|
||||||
|
if plex_jellyfin_mapped_user:
|
||||||
|
users[plex_jellyfin_mapped_user] = server_2_user
|
||||||
|
continue
|
||||||
|
|
||||||
|
if server_2_user in server_1_users:
|
||||||
|
users[server_2_user] = server_2_user
|
||||||
|
|
||||||
|
return users
|
||||||
|
|
||||||
|
def filter_user_lists(users, blacklist_users, whitelist_users):
|
||||||
|
users_filtered = {}
|
||||||
|
for user in users:
|
||||||
|
# whitelist_user is not empty and user lowercase is not in whitelist lowercase
|
||||||
|
if len(whitelist_users) > 0:
|
||||||
|
if user not in whitelist_users and users[user] not in whitelist_users:
|
||||||
|
logger(f"{user} or {users[user]} is not in whitelist", 1)
|
||||||
|
continue
|
||||||
|
|
||||||
|
if user not in blacklist_users and users[user] not in blacklist_users:
|
||||||
|
users_filtered[user] = users[user]
|
||||||
|
|
||||||
|
return users_filtered
|
||||||
|
|
||||||
|
def generate_server_users(server, users):
|
||||||
|
server_users = None
|
||||||
|
|
||||||
|
if server[0] == "plex":
|
||||||
|
server_users = []
|
||||||
|
for plex_user in server[1].users:
|
||||||
|
if (
|
||||||
|
plex_user.title.lower() in users.keys()
|
||||||
|
or plex_user.title.lower() in users.values()
|
||||||
|
):
|
||||||
|
server_users.append(plex_user)
|
||||||
|
elif server[0] == "jellyfin":
|
||||||
|
server_users = {}
|
||||||
|
for jellyfin_user, jellyfin_id in server[1].users.items():
|
||||||
|
if (
|
||||||
|
jellyfin_user.lower() in users.keys()
|
||||||
|
or jellyfin_user.lower() in users.values()
|
||||||
|
):
|
||||||
|
server_users[jellyfin_user] = jellyfin_id
|
||||||
|
|
||||||
|
return server_users
|
||||||
|
|
||||||
def future_thread_executor(args: list, workers: int = -1):
|
def future_thread_executor(args: list, workers: int = -1):
|
||||||
futures_list = []
|
futures_list = []
|
||||||
results = []
|
results = []
|
||||||
|
|||||||
103
src/main.py
103
src/main.py
@@ -8,6 +8,10 @@ from src.functions import (
|
|||||||
search_mapping,
|
search_mapping,
|
||||||
cleanup_watched,
|
cleanup_watched,
|
||||||
setup_black_white_lists,
|
setup_black_white_lists,
|
||||||
|
generate_user_list,
|
||||||
|
combine_user_lists,
|
||||||
|
filter_user_lists,
|
||||||
|
generate_server_users,
|
||||||
)
|
)
|
||||||
from src.plex import Plex
|
from src.plex import Plex
|
||||||
from src.jellyfin import Jellyfin
|
from src.jellyfin import Jellyfin
|
||||||
@@ -15,107 +19,30 @@ from src.jellyfin import Jellyfin
|
|||||||
load_dotenv(override=True)
|
load_dotenv(override=True)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def setup_users(
|
def setup_users(
|
||||||
server_1, server_2, blacklist_users, whitelist_users, user_mapping=None
|
server_1, server_2, blacklist_users, whitelist_users, user_mapping=None
|
||||||
):
|
):
|
||||||
# generate list of users from server 1 and server 2
|
server_1_users = generate_user_list(server_1)
|
||||||
server_1_type = server_1[0]
|
server_2_users = generate_user_list(server_2)
|
||||||
server_1_connection = server_1[1]
|
|
||||||
server_2_type = server_2[0]
|
|
||||||
server_2_connection = server_2[1]
|
|
||||||
logger(f"Server 1: {server_1_type} {server_1_connection}", 0)
|
|
||||||
logger(f"Server 2: {server_2_type} {server_2_connection}", 0)
|
|
||||||
|
|
||||||
server_1_users = []
|
|
||||||
if server_1_type == "plex":
|
|
||||||
server_1_users = [x.title.lower() for x in server_1_connection.users]
|
|
||||||
elif server_1_type == "jellyfin":
|
|
||||||
server_1_users = [key.lower() for key in server_1_connection.users.keys()]
|
|
||||||
|
|
||||||
server_2_users = []
|
|
||||||
if server_2_type == "plex":
|
|
||||||
server_2_users = [x.title.lower() for x in server_2_connection.users]
|
|
||||||
elif server_2_type == "jellyfin":
|
|
||||||
server_2_users = [key.lower() for key in server_2_connection.users.keys()]
|
|
||||||
|
|
||||||
# combined list of overlapping users from plex and jellyfin
|
|
||||||
users = {}
|
|
||||||
|
|
||||||
for server_1_user in server_1_users:
|
|
||||||
if user_mapping:
|
|
||||||
jellyfin_plex_mapped_user = search_mapping(user_mapping, server_1_user)
|
|
||||||
if jellyfin_plex_mapped_user:
|
|
||||||
users[server_1_user] = jellyfin_plex_mapped_user
|
|
||||||
continue
|
|
||||||
|
|
||||||
if server_1_user in server_2_users:
|
|
||||||
users[server_1_user] = server_1_user
|
|
||||||
|
|
||||||
for server_2_user in server_2_users:
|
|
||||||
if user_mapping:
|
|
||||||
plex_jellyfin_mapped_user = search_mapping(user_mapping, server_2_user)
|
|
||||||
if plex_jellyfin_mapped_user:
|
|
||||||
users[plex_jellyfin_mapped_user] = server_2_user
|
|
||||||
continue
|
|
||||||
|
|
||||||
if server_2_user in server_1_users:
|
|
||||||
users[server_2_user] = server_2_user
|
|
||||||
|
|
||||||
|
users = combine_user_lists(server_1_users, server_2_users, user_mapping)
|
||||||
logger(f"User list that exist on both servers {users}", 1)
|
logger(f"User list that exist on both servers {users}", 1)
|
||||||
|
|
||||||
users_filtered = {}
|
users_filtered = filter_user_lists(users, blacklist_users, whitelist_users)
|
||||||
for user in users:
|
|
||||||
# whitelist_user is not empty and user lowercase is not in whitelist lowercase
|
|
||||||
if len(whitelist_users) > 0:
|
|
||||||
if user not in whitelist_users and users[user] not in whitelist_users:
|
|
||||||
logger(f"{user} or {users[user]} is not in whitelist", 1)
|
|
||||||
continue
|
|
||||||
|
|
||||||
if user not in blacklist_users and users[user] not in blacklist_users:
|
|
||||||
users_filtered[user] = users[user]
|
|
||||||
|
|
||||||
logger(f"Filtered user list {users_filtered}", 1)
|
logger(f"Filtered user list {users_filtered}", 1)
|
||||||
|
|
||||||
if server_1_type == "plex":
|
output_server_1_users = generate_server_users(server_1, users_filtered)
|
||||||
output_server_1_users = []
|
output_server_2_users = generate_server_users(server_2, users_filtered)
|
||||||
for plex_user in server_1_connection.users:
|
|
||||||
if (
|
|
||||||
plex_user.title.lower() in users_filtered.keys()
|
|
||||||
or plex_user.title.lower() in users_filtered.values()
|
|
||||||
):
|
|
||||||
output_server_1_users.append(plex_user)
|
|
||||||
elif server_1_type == "jellyfin":
|
|
||||||
output_server_1_users = {}
|
|
||||||
for jellyfin_user, jellyfin_id in server_1_connection.users.items():
|
|
||||||
if (
|
|
||||||
jellyfin_user.lower() in users_filtered.keys()
|
|
||||||
or jellyfin_user.lower() in users_filtered.values()
|
|
||||||
):
|
|
||||||
output_server_1_users[jellyfin_user] = jellyfin_id
|
|
||||||
|
|
||||||
if server_2_type == "plex":
|
# Check if users is none or empty
|
||||||
output_server_2_users = []
|
if output_server_1_users is None or len(output_server_1_users) == 0:
|
||||||
for plex_user in server_2_connection.users:
|
|
||||||
if (
|
|
||||||
plex_user.title.lower() in users_filtered.keys()
|
|
||||||
or plex_user.title.lower() in users_filtered.values()
|
|
||||||
):
|
|
||||||
output_server_2_users.append(plex_user)
|
|
||||||
elif server_2_type == "jellyfin":
|
|
||||||
output_server_2_users = {}
|
|
||||||
for jellyfin_user, jellyfin_id in server_2_connection.users.items():
|
|
||||||
if (
|
|
||||||
jellyfin_user.lower() in users_filtered.keys()
|
|
||||||
or jellyfin_user.lower() in users_filtered.values()
|
|
||||||
):
|
|
||||||
output_server_2_users[jellyfin_user] = jellyfin_id
|
|
||||||
|
|
||||||
if len(output_server_1_users) == 0:
|
|
||||||
raise Exception(
|
raise Exception(
|
||||||
f"No users found for server 1 {server_1_type}, users found {users}, filtered users {users_filtered}, server 1 users {server_1_connection.users}"
|
f"No users found for server 1 {server_1_type}, users found {users}, filtered users {users_filtered}, server 1 users {server_1_connection.users}"
|
||||||
)
|
)
|
||||||
|
|
||||||
if len(output_server_2_users) == 0:
|
if output_server_2_users is None or len(output_server_2_users) == 0:
|
||||||
raise Exception(
|
raise Exception(
|
||||||
f"No users found for server 2 {server_2_type}, users found {users} filtered users {users_filtered}, server 2 users {server_2_connection.users}"
|
f"No users found for server 2 {server_2_type}, users found {users} filtered users {users_filtered}, server 2 users {server_2_connection.users}"
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user