rework logic, add more informative output, and update.
This commit is contained in:
parent
aa6017374e
commit
6d418e54f7
@ -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')
|
||||
|
Loading…
Reference in New Issue
Block a user