From c0012582c86d1f94b809cf1b58a79fbed9412a7c Mon Sep 17 00:00:00 2001 From: angelblue05 Date: Wed, 8 Nov 2017 22:42:48 -0600 Subject: [PATCH] Fix plugin paths & Attempt to fix photos Emby removed photos library. Now it's homevideo and photos. Had to tweak a few things. Update plugin patha to properly encode naming. --- resources/lib/entrypoint.py | 18 ++++++----- resources/lib/objects/tvshows.py | 5 ++- resources/lib/utils.py | 4 +++ resources/lib/views.py | 54 ++++++++++++++++++++++++-------- 4 files changed, 58 insertions(+), 23 deletions(-) diff --git a/resources/lib/entrypoint.py b/resources/lib/entrypoint.py index 3675f718..0bad6244 100644 --- a/resources/lib/entrypoint.py +++ b/resources/lib/entrypoint.py @@ -30,7 +30,7 @@ import playbackutils as pbutils import playutils import api from views import Playlist, VideoNodes -from utils import window, settings, dialog, language as lang +from utils import window, settings, dialog, language as lang, plugin_path ################################################################################################# @@ -85,7 +85,7 @@ def doMainListing(): ''' if path: - if xbmc.getCondVisibility("Window.IsActive(Pictures)") and node == "photos": + if xbmc.getCondVisibility("Window.IsActive(Pictures)") and node in ("photos", "homevideos"): addDirectoryItem(label, path) elif xbmc.getCondVisibility("Window.IsActive(Videos)") and node != "photos": addDirectoryItem(label, path) @@ -620,11 +620,8 @@ def BrowseContent(viewname, browse_type="", folderid=""): #only proceed if we have a folderid if folderid: if browse_type.lower() == "homevideos": - xbmcplugin.setContent(int(sys.argv[1]), 'episodes') - itemtype = "Video,Folder,PhotoAlbum" - elif browse_type.lower() == "photos": xbmcplugin.setContent(int(sys.argv[1]), 'files') - itemtype = "Photo,PhotoAlbum,Folder" + itemtype = "Video,Folder,PhotoAlbum,Photo" else: itemtype = "" @@ -653,7 +650,14 @@ def BrowseContent(viewname, browse_type="", folderid=""): li = createListItemFromEmbyItem(item,art,doUtils) if item.get("IsFolder") == True: #for folders we add an additional browse request, passing the folderId - path = "%s?id=%s&mode=browsecontent&type=%s&folderid=%s" % (sys.argv[0].decode('utf-8'), viewname.decode('utf-8'), browse_type.decode('utf-8'), item.get("Id").decode('utf-8')) + params = { + + 'id': viewname.encode('utf-8'), + 'mode': "browsecontent", + 'type': browse_type, + 'folderid': item['Id'] + } + path = plugin_path("plugin://plugin.video.emby/", params) xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=path, listitem=li, isFolder=True) else: #playable item, set plugin path and mediastreams diff --git a/resources/lib/objects/tvshows.py b/resources/lib/objects/tvshows.py index 826bf806..43707252 100644 --- a/resources/lib/objects/tvshows.py +++ b/resources/lib/objects/tvshows.py @@ -3,14 +3,13 @@ ################################################################################################## import logging -import urllib from ntpath import dirname import api import embydb_functions as embydb import _kodi_tvshows from _common import Items, catch_except -from utils import window, settings, language as lang +from utils import window, settings, language as lang, plugin_path ################################################################################################## @@ -630,7 +629,7 @@ class TVShows(Items): 'dbid': episodeid, 'mode': "play" } - filename = "%s?%s" % (path, urllib.urlencode(params)) + filename = plugin_path(path, params) ##### UPDATE THE EPISODE ##### if update_item: diff --git a/resources/lib/utils.py b/resources/lib/utils.py index 335616fa..71e5922c 100644 --- a/resources/lib/utils.py +++ b/resources/lib/utils.py @@ -10,6 +10,7 @@ import StringIO import os import sys import time +import urllib import unicodedata import xml.etree.ElementTree as etree from datetime import datetime @@ -77,6 +78,9 @@ def dialog(type_, *args, **kwargs): } return types[type_](*args, **kwargs) +def plugin_path(plugin, params): + return "%s?%s" % (plugin, urllib.urlencode(params)) + class JSONRPC(object): diff --git a/resources/lib/views.py b/resources/lib/views.py index bc120c66..63fb5039 100644 --- a/resources/lib/views.py +++ b/resources/lib/views.py @@ -14,7 +14,7 @@ import xbmcvfs import read_embyserver as embyserver import embydb_functions as embydb -from utils import window, language as lang, indent as xml_indent +from utils import window, language as lang, indent as xml_indent, plugin_path ################################################################################################# @@ -635,22 +635,50 @@ class VideoNodes(object): # Set window properties if (mediatype == "homevideos" or mediatype == "photos") and nodetype == "all": - # Custom query - path = ("plugin://plugin.video.emby/?id=%s&mode=browsecontent&type=%s" - % (tagname, mediatype)) + params = { + + 'id': tagname.encode('utf-8'), + 'mode': "browsecontent", + 'type': mediatype + } + path = plugin_path("plugin://plugin.video.emby/", params) + elif (mediatype == "homevideos" or mediatype == "photos"): - # Custom query - path = ("plugin://plugin.video.emby/?id=%s&mode=browsecontent&type=%s&folderid=%s" - % (tagname, mediatype, nodetype)) + params = { + + 'id': tagname.encode('utf-8'), + 'mode': "browsecontent", + 'type': mediatype, + 'folderid': nodetype + } + path = plugin_path("plugin://plugin.video.emby/", params) + elif nodetype == "nextepisodes": - # Custom query - path = "plugin://plugin.video.emby/?id=%s&mode=nextup&limit=25" % tagname + params = { + + 'id': tagname.encode('utf-8'), + 'mode': "nextup", + 'limit': 25 + } + path = plugin_path("plugin://plugin.video.emby/", params) + elif KODI == 14 and nodetype == "recentepisodes": - # Custom query - path = "plugin://plugin.video.emby/?id=%s&mode=recentepisodes&limit=25" % tagname + params = { + + 'id': tagname.encode('utf-8'), + 'mode': "recentepisodes", + 'limit': 25 + } + path = plugin_path("plugin://plugin.video.emby/", params) + elif KODI == 14 and nodetype == "inprogressepisodes": - # Custom query - path = "plugin://plugin.video.emby/?id=%s&mode=inprogressepisodes&limit=25"% tagname + params = { + + 'id': tagname.encode('utf-8'), + 'mode': "inprogressepisodes", + 'limit': 25 + } + path = plugin_path("plugin://plugin.video.emby/", params) else: path = "library://video/emby/%s/%s.xml" % (viewid, nodetype)