Skip to content

Commit c5586c9

Browse files
committed
Plex auth token is now stored in config
1 parent 13ae24d commit c5586c9

1 file changed

Lines changed: 43 additions & 4 deletions

File tree

prt.py

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import sys
1818
import time
1919
import urllib
20+
import urllib2
2021
import uuid
2122

2223
from distutils.spawn import find_executable
@@ -47,6 +48,7 @@
4748
"path_script": None,
4849
"servers_script": None,
4950
"servers": {},
51+
"auth_token": None,
5052
"logging": {
5153
"version": 1,
5254
"disable_existing_loggers": False,
@@ -91,7 +93,7 @@
9193
SSH_HOST_RE = re.compile(r'ssh +([^@]+)@([^ ]+)')
9294

9395
__author__ = "Weston Nielson <wnielson@github>"
94-
__version__ = "0.3.2"
96+
__version__ = "0.3.3"
9597

9698

9799
def get_config():
@@ -112,6 +114,31 @@ def save_config(d):
112114
return False
113115

114116

117+
def get_auth_token():
118+
url = "https://plex.tv/users/sign_in.json"
119+
payload = urllib.urlencode({
120+
"user[login]": raw_input("Plex Username: "),
121+
"user[password]": getpass.getpass("Plex Password: "),
122+
"X-Plex-Client-Identifier": "Plex-Remote-Transcoder-v%s" % __version__,
123+
"X-Plex-Product": "Plex-Remote-Transcoder",
124+
"X-Plex-Version": __version__
125+
})
126+
127+
req = urllib2.Request(url, payload)
128+
try:
129+
res = urllib2.urlopen(req)
130+
except:
131+
print "Error getting auth token...invalid credentials?"
132+
return False
133+
134+
if res.code not in [200, 201]:
135+
print "Invalid credentials"
136+
return False
137+
138+
data = json.load(res)
139+
return data['user']['authToken']
140+
141+
115142
def get_system_load_local():
116143
"""
117144
Returns a list of float representing the percentage load of this machine.
@@ -352,8 +379,12 @@ def et_get(node, attrib, default=None):
352379
return default
353380

354381

355-
def get_plex_sessions():
356-
res = urllib.urlopen('http://localhost:32400/status/sessions')
382+
def get_plex_sessions(auth_token=None):
383+
url = 'http://localhost:32400/status/sessions'
384+
if auth_token:
385+
url += "?X-Plex-Token=%s" % auth_token
386+
387+
res = urllib.urlopen(url)
357388
dom = ET.parse(res)
358389
sessions = {}
359390
for node in dom.findall('.//Video'):
@@ -367,8 +398,16 @@ def get_plex_sessions():
367398
def get_sessions():
368399
sessions = {}
369400

370-
plex_sessions = get_plex_sessions()
401+
config = get_config()
402+
if config.get('auth_token') == None:
403+
config['auth_token'] = get_auth_token()
404+
if not config['auth_token']:
405+
return sessions
406+
save_config(config)
407+
408+
sessions = {}
371409

410+
plex_sessions = get_plex_sessions(auth_token=config['auth_token'])
372411
for proc in psutil.process_iter():
373412
parent_name = None
374413
try:

0 commit comments

Comments
 (0)