Merge pull request #154 from DirtyCajunRice/master
get_serial_transcoders.py
This commit is contained in:
commit
bcb85978f0
61
utility/get_serial_transcoders.py
Normal file
61
utility/get_serial_transcoders.py
Normal file
@ -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}%")
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user