diff --git a/utility/get_serial_transcoders.py b/utility/get_serial_transcoders.py new file mode 100644 index 0000000..4a7c508 --- /dev/null +++ b/utility/get_serial_transcoders.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python3 +""" +Description: Get a list of "Serial Transcoders" +Author: DirtyCajunRice +Requires: requests, plexapi, python3.6+ +""" +from requests import Session +from plexapi.server import CONFIG +from datetime import date, timedelta +from json.decoder import JSONDecodeError + +TAUTULLI_URL = '' +TAUTULLI_API_KEY = '' + +PAST_DAYS = 7 +THRESHOLD_PERCENT = 50 + +# Do not edit past this line # + +TAUTULLI_URL = TAUTULLI_URL or CONFIG.data['auth'].get('tautulli_baseurl') +TAUTULLI_API_KEY = TAUTULLI_API_KEY or CONFIG.data['auth'].get('tautulli_apikey') + +TODAY = date.today() +START_DATE = TODAY - timedelta(days=PAST_DAYS) + +SESSION = Session() +SESSION.params = {'apikey': TAUTULLI_API_KEY} +FORMATTED_URL = f'{TAUTULLI_URL}/api/v2' + +PARAMS = {'cmd': 'get_history', 'grouping': 1, 'order_column': 'date', 'length': 1000} + +REQUEST = None +try: + REQUEST = SESSION.get(FORMATTED_URL, params=PARAMS).json()['response']['data']['data'] +except JSONDecodeError: + exit("Error talking to Tautulli API, please check your TAUTULLI_URL") + +HISTORY = [play for play in REQUEST if date.fromtimestamp(play['started']) >= START_DATE] + +USERS = {} +for play in HISTORY: + if not USERS.get(play['user_id']): + USERS.update( + { + play['user_id']: { + 'direct play': 0, + 'copy': 0, + 'transcode': 0 + } + } + ) + USERS[play['user_id']][play['transcode_decision']] += 1 + +PARAMS = {'cmd': 'get_user', 'user_id': 0} +for user, counts in USERS.items(): + TOTAL_PLAYS = counts['transcode'] + counts['direct play'] + counts['copy'] + TRANSCODE_PERCENT = round(counts['transcode'] * 100 / TOTAL_PLAYS, 2) + if TRANSCODE_PERCENT >= THRESHOLD_PERCENT: + PARAMS['user_id'] = user + NAUGHTY = SESSION.get(FORMATTED_URL, params=PARAMS).json()['response']['data'] + print(f"{NAUGHTY['friendly_name']} is a serial transocde offender above the threshold at {TRANSCODE_PERCENT}%") diff --git a/utility/purge_removed_plex_friends.py b/utility/purge_removed_plex_friends.py index 6c00553..1bfdc78 100644 --- a/utility/purge_removed_plex_friends.py +++ b/utility/purge_removed_plex_friends.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 """ Description: Purge Tautulli users that no longer exist as a friend in Plex Author: DirtyCajunRice @@ -6,6 +6,7 @@ Requires: requests, plexapi, python3.6+ """ from requests import Session +from plexapi.server import CONFIG from json.decoder import JSONDecodeError from plexapi.myplex import MyPlexAccount @@ -19,6 +20,13 @@ PLEX_PASSWORD = '' BACKUP_DB = True # Do not edit past this line # + +# Grab config vars if not set in script +TAUTULLI_URL = TAUTULLI_URL or CONFIG.data['auth'].get('tautulli_baseurl') +TAUTULLI_API_KEY = TAUTULLI_API_KEY or CONFIG.data['auth'].get('tautulli_apikey') +PLEX_USERNAME = PLEX_USERNAME or CONFIG.data['auth'].get('myplex_username') +PLEX_PASSWORD = PLEX_PASSWORD or CONFIG.data['auth'].get('myplex_password') + account = MyPlexAccount(PLEX_USERNAME, PLEX_PASSWORD) session = Session()