Plex Channels!
This commit is contained in:
parent
31e51483e4
commit
47ea9f2968
2 changed files with 94 additions and 5 deletions
|
@ -102,9 +102,11 @@ class Main():
|
||||||
'ondeck': entrypoint.getOnDeck,
|
'ondeck': entrypoint.getOnDeck,
|
||||||
'chooseServer': entrypoint.chooseServer,
|
'chooseServer': entrypoint.chooseServer,
|
||||||
'watchlater': entrypoint.watchlater,
|
'watchlater': entrypoint.watchlater,
|
||||||
|
'channels': entrypoint.channels,
|
||||||
'enterPMS': entrypoint.enterPMS,
|
'enterPMS': entrypoint.enterPMS,
|
||||||
'togglePlexTV': entrypoint.togglePlexTV,
|
'togglePlexTV': entrypoint.togglePlexTV,
|
||||||
'Plex_Node': entrypoint.Plex_Node
|
'Plex_Node': entrypoint.Plex_Node,
|
||||||
|
'browse_plex_folder': entrypoint.browse_plex_folder
|
||||||
}
|
}
|
||||||
|
|
||||||
if "/extrafanart" in argv[0]:
|
if "/extrafanart" in argv[0]:
|
||||||
|
@ -135,7 +137,7 @@ class Main():
|
||||||
limit = int(params['limit'])
|
limit = int(params['limit'])
|
||||||
modes[mode](params['tagname'], limit)
|
modes[mode](params['tagname'], limit)
|
||||||
|
|
||||||
elif mode in ("channels","getsubfolders"):
|
elif mode in ("getsubfolders"):
|
||||||
modes[mode](itemid)
|
modes[mode](itemid)
|
||||||
|
|
||||||
elif mode == "browsecontent":
|
elif mode == "browsecontent":
|
||||||
|
@ -162,6 +164,8 @@ class Main():
|
||||||
elif mode == 'Plex_Node':
|
elif mode == 'Plex_Node':
|
||||||
modes[mode](params.get('id'),
|
modes[mode](params.get('id'),
|
||||||
params.get('viewOffset'))
|
params.get('viewOffset'))
|
||||||
|
elif mode == 'browse_plex_folder':
|
||||||
|
modes[mode](params.get('id'))
|
||||||
else:
|
else:
|
||||||
modes[mode]()
|
modes[mode]()
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -106,7 +106,10 @@ def Plex_Node(url, viewOffset, playdirectly=False, node=True):
|
||||||
log.info('Plex_Node called with url: %s, viewOffset: %s'
|
log.info('Plex_Node called with url: %s, viewOffset: %s'
|
||||||
% (url, viewOffset))
|
% (url, viewOffset))
|
||||||
# Plex redirect, e.g. watch later. Need to get actual URLs
|
# Plex redirect, e.g. watch later. Need to get actual URLs
|
||||||
xml = downloadutils.DownloadUtils().downloadUrl(url)
|
if url.startswith('http'):
|
||||||
|
xml = downloadutils.DownloadUtils().downloadUrl(url)
|
||||||
|
else:
|
||||||
|
xml = downloadutils.DownloadUtils().downloadUrl('{server}%s' % url)
|
||||||
try:
|
try:
|
||||||
xml[0].attrib
|
xml[0].attrib
|
||||||
except:
|
except:
|
||||||
|
@ -194,6 +197,9 @@ def doMainListing():
|
||||||
# Plex Watch later
|
# Plex Watch later
|
||||||
addDirectoryItem(lang(39211),
|
addDirectoryItem(lang(39211),
|
||||||
"plugin://plugin.video.plexkodiconnect/?mode=watchlater")
|
"plugin://plugin.video.plexkodiconnect/?mode=watchlater")
|
||||||
|
# Plex Channels
|
||||||
|
addDirectoryItem(lang(30173),
|
||||||
|
"plugin://plugin.video.plexkodiconnect/?mode=channels")
|
||||||
# Plex user switch
|
# Plex user switch
|
||||||
addDirectoryItem(lang(39200) + window('plex_username'),
|
addDirectoryItem(lang(39200) + window('plex_username'),
|
||||||
"plugin://plugin.video.plexkodiconnect/"
|
"plugin://plugin.video.plexkodiconnect/"
|
||||||
|
@ -927,6 +933,85 @@ def watchlater():
|
||||||
cacheToDisc=settings('enableTextureCache') == 'true')
|
cacheToDisc=settings('enableTextureCache') == 'true')
|
||||||
|
|
||||||
|
|
||||||
|
def channels():
|
||||||
|
"""
|
||||||
|
Listing for Plex Channels
|
||||||
|
"""
|
||||||
|
if window('plex_restricteduser') == 'true':
|
||||||
|
log.error('No Plex Channels - restricted user')
|
||||||
|
return xbmcplugin.endOfDirectory(HANDLE, False)
|
||||||
|
|
||||||
|
xml = downloadutils.DownloadUtils().downloadUrl('{server}/channels/all')
|
||||||
|
try:
|
||||||
|
xml[0].attrib
|
||||||
|
except (ValueError, AttributeError, IndexError):
|
||||||
|
log.error('Could not download Plex Channels')
|
||||||
|
return xbmcplugin.endOfDirectory(HANDLE, False)
|
||||||
|
|
||||||
|
log.info('Displaying Plex Channels')
|
||||||
|
xbmcplugin.setContent(HANDLE, 'files')
|
||||||
|
for item in xml:
|
||||||
|
__build_folder(item)
|
||||||
|
xbmcplugin.endOfDirectory(
|
||||||
|
handle=HANDLE,
|
||||||
|
cacheToDisc=settings('enableTextureCache') == 'true')
|
||||||
|
|
||||||
|
|
||||||
|
def browse_plex_folder(key):
|
||||||
|
"""
|
||||||
|
Lists the content of a Plex folder, e.g. channels
|
||||||
|
"""
|
||||||
|
xml = downloadutils.DownloadUtils().downloadUrl('{server}%s' % key)
|
||||||
|
try:
|
||||||
|
xml[0].attrib
|
||||||
|
except (ValueError, AttributeError, IndexError):
|
||||||
|
log.error('Could not browse to %s' % key)
|
||||||
|
return xbmcplugin.endOfDirectory(HANDLE, False)
|
||||||
|
xbmcplugin.setContent(HANDLE, 'files')
|
||||||
|
for item in xml:
|
||||||
|
if item.tag == 'Directory':
|
||||||
|
__build_folder(item)
|
||||||
|
else:
|
||||||
|
__build_item(item)
|
||||||
|
xbmcplugin.endOfDirectory(
|
||||||
|
handle=HANDLE,
|
||||||
|
cacheToDisc=settings('enableTextureCache') == 'true')
|
||||||
|
|
||||||
|
|
||||||
|
def __build_folder(xml_element):
|
||||||
|
url = "plugin://plugin.video.plexkodiconnect/"
|
||||||
|
params = {
|
||||||
|
'mode': "browse_plex_folder",
|
||||||
|
'id': xml_element.attrib.get('key')
|
||||||
|
}
|
||||||
|
listitem = ListItem(xml_element.attrib.get('title'))
|
||||||
|
listitem.setArt({'thumb': xml_element.attrib.get('thumb'),
|
||||||
|
'poster': xml_element.attrib.get('art')})
|
||||||
|
xbmcplugin.addDirectoryItem(
|
||||||
|
handle=HANDLE,
|
||||||
|
url="%s?%s" % (url, urlencode(params)),
|
||||||
|
isFolder=True,
|
||||||
|
listitem=listitem)
|
||||||
|
|
||||||
|
|
||||||
|
def __build_item(xml_element):
|
||||||
|
url = "plugin://plugin.video.plexkodiconnect/"
|
||||||
|
api = API(xml_element)
|
||||||
|
listitem = api.CreateListItemFromPlexItem()
|
||||||
|
api.AddStreamInfo(listitem)
|
||||||
|
api.set_listitem_artwork(listitem)
|
||||||
|
params = {
|
||||||
|
'mode': "Plex_Node",
|
||||||
|
'id': xml_element.attrib.get('key'),
|
||||||
|
'viewOffset': xml_element.attrib.get('viewOffset', '0'),
|
||||||
|
'plex_type': xml_element.attrib.get('type')
|
||||||
|
}
|
||||||
|
xbmcplugin.addDirectoryItem(
|
||||||
|
handle=HANDLE,
|
||||||
|
url="%s?%s" % (url, urlencode(params)),
|
||||||
|
listitem=listitem)
|
||||||
|
|
||||||
|
|
||||||
def enterPMS():
|
def enterPMS():
|
||||||
"""
|
"""
|
||||||
Opens dialogs for the user the plug in the PMS details
|
Opens dialogs for the user the plug in the PMS details
|
||||||
|
|
Loading…
Reference in a new issue