From 72ca06e41727fdd982dc668b82bb8845371b31db Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Sun, 3 May 2015 17:39:12 +0200 Subject: [PATCH] add support for native extrafanart --- default.py | 55 +++++++++++++++++++++++++++++++++++- resources/lib/WriteKodiDB.py | 8 +++--- 2 files changed, 58 insertions(+), 5 deletions(-) diff --git a/default.py b/default.py index 0fd50f31..cc6bc0bd 100644 --- a/default.py +++ b/default.py @@ -2,6 +2,7 @@ import xbmcaddon import xbmcplugin import xbmc import xbmcgui +import xbmcvfs import os import threading import json @@ -12,11 +13,14 @@ cwd = addonSettings.getAddonInfo('path') BASE_RESOURCE_PATH = xbmc.translatePath( os.path.join( cwd, 'resources', 'lib' ) ) sys.path.append(BASE_RESOURCE_PATH) + WINDOW = xbmcgui.Window(10000) import Utils as utils from PlaybackUtils import PlaybackUtils from DownloadUtils import DownloadUtils +from ReadEmbyDB import ReadEmbyDB +from API import API try: params = utils.get_params(sys.argv[2]) @@ -32,8 +36,57 @@ if mode == "play": result = DownloadUtils().downloadUrl(url) item = PlaybackUtils().PLAY(result, setup="default") + +#get extrafanart for listitem - this will only be used for skins that actually call the listitem's path + fanart dir... +elif "extrafanart" in sys.argv[0]: + itemPath = "" + embyId = "" + + try: + #only do this if the listitem has actually changed + itemPath = xbmc.getInfoLabel("ListItem.FileNameAndPath") + + if not itemPath: + itemPath = xbmc.getInfoLabel("ListItem.Path") + + if ("/tvshows/" in itemPath or "/musicvideos/" in itemPath or "/movies/" in itemPath): + embyId = itemPath.split("/")[-2] + + #we need to store the images locally for this to work because of the caching system in xbmc + fanartDir = xbmc.translatePath("special://thumbnails/emby/" + embyId + "/") + + if not xbmcvfs.exists(fanartDir): + #download the images to the cache directory + xbmcvfs.mkdir(fanartDir) + item = ReadEmbyDB().getFullItem(embyId) + if item != None: + if item.has_key("BackdropImageTags"): + if(len(item["BackdropImageTags"]) > 1): + totalbackdrops = len(item["BackdropImageTags"]) + for index in range(1,totalbackdrops): + backgroundUrl = API().getArtwork(item, "Backdrop",str(index)) + fanartFile = os.path.join(fanartDir,"fanart" + str(index) + ".jpg") + li = xbmcgui.ListItem(str(index), path=fanartFile) + xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=fanartFile, listitem=li) + xbmcvfs.copy(backgroundUrl,fanartFile) + + else: + #use existing cached images + dirs, files = xbmcvfs.listdir(fanartDir) + count = 1 + for file in files: + count +=1 + li = xbmcgui.ListItem(file, path=os.path.join(fanartDir,file)) + xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=os.path.join(fanartDir,file), listitem=li) + except: + pass + + #always do endofdirectory to prevent errors in the logs + xbmcplugin.endOfDirectory(int(sys.argv[1])) + + elif sys.argv[1] == "reset": utils.reset() -else: +else: xbmc.executebuiltin('Addon.OpenSettings(plugin.video.emby)') diff --git a/resources/lib/WriteKodiDB.py b/resources/lib/WriteKodiDB.py index 96c42b2d..825e23af 100644 --- a/resources/lib/WriteKodiDB.py +++ b/resources/lib/WriteKodiDB.py @@ -114,8 +114,8 @@ class WriteKodiDB(): #### ADD OR UPDATE THE FILE AND PATH ########### #### NOTE THAT LASTPLAYED AND PLAYCOUNT ARE STORED AT THE FILE ENTRY - path = "plugin://plugin.video.emby/movies/" - filename = "plugin://plugin.video.emby/movies/?id=%s&mode=play" % MBitem["Id"] + path = "plugin://plugin.video.emby/movies/%s/" % MBitem["Id"] + filename = "plugin://plugin.video.emby/movies/%s/?id=%s&mode=play" % (MBitem["Id"],MBitem["Id"]) #create the path cursor.execute("SELECT idPath as pathid FROM path WHERE strPath = ?",(path,)) @@ -257,8 +257,8 @@ class WriteKodiDB(): #### ADD OR UPDATE THE FILE AND PATH ########### #### NOTE THAT LASTPLAYED AND PLAYCOUNT ARE STORED AT THE FILE ENTRY - path = "plugin://plugin.video.emby/musicvideos/" - filename = "plugin://plugin.video.emby/musicvideos/?id=%s&mode=play" % MBitem["Id"] + path = "plugin://plugin.video.emby/musicvideos/%s/" % MBitem["Id"] + filename = "plugin://plugin.video.emby/musicvideos/%s/?id=%s&mode=play" % (MBitem["Id"], MBitem["Id"]) #create the path cursor.execute("SELECT idPath as pathid FROM path WHERE strPath = ?",(path,))