diff --git a/utility/purge_removed_plex_friends.py b/utility/purge_removed_plex_friends.py index ef5a5ea..dc4bee8 100644 --- a/utility/purge_removed_plex_friends.py +++ b/utility/purge_removed_plex_friends.py @@ -2,13 +2,14 @@ """ Description: Purge Tautulli users that no longer exist as a friend in Plex Author: DirtyCajunRice -Requires: requests, plexapi +Requires: requests, plexapi, python3.6+ """ -import requests +from requests import Session +from json.decoder import JSONDecodeError from plexapi.myplex import MyPlexAccount -TAUTULLI_BASE_URL = '' +TAUTULLI_URL = '' TAUTULLI_API_KEY = '' PLEX_USERNAME = '' @@ -20,22 +21,27 @@ BACKUP_DB = True # Do not edit past this line # account = MyPlexAccount(PLEX_USERNAME, PLEX_PASSWORD) -payload = {'apikey': TAUTULLI_API_KEY, 'cmd': 'get_user_names'} -tautulli_users = requests.get('http://{}/api/v2' - .format(TAUTULLI_BASE_URL), params=payload).json()['response']['data'] +session = Session() +session.params = {'apikey': TAUTULLI_API_KEY} +formatted_url = f'{TAUTULLI_URL}/api/v2' + +request = session.get(formatted_url, params={'cmd': 'get_user_names'}) + +tautulli_users = None +try: + tautulli_users = request.json()['response']['data'] +except JSONDecodeError: + exit("Error talking to Tautulli API, please check your TAUTULLI_URL") plex_friend_ids = [friend.id for friend in account.users()] -tautulli_user_ids = [user['user_id'] for user in tautulli_users] - -removed_user_ids = [user_id for user_id in tautulli_user_ids if user_id not in plex_friend_ids] +removed_users = [user for user in tautulli_users if user['user_id'] not in plex_friend_ids] if BACKUP_DB: - payload['cmd'] = 'backup_db' - backup = requests.get('http://{}/api/v2'.format(TAUTULLI_BASE_URL), params=payload) + backup = session.get(formatted_url, params={'cmd': 'backup_db'}) -if removed_user_ids: - payload['cmd'] = 'delete_user' - - for user_id in removed_user_ids: - payload['user_id'] = user_id - remove_user = requests.get('http://{}/api/v2'.format(TAUTULLI_BASE_URL), params=payload) +if removed_users: + for user in removed_users: + removed_user = session.get(formatted_url, params={'cmd': 'delete_user', 'user_id': user['user_id']}) + print(f"Removed {user['friendly_name']} from Tautulli") +else: + print('No users to remove')