Preparation for companion playlist skipping
- Unicode issues from JSON responses
This commit is contained in:
parent
fd1a44f15f
commit
8d9ac66cd7
2 changed files with 46 additions and 2 deletions
|
@ -4,7 +4,8 @@ import string
|
||||||
|
|
||||||
import xbmc
|
import xbmc
|
||||||
|
|
||||||
from utils import logging
|
from utils import logging, tryDecode
|
||||||
|
import embydb_functions as embydb
|
||||||
|
|
||||||
|
|
||||||
def xbmc_photo():
|
def xbmc_photo():
|
||||||
|
@ -121,6 +122,21 @@ class jsonClass():
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
def skipTo(self, plexId, typus):
|
||||||
|
self.logMsg('players: %s' % self.getPlayers())
|
||||||
|
# playlistId = self.getPlaylistId(tryDecode(xbmc_type(typus)))
|
||||||
|
# playerId = self.
|
||||||
|
with embydb.GetEmbyDB() as emby_db:
|
||||||
|
embydb_item = emby_db.getItem_byId(plexId)
|
||||||
|
try:
|
||||||
|
dbid = embydb_item[0]
|
||||||
|
mediatype = embydb_item[4]
|
||||||
|
except TypeError:
|
||||||
|
self.logMsg('Couldnt find item %s in Kodi db' % plexId, 1)
|
||||||
|
return
|
||||||
|
self.logMsg('plexid: %s, kodi id: %s, type: %s'
|
||||||
|
% (plexId, dbid, mediatype))
|
||||||
|
|
||||||
def getPlexHeaders(self):
|
def getPlexHeaders(self):
|
||||||
h = {
|
h = {
|
||||||
"Content-type": "text/xml",
|
"Content-type": "text/xml",
|
||||||
|
@ -156,6 +172,27 @@ class jsonClass():
|
||||||
ret[player['type']] = player
|
ret[player['type']] = player
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
def getPlaylistId(self, typus):
|
||||||
|
"""
|
||||||
|
typus: one of the Kodi types, e.g. audio or video
|
||||||
|
|
||||||
|
Returns None if nothing was found
|
||||||
|
"""
|
||||||
|
for playlist in self.getPlaylists():
|
||||||
|
if playlist.get('type') == typus:
|
||||||
|
return playlist.get('playlistid')
|
||||||
|
|
||||||
|
def getPlaylists(self):
|
||||||
|
"""
|
||||||
|
Returns a list, e.g.
|
||||||
|
[
|
||||||
|
{u'playlistid': 0, u'type': u'audio'},
|
||||||
|
{u'playlistid': 1, u'type': u'video'},
|
||||||
|
{u'playlistid': 2, u'type': u'picture'}
|
||||||
|
]
|
||||||
|
"""
|
||||||
|
return self.jsonrpc('Playlist.GetPlaylists')
|
||||||
|
|
||||||
def getPlayerIds(self):
|
def getPlayerIds(self):
|
||||||
ret = []
|
ret = []
|
||||||
for player in self.getPlayers().values():
|
for player in self.getPlayers().values():
|
||||||
|
|
|
@ -83,10 +83,11 @@ class MyHandler(BaseHTTPRequestHandler):
|
||||||
params = {}
|
params = {}
|
||||||
for key in paramarrays:
|
for key in paramarrays:
|
||||||
params[key] = paramarrays[key][0]
|
params[key] = paramarrays[key][0]
|
||||||
|
self.logMsg("remote request_path: %s" % request_path, 2)
|
||||||
self.logMsg("params received from remote: %s" % params, 2)
|
self.logMsg("params received from remote: %s" % params, 2)
|
||||||
self.subMgr.updateCommandID(self.headers.get('X-Plex-Client-Identifier', self.client_address[0]), params.get('commandID', False))
|
self.subMgr.updateCommandID(self.headers.get('X-Plex-Client-Identifier', self.client_address[0]), params.get('commandID', False))
|
||||||
if request_path=="version":
|
if request_path=="version":
|
||||||
self.response("PleXBMC Helper Remote Redirector: Running\r\nVersion: %s" % self.settings['version'])
|
self.response("PlexKodiConnect Plex Companion: Running\r\nVersion: %s" % self.settings['version'])
|
||||||
elif request_path=="verify":
|
elif request_path=="verify":
|
||||||
result=self.js.jsonrpc("ping")
|
result=self.js.jsonrpc("ping")
|
||||||
self.response("XBMC JSON connection test:\r\n"+result)
|
self.response("XBMC JSON connection test:\r\n"+result)
|
||||||
|
@ -197,6 +198,10 @@ class MyHandler(BaseHTTPRequestHandler):
|
||||||
for playerid in self.js.getPlayerIds():
|
for playerid in self.js.getPlayerIds():
|
||||||
self.js.jsonrpc("Player.GoTo", {"playerid":playerid, "to":"previous"})
|
self.js.jsonrpc("Player.GoTo", {"playerid":playerid, "to":"previous"})
|
||||||
self.subMgr.notify()
|
self.subMgr.notify()
|
||||||
|
elif request_path == "player/playback/skipTo":
|
||||||
|
self.js.skipTo(params.get('key').rsplit('/', 1)[1],
|
||||||
|
params.get('type'))
|
||||||
|
self.subMgr.notify()
|
||||||
elif request_path == "player/navigation/moveUp":
|
elif request_path == "player/navigation/moveUp":
|
||||||
self.response(getOKMsg(), self.js.getPlexHeaders())
|
self.response(getOKMsg(), self.js.getPlexHeaders())
|
||||||
self.js.jsonrpc("Input.Up")
|
self.js.jsonrpc("Input.Up")
|
||||||
|
@ -218,6 +223,8 @@ class MyHandler(BaseHTTPRequestHandler):
|
||||||
elif request_path == "player/navigation/back":
|
elif request_path == "player/navigation/back":
|
||||||
self.response(getOKMsg(), self.js.getPlexHeaders())
|
self.response(getOKMsg(), self.js.getPlexHeaders())
|
||||||
self.js.jsonrpc("Input.Back")
|
self.js.jsonrpc("Input.Back")
|
||||||
|
else:
|
||||||
|
self.logMsg('Unknown request path: %s' % request_path, -1)
|
||||||
# elif 'player/mirror/details' in request_path:
|
# elif 'player/mirror/details' in request_path:
|
||||||
# # Detailed e.g. Movie information page was opened
|
# # Detailed e.g. Movie information page was opened
|
||||||
# # CURRENTLY NOT POSSIBLE DUE TO KODI RESTRICTIONS
|
# # CURRENTLY NOT POSSIBLE DUE TO KODI RESTRICTIONS
|
||||||
|
|
Loading…
Reference in a new issue