some changes to the video nodes building

This commit is contained in:
Marcel van der Veldt 2015-05-06 22:53:55 +02:00
parent 52a8345430
commit e76bf71591
1 changed files with 222 additions and 161 deletions

View File

@ -212,47 +212,135 @@ def reset():
xbmc.executebuiltin("RestartApp") xbmc.executebuiltin("RestartApp")
def buildVideoNodeForView(tagname, type): def buildVideoNodeForView(tagname, type, windowPropId):
#this method will build a video node for a particular Emby view (= tag in kodi) #this method will build a video node for a particular Emby view (= tag in kodi)
#we set some window props here to for easy future reference and to be used in skins (for easy access only)
WINDOW = xbmcgui.Window(10000)
libraryPath = xbmc.translatePath("special://profile/library/video/Emby - %s/" %tagname) libraryPath = xbmc.translatePath("special://profile/library/video/Emby - %s/" %tagname)
if not xbmcvfs.exists(libraryPath): #create tag node - index
#create tag node - index xbmcvfs.mkdir(libraryPath)
xbmcvfs.mkdir(libraryPath) nodefile = os.path.join(libraryPath, "index.xml")
nodefile = os.path.join(libraryPath, "index.xml") root = Element("node", {"order":"0"})
root = Element("node", {"order":"1"}) SubElement(root, "label").text = "Emby - " + tagname
SubElement(root, "label").text = "Emby - " + tagname SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png"
SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png" try:
try: ET.ElementTree(root).write(nodefile, xml_declaration=True)
ET.ElementTree(root).write(nodefile, xml_declaration=True) except:
except: ET.ElementTree(root).write(nodefile)
ET.ElementTree(root).write(nodefile)
#create tag node - all items #create tag node - all items
nodefile = os.path.join(libraryPath, tagname + "_all.xml") nodefile = os.path.join(libraryPath, tagname + "_all.xml")
root = Element("node", {"order":"1", "type":"filter"}) root = Element("node", {"order":"1", "type":"filter"})
SubElement(root, "label").text = tagname SubElement(root, "label").text = tagname
SubElement(root, "match").text = "all"
SubElement(root, "content").text = type
SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png"
SubElement(root, "order", {"direction":"ascending"}).text = "sorttitle"
Rule = SubElement(root, "rule", {"field":"tag","operator":"is"})
WINDOW.setProperty("Emby.nodes.%s.title" %str(windowPropId),tagname)
path = "library://video/Emby - %s/%s_all.xml"%(tagname,tagname)
WINDOW.setProperty("Emby.nodes.%s.path" %str(windowPropId),"ActivateWindow(Video,%s,return)"%path)
WINDOW.setProperty("Emby.nodes.%s.content" %str(windowPropId),path)
WINDOW.setProperty("Emby.nodes.%s.type" %str(windowPropId),type)
SubElement(Rule, "value").text = tagname
try:
ET.ElementTree(root).write(nodefile, xml_declaration=True)
except:
ET.ElementTree(root).write(nodefile)
#create tag node - recent items
nodefile = os.path.join(libraryPath, tagname + "_recent.xml")
root = Element("node", {"order":"2", "type":"filter"})
if type == "tvshows":
label = tagname + " - " + language(30170)
else:
label = tagname + " - " + language(30174)
SubElement(root, "label").text = label
SubElement(root, "match").text = "all"
SubElement(root, "content").text = type
SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png"
Rule = SubElement(root, "rule", {"field":"tag","operator":"is"})
SubElement(Rule, "value").text = tagname
SubElement(root, "order", {"direction":"descending"}).text = "dateadded"
#set limit to 25 --> currently hardcoded --> TODO: add a setting for this ?
SubElement(root, "limit").text = "25"
#exclude watched items --> currently hardcoded --> TODO: add a setting for this ?
Rule2 = SubElement(root, "rule", {"field":"playcount","operator":"is"})
SubElement(Rule2, "value").text = "0"
WINDOW.setProperty("Emby.nodes.%s.recent.title" %str(windowPropId),label)
path = "library://video/Emby - %s/%s_recent.xml"%(tagname,tagname)
WINDOW.setProperty("Emby.nodes.%s.recent.path" %str(windowPropId),"ActivateWindow(Video,%s,return)"%path)
WINDOW.setProperty("Emby.nodes.%s.recent.content" %str(windowPropId),path)
try:
ET.ElementTree(root).write(nodefile, xml_declaration=True)
except:
ET.ElementTree(root).write(nodefile)
#create tag node - inprogress items
nodefile = os.path.join(libraryPath, tagname + "_progress.xml")
root = Element("node", {"order":"3", "type":"filter"})
if type == "tvshows":
label = tagname + " - " + language(30171)
else:
label = tagname + " - " + language(30177)
SubElement(root, "label").text = label
SubElement(root, "match").text = "all"
SubElement(root, "content").text = type
SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png"
Rule = SubElement(root, "rule", {"field":"tag","operator":"is"})
SubElement(Rule, "value").text = tagname
#set limit to 25 --> currently hardcoded --> TODO: add a setting for this ?
SubElement(root, "limit").text = "25"
Rule2 = SubElement(root, "rule", {"field":"inprogress","operator":"true"})
WINDOW.setProperty("Emby.nodes.%s.inprogress.title" %str(windowPropId),label)
path = "library://video/Emby - %s/%s_progress.xml"%(tagname,tagname)
WINDOW.setProperty("Emby.nodes.%s.inprogress.path" %str(windowPropId),"ActivateWindow(Video,%s,return)"%path)
WINDOW.setProperty("Emby.nodes.%s.inprogress.content" %str(windowPropId),path)
try:
ET.ElementTree(root).write(nodefile, xml_declaration=True)
except:
ET.ElementTree(root).write(nodefile)
#create tag node - add unwatched movies node for movies
if type == "movies":
nodefile = os.path.join(libraryPath, tagname + "_unwatched.xml")
root = Element("node", {"order":"4", "type":"filter"})
label = tagname + " - " + language(30189)
SubElement(root, "label").text = label
SubElement(root, "match").text = "all" SubElement(root, "match").text = "all"
SubElement(root, "content").text = type SubElement(root, "content").text = "movies"
SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png" SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png"
SubElement(root, "order", {"direction":"ascending"}).text = "sorttitle"
Rule = SubElement(root, "rule", {"field":"tag","operator":"is"}) Rule = SubElement(root, "rule", {"field":"tag","operator":"is"})
SubElement(Rule, "value").text = tagname SubElement(Rule, "value").text = tagname
Rule = SubElement(root, "rule", {"field":"playcount","operator":"is"})
SubElement(Rule, "value").text = "0"
SubElement(root, "order", {"direction":"ascending"}).text = "sorttitle"
#set limit to 25 --> currently hardcoded --> TODO: add a setting for this ?
SubElement(root, "limit").text = "25"
#exclude watched items --> currently hardcoded --> TODO: add a setting for this ?
Rule2 = SubElement(root, "rule", {"field":"playcount","operator":"is"})
SubElement(Rule2, "value").text = "0"
WINDOW.setProperty("Emby.nodes.%s.unwatched.title" %str(windowPropId),label)
path = "library://video/Emby - %s/%s_unwatched.xml"%(tagname,tagname)
WINDOW.setProperty("Emby.nodes.%s.unwatched.path" %str(windowPropId),"ActivateWindow(Video,%s,return)"%path)
WINDOW.setProperty("Emby.nodes.%s.unwatched.content" %str(windowPropId),path)
try: try:
ET.ElementTree(root).write(nodefile, xml_declaration=True) ET.ElementTree(root).write(nodefile, xml_declaration=True)
except: except:
ET.ElementTree(root).write(nodefile) ET.ElementTree(root).write(nodefile)
#create tag node - recent items
nodefile = os.path.join(libraryPath, tagname + "_recent.xml") #add some additional nodes for episodes
root = Element("node", {"order":"2", "type":"filter"}) if type == "tvshows":
if type == "tvshows": #create tag node - recent episodes
SubElement(root, "label").text = tagname + " - " + language(30170) nodefile = os.path.join(libraryPath, tagname + "_recent_episodes.xml")
else: root = Element("node", {"order":"3", "type":"filter"})
SubElement(root, "label").text = tagname + " - " + language(30174) label = tagname + " - " + language(30175)
SubElement(root, "label").text = label
SubElement(root, "match").text = "all" SubElement(root, "match").text = "all"
SubElement(root, "content").text = type SubElement(root, "content").text = "episodes"
SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png" SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png"
Rule = SubElement(root, "rule", {"field":"tag","operator":"is"}) Rule = SubElement(root, "rule", {"field":"tag","operator":"is"})
SubElement(Rule, "value").text = tagname SubElement(Rule, "value").text = tagname
@ -262,115 +350,60 @@ def buildVideoNodeForView(tagname, type):
#exclude watched items --> currently hardcoded --> TODO: add a setting for this ? #exclude watched items --> currently hardcoded --> TODO: add a setting for this ?
Rule2 = SubElement(root, "rule", {"field":"playcount","operator":"is"}) Rule2 = SubElement(root, "rule", {"field":"playcount","operator":"is"})
SubElement(Rule2, "value").text = "0" SubElement(Rule2, "value").text = "0"
WINDOW.setProperty("Emby.nodes.%s.recentepisodes.title" %str(windowPropId),label)
path = "library://video/Emby - %s/%s_recent_episodes.xml"%(tagname,tagname)
WINDOW.setProperty("Emby.nodes.%s.recentepisodes.path" %str(windowPropId),"ActivateWindow(Video,%s,return)"%path)
WINDOW.setProperty("Emby.nodes.%s.recentepisodes.content" %str(windowPropId),path)
try: try:
ET.ElementTree(root).write(nodefile, xml_declaration=True) ET.ElementTree(root).write(nodefile, xml_declaration=True)
except: except:
ET.ElementTree(root).write(nodefile) ET.ElementTree(root).write(nodefile)
#create tag node - inprogress items #create tag node - inprogress items
nodefile = os.path.join(libraryPath, tagname + "_progress.xml") nodefile = os.path.join(libraryPath, tagname + "_progress_episodes.xml")
root = Element("node", {"order":"3", "type":"filter"}) root = Element("node", {"order":"4", "type":"filter"})
if type == "tvshows": label = tagname + " - " + language(30178)
SubElement(root, "label").text = tagname + " - " + language(30171) SubElement(root, "label").text = label
else:
SubElement(root, "label").text = tagname + " - " + language(30177)
SubElement(root, "match").text = "all" SubElement(root, "match").text = "all"
SubElement(root, "content").text = type SubElement(root, "content").text = "episodes"
SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png" SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png"
Rule = SubElement(root, "rule", {"field":"tag","operator":"is"}) Rule = SubElement(root, "rule", {"field":"tag","operator":"is"})
SubElement(Rule, "value").text = tagname SubElement(Rule, "value").text = tagname
#set limit to 25 --> currently hardcoded --> TODO: add a setting for this ? #set limit to 25 --> currently hardcoded --> TODO: add a setting for this ?
SubElement(root, "limit").text = "25" SubElement(root, "limit").text = "25"
Rule2 = SubElement(root, "rule", {"field":"inprogress","operator":"true"}) Rule2 = SubElement(root, "rule", {"field":"inprogress","operator":"true"})
WINDOW.setProperty("Emby.nodes.%s.inprogressepisodes.title" %str(windowPropId),label)
path = "library://video/Emby - %s/%s_progress_episodes.xml"%(tagname,tagname)
WINDOW.setProperty("Emby.nodes.%s.inprogressepisodes.path" %str(windowPropId),"ActivateWindow(Video,%s,return)"%path)
WINDOW.setProperty("Emby.nodes.%s.inprogressepisodes.content" %str(windowPropId),path)
try: try:
ET.ElementTree(root).write(nodefile, xml_declaration=True) ET.ElementTree(root).write(nodefile, xml_declaration=True)
except: except:
ET.ElementTree(root).write(nodefile) ET.ElementTree(root).write(nodefile)
#create tag node - add unwatched movies node for movies #create tag node - nextup items
if type == "movies": nodefile = os.path.join(libraryPath, tagname + "_nextup_episodes.xml")
nodefile = os.path.join(libraryPath, tagname + "_unwatched.xml") root = Element("node", {"order":"4", "type":"folder"})
root = Element("node", {"order":"4", "type":"filter"}) label = tagname + " - " + language(30179)
SubElement(root, "label").text = tagname + " - " + language(30189) SubElement(root, "label").text = label
SubElement(root, "match").text = "all" SubElement(root, "content").text = "episodes"
SubElement(root, "content").text = "movies" path = "plugin://plugin.video.emby/?id=%s&mode=nextup&limit=25" %tagname
SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png" SubElement(root, "path").text = path
Rule = SubElement(root, "rule", {"field":"tag","operator":"is"}) SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png"
SubElement(Rule, "value").text = tagname WINDOW.setProperty("Emby.nodes.%s.nextepisodes.title" %str(windowPropId),label)
Rule = SubElement(root, "rule", {"field":"playcount","operator":"is"}) path = "library://video/Emby - %s/%s_nextup_episodes.xml"%(tagname,tagname)
SubElement(Rule, "value").text = "0" WINDOW.setProperty("Emby.nodes.%s.nextepisodes.path" %str(windowPropId),"ActivateWindow(Video,%s,return)"%path)
SubElement(root, "order", {"direction":"ascending"}).text = "sorttitle" WINDOW.setProperty("Emby.nodes.%s.nextepisodes.content" %str(windowPropId),path)
#set limit to 25 --> currently hardcoded --> TODO: add a setting for this ? try:
SubElement(root, "limit").text = "25" ET.ElementTree(root).write(nodefile, xml_declaration=True)
#exclude watched items --> currently hardcoded --> TODO: add a setting for this ? except:
Rule2 = SubElement(root, "rule", {"field":"playcount","operator":"is"}) ET.ElementTree(root).write(nodefile)
SubElement(Rule2, "value").text = "0"
try:
ET.ElementTree(root).write(nodefile, xml_declaration=True)
except:
ET.ElementTree(root).write(nodefile)
#add some additional nodes for episodes
if type == "tvshows":
#create tag node - recent episodes
nodefile = os.path.join(libraryPath, tagname + "_recent_episodes.xml")
root = Element("node", {"order":"3", "type":"filter"})
SubElement(root, "label").text = tagname + " - " + language(30175)
SubElement(root, "match").text = "all"
SubElement(root, "content").text = "episodes"
SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png"
Rule = SubElement(root, "rule", {"field":"tag","operator":"is"})
SubElement(Rule, "value").text = tagname
SubElement(root, "order", {"direction":"descending"}).text = "dateadded"
#set limit to 25 --> currently hardcoded --> TODO: add a setting for this ?
SubElement(root, "limit").text = "25"
#exclude watched items --> currently hardcoded --> TODO: add a setting for this ?
Rule2 = SubElement(root, "rule", {"field":"playcount","operator":"is"})
SubElement(Rule2, "value").text = "0"
try:
ET.ElementTree(root).write(nodefile, xml_declaration=True)
except:
ET.ElementTree(root).write(nodefile)
#create tag node - inprogress items
nodefile = os.path.join(libraryPath, tagname + "_progress_episodes.xml")
root = Element("node", {"order":"4", "type":"filter"})
SubElement(root, "label").text = tagname + " - " + language(30178)
SubElement(root, "match").text = "all"
SubElement(root, "content").text = "episodes"
SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png"
Rule = SubElement(root, "rule", {"field":"tag","operator":"is"})
SubElement(Rule, "value").text = tagname
#set limit to 25 --> currently hardcoded --> TODO: add a setting for this ?
SubElement(root, "limit").text = "25"
Rule2 = SubElement(root, "rule", {"field":"inprogress","operator":"true"})
try:
ET.ElementTree(root).write(nodefile, xml_declaration=True)
except:
ET.ElementTree(root).write(nodefile)
#create tag node - nextup items
nodefile = os.path.join(libraryPath, tagname + "_nextup_episodes.xml")
root = Element("node", {"order":"4", "type":"folder"})
SubElement(root, "label").text = tagname + " - " + language(30179)
SubElement(root, "content").text = "episodes"
SubElement(root, "path").text = "plugin://plugin.video.emby/?id=%s&mode=nextup&limit=25" %tagname
SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png"
try:
ET.ElementTree(root).write(nodefile, xml_declaration=True)
except:
ET.ElementTree(root).write(nodefile)
def buildVideoNodesListing(): def buildVideoNodesListing():
import shutil import shutil
from ReadEmbyDB import ReadEmbyDB from ReadEmbyDB import ReadEmbyDB
WINDOW = xbmcgui.Window(10000)
try: try:
@ -393,62 +426,90 @@ def buildVideoNodesListing():
if file.startswith("emby"): if file.startswith("emby"):
xbmcvfs.delete(path + file) xbmcvfs.delete(path + file)
#create tag node for emby channels #we build up a listing and set window props for all nodes we created
nodefile = os.path.join(xbmc.translatePath("special://profile/library/video"), "emby_channels.xml") #the window props will be used by the main entry point to quickly build up the listing and can be used in skins (like titan) too for quick reference
if not xbmcvfs.exists(nodefile): #comment marcelveldt: please leave the window props as-is because I will be referencing them in titan skin...
root = Element("node", {"order":"1", "type":"folder"}) totalNodesCount = 0
SubElement(root, "label").text = "Emby - " + language(30173)
SubElement(root, "content").text = "movies"
SubElement(root, "path").text = "plugin://plugin.video.emby/?id=0&mode=channels"
SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png"
try:
ET.ElementTree(root).write(nodefile, xml_declaration=True)
except:
ET.ElementTree(root).write(nodefile)
#create tag node - favorite shows
nodefile = os.path.join(xbmc.translatePath("special://profile/library/video"),"emby_favorite_shows.xml")
if not xbmcvfs.exists(nodefile):
root = Element("node", {"order":"1", "type":"filter"})
SubElement(root, "label").text = "Emby - " + language(30181)
SubElement(root, "match").text = "all"
SubElement(root, "content").text = "tvshows"
SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png"
SubElement(root, "order", {"direction":"ascending"}).text = "sorttitle"
Rule = SubElement(root, "rule", {"field":"tag","operator":"is"})
SubElement(Rule, "value").text = "Favorite tvshows" #do not localize the tagname itself
try:
ET.ElementTree(root).write(nodefile, xml_declaration=True)
except:
ET.ElementTree(root).write(nodefile)
#create tag node - favorite movies
nodefile = os.path.join(xbmc.translatePath("special://profile/library/video"),"emby_favorite_movies.xml")
if not xbmcvfs.exists(nodefile):
root = Element("node", {"order":"1", "type":"filter"})
SubElement(root, "label").text = "Emby - " + language(30180)
SubElement(root, "match").text = "all"
SubElement(root, "content").text = "movies"
SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png"
SubElement(root, "order", {"direction":"ascending"}).text = "sorttitle"
Rule = SubElement(root, "rule", {"field":"tag","operator":"is"})
SubElement(Rule, "value").text = "Favorite movies" #do not localize the tagname itself
try:
ET.ElementTree(root).write(nodefile, xml_declaration=True)
except:
ET.ElementTree(root).write(nodefile)
#build the listing for all views #build the listing for all views
views_movies = ReadEmbyDB().getCollections("movies") views_movies = ReadEmbyDB().getCollections("movies")
if views_movies: if views_movies:
for view in views_movies: for view in views_movies:
buildVideoNodeForView(view.get('title'), "movies") buildVideoNodeForView(view.get('title'), "movies", totalNodesCount)
totalNodesCount +=1
views_shows = ReadEmbyDB().getCollections("tvshows") views_shows = ReadEmbyDB().getCollections("tvshows")
if views_shows: if views_shows:
for view in views_shows: for view in views_shows:
buildVideoNodeForView(view.get('title'), "tvshows") buildVideoNodeForView(view.get('title'), "tvshows", totalNodesCount)
totalNodesCount +=1
except: #create tag node for emby channels
nodefile = os.path.join(xbmc.translatePath("special://profile/library/video"), "emby_channels.xml")
root = Element("node", {"order":"1", "type":"folder"})
label = "Emby - " + language(30173)
SubElement(root, "label").text = label
SubElement(root, "content").text = "movies"
SubElement(root, "path").text = "plugin://plugin.video.emby/?id=0&mode=channels"
SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png"
WINDOW.setProperty("Emby.nodes.%s.title" %str(totalNodesCount),label)
WINDOW.setProperty("Emby.nodes.%s.type" %str(totalNodesCount),"channels")
path = "library://video/emby_channels.xml"
WINDOW.setProperty("Emby.nodes.%s.path" %str(totalNodesCount),"ActivateWindow(Video,%s,return)"%path)
WINDOW.setProperty("Emby.nodes.%s.content" %str(totalNodesCount),path)
totalNodesCount +=1
try:
ET.ElementTree(root).write(nodefile, xml_declaration=True)
except:
ET.ElementTree(root).write(nodefile)
#create tag node - favorite shows
nodefile = os.path.join(xbmc.translatePath("special://profile/library/video"),"emby_favorite_shows.xml")
root = Element("node", {"order":"1", "type":"filter"})
label = "Emby - " + language(30181)
SubElement(root, "label").text = label
SubElement(root, "match").text = "all"
SubElement(root, "content").text = "tvshows"
SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png"
SubElement(root, "order", {"direction":"ascending"}).text = "sorttitle"
Rule = SubElement(root, "rule", {"field":"tag","operator":"is"})
SubElement(Rule, "value").text = "Favorite tvshows" #do not localize the tagname itself
WINDOW.setProperty("Emby.nodes.%s.title" %str(totalNodesCount),label)
WINDOW.setProperty("Emby.nodes.%s.type" %str(totalNodesCount),"favourites")
path = "library://video/emby_favorite_shows.xml"
WINDOW.setProperty("Emby.nodes.%s.path" %str(totalNodesCount),"ActivateWindow(Video,%s,return)"%path)
WINDOW.setProperty("Emby.nodes.%s.content" %str(totalNodesCount),path)
totalNodesCount +=1
try:
ET.ElementTree(root).write(nodefile, xml_declaration=True)
except:
ET.ElementTree(root).write(nodefile)
#create tag node - favorite movies
nodefile = os.path.join(xbmc.translatePath("special://profile/library/video"),"emby_favorite_movies.xml")
root = Element("node", {"order":"1", "type":"filter"})
label = "Emby - " + language(30180)
SubElement(root, "label").text = label
SubElement(root, "match").text = "all"
SubElement(root, "content").text = "movies"
SubElement(root, "icon").text = "special://home/addons/plugin.video.emby/icon.png"
SubElement(root, "order", {"direction":"ascending"}).text = "sorttitle"
Rule = SubElement(root, "rule", {"field":"tag","operator":"is"})
SubElement(Rule, "value").text = "Favorite movies" #do not localize the tagname itself
WINDOW.setProperty("Emby.nodes.%s.title" %str(totalNodesCount),label)
WINDOW.setProperty("Emby.nodes.%s.type" %str(totalNodesCount),"favourites")
path = "library://video/emby_favorite_movies.xml"
WINDOW.setProperty("Emby.nodes.%s.path" %str(totalNodesCount),"ActivateWindow(Video,%s,return)"%path)
WINDOW.setProperty("Emby.nodes.%s.content" %str(totalNodesCount),path)
totalNodesCount +=1
try:
ET.ElementTree(root).write(nodefile, xml_declaration=True)
except:
ET.ElementTree(root).write(nodefile)
WINDOW.setProperty("Emby.nodes.total", str(totalNodesCount))
except Exception as e:
logMsg("Emby addon","Error while creating videonodes listings, restart required ?") logMsg("Emby addon","Error while creating videonodes listings, restart required ?")
print e