Attempt to fix video nodes.
Still getting 18:55:33 T:7956 ERROR: XFILE::CDirectory::GetDirectory - Error getting library://video/Plex-1/1_sets.xml/ 18:55:33 T:7956 ERROR: CGUIMediaWindow::GetDirectory(library://video/Plex-1/1_sets.xml/) failed
This commit is contained in:
parent
91c5cb4608
commit
525c59c75b
3 changed files with 47 additions and 49 deletions
|
@ -1910,10 +1910,10 @@ class Music(Items):
|
|||
|
||||
# Plex works a bit differently
|
||||
# if self.directstream:
|
||||
paths = "%s%s" % (self.server, item[0][0].attrib.get('key'))
|
||||
paths = paths.rsplit('/', 1)
|
||||
path = paths[0] + '/'
|
||||
filename = API.addPlexCredentialsToUrl(paths[1])
|
||||
path = "%s%s" % (self.server, item[0][0].attrib.get('key'))
|
||||
filename = API.addPlexCredentialsToUrl(path)
|
||||
# Keep path empty to not let Kodi scan it
|
||||
path = None
|
||||
# else:
|
||||
# path = "plugin://plugin.audio.plexkodiconnect.music/"
|
||||
# filename = API.getKey()
|
||||
|
|
|
@ -416,6 +416,7 @@ class LibrarySync(Thread):
|
|||
|
||||
# Get current media folders from emby database
|
||||
view = emby_db.getView_byId(folderid)
|
||||
self.logMsg("playlist: %s, nodes: %s, sorted_views: %s, folderid: %s, foldername: %s, viewtype: %s" % (playlists, nodes, sorted_views, folderid, foldername, viewtype))
|
||||
try:
|
||||
current_viewname = view[0]
|
||||
current_viewtype = view[1]
|
||||
|
@ -547,13 +548,22 @@ class LibrarySync(Thread):
|
|||
# total nodes for window properties
|
||||
vnodes.clearProperties()
|
||||
totalnodes = 0
|
||||
# For whatever freaking reason, .copy() or dict() does NOT work?!?!?!
|
||||
self.nodes = {
|
||||
'movie': [],
|
||||
'show': [],
|
||||
'artist': []
|
||||
}
|
||||
self.playlists = self.nodes.copy()
|
||||
self.sorted_views = self.nodes.copy()
|
||||
self.playlists = {
|
||||
'movie': [],
|
||||
'show': [],
|
||||
'artist': []
|
||||
}
|
||||
self.sorted_views = {
|
||||
'movie': [],
|
||||
'show': [],
|
||||
'artist': []
|
||||
}
|
||||
|
||||
for view in sections:
|
||||
itemType = view.attrib['type']
|
||||
|
|
|
@ -1,36 +1,24 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
#################################################################################################
|
||||
###############################################################################
|
||||
|
||||
import shutil
|
||||
import xml.etree.ElementTree as etree
|
||||
|
||||
import xbmc
|
||||
import xbmcaddon
|
||||
import xbmcvfs
|
||||
|
||||
import clientinfo
|
||||
import utils
|
||||
|
||||
#################################################################################################
|
||||
###############################################################################
|
||||
|
||||
|
||||
@utils.logging
|
||||
class VideoNodes(object):
|
||||
|
||||
|
||||
def __init__(self):
|
||||
|
||||
clientInfo = clientinfo.ClientInfo()
|
||||
self.addonName = clientInfo.getAddonName()
|
||||
|
||||
self.kodiversion = int(xbmc.getInfoLabel('System.BuildVersion')[:2])
|
||||
|
||||
def logMsg(self, msg, lvl=1):
|
||||
|
||||
className = self.__class__.__name__
|
||||
utils.logMsg("%s %s" % (self.addonName, className), msg, lvl)
|
||||
|
||||
|
||||
def commonRoot(self, order, label, tagname, roottype=1):
|
||||
|
||||
if roottype == 0:
|
||||
|
@ -48,7 +36,7 @@ class VideoNodes(object):
|
|||
root = etree.Element('node', attrib={'order': "%s" % order, 'type': "folder"})
|
||||
|
||||
etree.SubElement(root, 'label').text = label
|
||||
etree.SubElement(root, 'icon').text = "special://home/addons/plugin.video.emby/icon.png"
|
||||
etree.SubElement(root, 'icon').text = "special://home/addons/plugin.video.plexkodiconnect/icon.png"
|
||||
|
||||
return root
|
||||
|
||||
|
@ -64,7 +52,7 @@ class VideoNodes(object):
|
|||
|
||||
path = xbmc.translatePath("special://profile/library/video/").decode('utf-8')
|
||||
nodepath = xbmc.translatePath(
|
||||
"special://profile/library/video/Emby - %s/" % dirname).decode('utf-8')
|
||||
"special://profile/library/video/Plex-%s/" % dirname).decode('utf-8')
|
||||
|
||||
# Verify the video directory
|
||||
if not xbmcvfs.exists(path):
|
||||
|
@ -74,7 +62,7 @@ class VideoNodes(object):
|
|||
xbmcvfs.exists(path)
|
||||
|
||||
# Create the node directory
|
||||
if not xbmcvfs.exists(nodepath) and not mediatype == "photos":
|
||||
if not xbmcvfs.exists(nodepath) and not mediatype == "photo":
|
||||
# We need to copy over the default items
|
||||
xbmcvfs.mkdirs(nodepath)
|
||||
else:
|
||||
|
@ -89,19 +77,19 @@ class VideoNodes(object):
|
|||
# Create index entry
|
||||
nodeXML = "%sindex.xml" % nodepath
|
||||
# Set windows property
|
||||
path = "library://video/Emby - %s/" % dirname
|
||||
path = "library://video/Plex-%s/" % dirname
|
||||
for i in range(1, indexnumber):
|
||||
# Verify to make sure we don't create duplicates
|
||||
if window('Emby.nodes.%s.index' % i) == path:
|
||||
return
|
||||
|
||||
if mediatype == "photos":
|
||||
path = "plugin://plugin.video.emby/?id=%s&mode=getsubfolders" % indexnumber
|
||||
if mediatype == "photo":
|
||||
path = "plugin://plugin.video.plexkodiconnect/?id=%s&mode=getsubfolders" % indexnumber
|
||||
|
||||
window('Emby.nodes.%s.index' % indexnumber, value=path)
|
||||
|
||||
# Root
|
||||
if not mediatype == "photos":
|
||||
if not mediatype == "photo":
|
||||
if viewtype == "mixed":
|
||||
specialtag = "%s-%s" % (tagname, mediatype)
|
||||
root = self.commonRoot(order=0, label=specialtag, tagname=tagname, roottype=0)
|
||||
|
@ -128,7 +116,7 @@ class VideoNodes(object):
|
|||
}
|
||||
mediatypes = {
|
||||
# label according to nodetype per mediatype
|
||||
'movies':
|
||||
'movie':
|
||||
{
|
||||
'1': tagname,
|
||||
'2': 30174,
|
||||
|
@ -140,7 +128,7 @@ class VideoNodes(object):
|
|||
'11': 30230
|
||||
},
|
||||
|
||||
'tvshows':
|
||||
'show':
|
||||
{
|
||||
'1': tagname,
|
||||
'2': 30170,
|
||||
|
@ -160,7 +148,7 @@ class VideoNodes(object):
|
|||
'11': 30253
|
||||
},
|
||||
|
||||
'photos':
|
||||
'photo':
|
||||
{
|
||||
'1': tagname,
|
||||
'2': 30252,
|
||||
|
@ -192,27 +180,27 @@ class VideoNodes(object):
|
|||
label = stringid
|
||||
|
||||
# Set window properties
|
||||
if (mediatype == "homevideos" or mediatype == "photos") and nodetype == "all":
|
||||
if (mediatype == "homevideos" or mediatype == "photo") and nodetype == "all":
|
||||
# Custom query
|
||||
path = ("plugin://plugin.video.emby/?id=%s&mode=browsecontent&type=%s"
|
||||
path = ("plugin://plugin.video.plexkodiconnect/?id=%s&mode=browsecontent&type=%s"
|
||||
% (tagname, mediatype))
|
||||
elif (mediatype == "homevideos" or mediatype == "photos"):
|
||||
elif (mediatype == "homevideos" or mediatype == "photo"):
|
||||
# Custom query
|
||||
path = ("plugin://plugin.video.emby/?id=%s&mode=browsecontent&type=%s&folderid=%s"
|
||||
path = ("plugin://plugin.video.plexkodiconnect/?id=%s&mode=browsecontent&type=%s&folderid=%s"
|
||||
% (tagname, mediatype, nodetype))
|
||||
elif nodetype == "nextepisodes":
|
||||
# Custom query
|
||||
path = "plugin://plugin.video.emby/?id=%s&mode=nextup&limit=25" % tagname
|
||||
path = "plugin://plugin.video.plexkodiconnect/?id=%s&mode=nextup&limit=50" % tagname
|
||||
elif kodiversion == 14 and nodetype == "recentepisodes":
|
||||
# Custom query
|
||||
path = "plugin://plugin.video.emby/?id=%s&mode=recentepisodes&limit=25" % tagname
|
||||
path = "plugin://plugin.video.plexkodiconnect/?id=%s&mode=recentepisodes&limit=50" % tagname
|
||||
elif kodiversion == 14 and nodetype == "inprogressepisodes":
|
||||
# Custom query
|
||||
path = "plugin://plugin.video.emby/?id=%s&mode=inprogressepisodes&limit=25"% tagname
|
||||
path = "plugin://plugin.video.plexkodiconnect/?id=%s&mode=inprogressepisodes&limit=50"% tagname
|
||||
else:
|
||||
path = "library://video/Emby - %s/%s_%s.xml" % (dirname, viewid, nodetype)
|
||||
path = "library://video/Plex-%s/%s_%s.xml" % (dirname, viewid, nodetype)
|
||||
|
||||
if mediatype == "photos":
|
||||
if mediatype == "photo":
|
||||
windowpath = "ActivateWindow(Pictures,%s,return)" % path
|
||||
else:
|
||||
windowpath = "ActivateWindow(Video,%s,return)" % path
|
||||
|
@ -235,7 +223,7 @@ class VideoNodes(object):
|
|||
window('%s.path' % embynode, value=windowpath)
|
||||
window('%s.content' % embynode, value=path)
|
||||
|
||||
if mediatype == "photos":
|
||||
if mediatype == "photo":
|
||||
# For photos, we do not create a node in videos but we do want the window props
|
||||
# to be created.
|
||||
# To do: add our photos nodes to kodi picture sources somehow
|
||||
|
@ -259,7 +247,7 @@ class VideoNodes(object):
|
|||
else:
|
||||
etree.SubElement(root, 'content').text = mediatype
|
||||
|
||||
limit = "25"
|
||||
limit = "50"
|
||||
# Elements per nodetype
|
||||
if nodetype == "all":
|
||||
etree.SubElement(root, 'order', {'direction': "ascending"}).text = "sorttitle"
|
||||
|
@ -309,7 +297,7 @@ class VideoNodes(object):
|
|||
|
||||
elif nodetype == "inprogressepisodes":
|
||||
# Kodi Isengard, Jarvis
|
||||
etree.SubElement(root, 'limit').text = "25"
|
||||
etree.SubElement(root, 'limit').text = "50"
|
||||
rule = etree.SubElement(root, 'rule',
|
||||
attrib={'field': "inprogress", 'operator':"true"})
|
||||
|
||||
|
@ -325,8 +313,8 @@ class VideoNodes(object):
|
|||
tagname = tagname.encode('utf-8')
|
||||
cleantagname = utils.normalize_nodes(tagname)
|
||||
nodepath = xbmc.translatePath("special://profile/library/video/").decode('utf-8')
|
||||
nodeXML = "%semby_%s.xml" % (nodepath, cleantagname)
|
||||
path = "library://video/emby_%s.xml" % cleantagname
|
||||
nodeXML = "%splex_%s.xml" % (nodepath, cleantagname)
|
||||
path = "library://video/plex_%s.xml" % cleantagname
|
||||
windowpath = "ActivateWindow(Video,%s,return)" % path
|
||||
|
||||
# Create the video node directory
|
||||
|
@ -356,7 +344,7 @@ class VideoNodes(object):
|
|||
|
||||
if itemtype == "channels":
|
||||
root = self.commonRoot(order=1, label=label, tagname=tagname, roottype=2)
|
||||
etree.SubElement(root, 'path').text = "plugin://plugin.video.emby/?id=0&mode=channels"
|
||||
etree.SubElement(root, 'path').text = "plugin://plugin.video.plexkodiconnect/?id=0&mode=channels"
|
||||
else:
|
||||
root = self.commonRoot(order=1, label=label, tagname=tagname)
|
||||
etree.SubElement(root, 'order', {'direction': "ascending"}).text = "sorttitle"
|
||||
|
|
Loading…
Reference in a new issue