From feb6c73fc33e71c177324fa8e935ade4dc393efa Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Wed, 24 Jun 2015 10:02:34 +0200 Subject: [PATCH] fix texture cache stuff --- resources/lib/TextureCache.py | 45 ++++++++++++++++++------------- resources/lib/WriteKodiVideoDB.py | 4 +-- 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/resources/lib/TextureCache.py b/resources/lib/TextureCache.py index 09d0e9a4..81762afb 100644 --- a/resources/lib/TextureCache.py +++ b/resources/lib/TextureCache.py @@ -3,11 +3,11 @@ ################################################################################################# -import xbmc -import xbmcaddon +import xbmc, xbmcaddon, xbmcvfs import json import requests import urllib +import os import Utils as utils @@ -42,15 +42,38 @@ class TextureCache(): def FullTextureCacheSync(self): #this method can be called from the plugin to sync all Kodi textures to the texture cache. #Warning: this means that every image will be cached locally, this takes diskspace! + + #remove all existing textures first + path = "special://thumbnails/" + if xbmcvfs.exists(path): + allDirs, allFiles = xbmcvfs.listdir(path) + for dir in allDirs: + allDirs, allFiles = xbmcvfs.listdir(path+dir) + for file in allFiles: + xbmcvfs.delete(os.path.join(path+dir,file)) + + textureconnection = utils.KodiSQL("texture") + texturecursor = textureconnection.cursor() + texturecursor.execute('SELECT tbl_name FROM sqlite_master WHERE type="table"') + rows = texturecursor.fetchall() + for row in rows: + tableName = row[0] + if(tableName != "version"): + texturecursor.execute("DELETE FROM " + tableName) + textureconnection.commit() + texturecursor.close() + + + #cache all entries in video DB connection = utils.KodiSQL("video") cursor = connection.cursor() cursor.execute("SELECT url FROM art") result = cursor.fetchall() for url in result: self.CacheTexture(url[0]) - cursor.close() + #cache all entries in music DB connection = utils.KodiSQL("music") cursor = connection.cursor() cursor.execute("SELECT url FROM art") @@ -73,21 +96,7 @@ class TextureCache(): except: #extreme short timeouts so we will have a exception, but we don't need the result so pass pass - - def refreshFanart(self,url): - connection = utils.KodiSQL("texture") - cursor = connection.cursor() - cursor.execute("SELECT cachedurl FROM texture WHERE url = ?", (url,)) - result = cursor.fetchone() - if result: - result = result[0] - cursor.execute("DELETE FROM texture WHERE cachedurl = ?", (result,)) - connection.commit() - cursor.close() - else: - cursor.close() - self.CacheTexture(url) - + def setKodiWebServerDetails(self): # Get the Kodi webserver details - used to set the texture cache diff --git a/resources/lib/WriteKodiVideoDB.py b/resources/lib/WriteKodiVideoDB.py index 68555491..e6a9ef7e 100644 --- a/resources/lib/WriteKodiVideoDB.py +++ b/resources/lib/WriteKodiVideoDB.py @@ -792,10 +792,8 @@ class WriteKodiVideoDB(): cursor.execute("UPDATE art set url = ? WHERE media_id = ? AND media_type = ? AND type = ?", (imageUrl, kodiId, mediaType, imageType)) #cache fanart and poster in Kodi texture cache - if "fanart" in imageType: + if "fanart" in imageType or "poster" in imageType: utils.logMsg("ArtworkSync", "Adding or Updating Fanart: %s" % imageUrl) - self.textureCache.refreshFanart(imageUrl) - elif "poster" in imageType: self.textureCache.CacheTexture(imageUrl) def setKodiResumePoint(self, fileid, resume_seconds, total_seconds, cursor):