-
-
Save blacktwin/14d400a0f442da465389164fa046647a to your computer and use it in GitHub Desktop.
| """ | |
| Kill Plex paused video transcoding streams. | |
| PlexPy > Settings > Notification Agents > Scripts > Bell icon: | |
| [X] Notify on playback pause | |
| PlexPy > Settings > Notification Agents > Scripts > Gear icon: | |
| Playback Pause: new_kill_trans_pause.py | |
| """ | |
| import requests | |
| import platform | |
| from uuid import getnode | |
| ## EDIT THESE SETTINGS ## | |
| PLEX_HOST = '' | |
| PLEX_PORT = 32400 | |
| PLEX_SSL = '' # s or '' | |
| PLEX_TOKEN = 'xxxxx' | |
| MESSAGE = 'This stream has ended due to being paused and transcoding.' | |
| USER_IGNORE = ('') # ('Username','User2') | |
| ## | |
| def fetch(path, t='GET'): | |
| url = 'http%s://%s:%s/' % (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_HOST, PLEX_PORT), | |
| headers=headers, params=params) | |
| if __name__ == '__main__': | |
| response = fetch('status/sessions') | |
| for s in response['MediaContainer']['Video']: | |
| try: | |
| if s['TranscodeSession']['videoDecision'] == 'transcode' and s['User']['title'] not in USER_IGNORE \ | |
| and s['Player']['state'] == 'paused': | |
| print("Killing {}'s stream for pausing a transcode stream of {}".format(s['User']['title'], s['title'])) | |
| kill_stream(s['Session']['id'], MESSAGE) | |
| except Exception: | |
| pass |
Is there anyway to make a time delay instead as soon as it's paused kill the stream?
Would love a new version of the script with delay
@blacktwin Thanks! I will try, but I was really looking for a script to kill transcoded sessions only. The one you linked kills all paused sessions regardless, right?
Direct play and direct stream sessions isn't really a problem for me, but I've set max PMS transcodes to 6 and that creates a problem when users pause for hours and days hogging a spot
@blacktwin just tried the script you linked. Plexpy log says script launched with the session_key argument, but no new script file is created in the script directory.
im getting an error on line 11 with this
How do i figure out my Plex SSL?
@blacktwin any chance a script like this exists that will kill streams that are stuck buffering? Been having an issue lately with long running streams (1 day+, separate tv episodes played on a loop and repeat).
@TheFreshPrinceOfBel-Air checkout my repo for plex related scripts. I've added all my gists there for easier searching and so people can create issues for errors or requests.
I would love to be able to use this script but have a clue what I change and where I get the information from to fill the blanks in. Any help would be much appreciated thank everyone
ok ive got this script running on my QNAP TS215+ but I'm getting this error.
PlexPy Notifiers :: Script error:
Traceback (most recent call last):
File "/share/CACHEDEV1_DATA/Public/PLEX Script/new_kill_trans_pausenew.py", line 11, in
import requests
ImportError: No module named requests
Please help.....
I am trying to get this working, when I run the script I get the following error:
Traceback (most recent call last):
File "new_Kill_Trans_Pause.py", line 69, in
for s in response['MediaContainer']['Video']:
KeyError: 'Video'
Any idea?
@Dukko you got this resolved on /r/plex. Problem was incorrect settings.