From cfbe26265c08c2c090686effbf0eb925ea4dc562 Mon Sep 17 00:00:00 2001 From: blacktwin Date: Fri, 20 Oct 2017 14:55:38 -0400 Subject: [PATCH] plexapi and ssl update #12 --- killstream/kill_plex_stream.py | 72 --------------------------------- killstream/kill_plex_streams.py | 27 +++++++++++++ 2 files changed, 27 insertions(+), 72 deletions(-) delete mode 100644 killstream/kill_plex_stream.py create mode 100644 killstream/kill_plex_streams.py diff --git a/killstream/kill_plex_stream.py b/killstream/kill_plex_stream.py deleted file mode 100644 index 5931e0d..0000000 --- a/killstream/kill_plex_stream.py +++ /dev/null @@ -1,72 +0,0 @@ -""" - -Kill streams - -""" - -import requests -import platform -from uuid import getnode -import unicodedata - -## EDIT THESE SETTINGS ## -PLEX_HOST = '' -PLEX_PORT = 32400 -PLEX_SSL = '' # s or '' -PLEX_TOKEN = 'xxxxxx' - -REASON = 'Because....' -ignore_lst = ('') - - -def fetch(path, t='GET'): - url = 'http{}://{}:{}/'.format(PLEX_SSL, PLEX_HOST, PLEX_PORT) - - headers = {'X-Plex-Token': PLEX_TOKEN, - 'Accept': 'application/json', - 'X-Plex-Provides': 'controller', - 'X-Plex-Platform': platform.uname()[0], - 'X-Plex-Platform-Version': platform.uname()[2], - 'X-Plex-Product': 'Plexpy script', - 'X-Plex-Version': '0.9.5', - 'X-Plex-Device': platform.platform(), - 'X-Plex-Client-Identifier': str(hex(getnode())) - } - - try: - if t == 'GET': - r = requests.get(url + path, headers=headers, verify=False) - elif t == 'POST': - r = requests.post(url + path, headers=headers, verify=False) - elif t == 'DELETE': - r = requests.delete(url + path, headers=headers, verify=False) - - if r and len(r.content): # incase it dont return anything - return r.json() - else: - return r.content - - except Exception as e: - print e - -def kill_stream(sessionId, message): - headers = {'X-Plex-Token': PLEX_TOKEN} - params = {'sessionId': sessionId, - 'reason': message} - requests.get('http{}://{}:{}/status/sessions/terminate'.format(PLEX_SSL, PLEX_HOST, PLEX_PORT), - headers=headers, params=params) - -response = fetch('status/sessions') - -sessions = [] -for video in response['MediaContainer']['Video']: - sess_id = video['Session']['id'] - user = video['User']['title'] - title = (video['grandparentTitle'] + ' - ' if video['type'] == 'episode' else '') + video['title'] - title = unicodedata.normalize('NFKD', title).encode('ascii','ignore') - sessions.append((sess_id, user, title)) - -for session in sessions: - if session[1] not in ignore_lst: - print("Killing {}'s stream of {} for {}".format(session[1], session[2], REASON)) - kill_stream(session[0], REASON) diff --git a/killstream/kill_plex_streams.py b/killstream/kill_plex_streams.py new file mode 100644 index 0000000..8864360 --- /dev/null +++ b/killstream/kill_plex_streams.py @@ -0,0 +1,27 @@ +""" +Kill all streams +""" + +import requests +from plexapi.server import PlexServer + +## EDIT THESE SETTINGS ## +PLEX_TOKEN = 'xxxxx' +PLEX_URL = 'http://localhost:32400' + +MESSAGE = 'Because....' +ignore_lst = ('') +##/EDIT THESE SETTINGS ## + +sess = requests.Session() +sess.verify = False +plex = PlexServer(PLEX_URL, PLEX_TOKEN, session=sess) + +def kill_session(): + for session in plex.sessions(): + user = session.username[0] + title = (session.grandparentTitle + ' - ' if session.type == 'episode' else '') + session.title + print("Killing {}'s stream of {} for {}".format(user, title, MESSAGE)) + session.stop(reason=MESSAGE) + +kill_session()