92 lines
2.8 KiB
Python
92 lines
2.8 KiB
Python
from src.functions import (
|
|
logger,
|
|
search_mapping,
|
|
)
|
|
|
|
|
|
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":
|
|
for user in server_connection.users:
|
|
server_users.append(
|
|
user.username.lower() if user.username else user.title.lower()
|
|
)
|
|
|
|
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:
|
|
mapped_user = search_mapping(user_mapping, server_1_user)
|
|
if mapped_user in server_2_users:
|
|
users[server_1_user] = 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:
|
|
mapped_user = search_mapping(user_mapping, server_2_user)
|
|
if mapped_user in server_1_users:
|
|
users[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:
|
|
username_title = (
|
|
plex_user.username if plex_user.username else plex_user.title
|
|
)
|
|
|
|
if (
|
|
username_title.lower() in users.keys()
|
|
or username_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
|