diff --git a/resources/lib/TextureCache.py b/resources/lib/TextureCache.py index 6f156a11..ac4ac167 100644 --- a/resources/lib/TextureCache.py +++ b/resources/lib/TextureCache.py @@ -137,32 +137,18 @@ class TextureCache(): for art in artwork: if art == "Backdrop": - # Backdrop entry is a list, process extra fanart for artwork downloader (fanart, fanart1, fanart2, etc.) - backdrops = artwork[art] - backdropsNumber = len(backdrops) - - cursor.execute("SELECT url FROM art WHERE media_id = ? AND media_type = ? AND type LIKE ?", (kodiId, mediaType, "fanart%",)) - rows = cursor.fetchall() - - if len(rows) > backdropsNumber: - # More backdrops in database than what we are going to process. Delete extra fanart. - cursor.execute("DELETE FROM art WHERE media_id = ? AND media_type = ? AND type LIKE ?", (kodiId, mediaType, "fanart_",)) - - index = "" - for backdrop in backdrops: - self.addOrUpdateArt(backdrop, kodiId, mediaType, "%s%s" % ("fanart", index), cursor) - if backdropsNumber > 1: - try: # Will only fail on the first try, str to int. - index += 1 - except TypeError: - index = 1 + # Backdrop entry is a list + artList = artwork[art] + if artList: + self.addOrUpdateArt(artList[0], kodiId, mediaType, kodiart[art], cursor) elif art == "Primary": # Primary art is processed as thumb and poster for Kodi. for artType in kodiart[art]: self.addOrUpdateArt(artwork[art], kodiId, mediaType, artType, cursor) - else: # For banner, logo, art, thumb, disc + else: + # For banner, logo, art, thumb, disc self.addOrUpdateArt(artwork[art], kodiId, mediaType, kodiart[art], cursor) def addOrUpdateArt(self, imageUrl, kodiId, mediaType, imageType, cursor): @@ -180,14 +166,14 @@ class TextureCache(): query = "INSERT INTO art(media_id, media_type, type, url) values(?, ?, ?, ?)" cursor.execute(query, (kodiId, mediaType, imageType, imageUrl)) - else: # Only cache artwork if it changed + else: if url != imageUrl: cacheimage = True - # Only for the main backdrop, poster - if imageType in {"fanart", "poster"}: + # Only for backdrop + if imageType == "fanart": # Delete current entry before updating with the new one - self.deleteCachedArtwork(url) + self.deleteFanart(url) self.logMsg("Updating Art Link for kodiId: %s (%s) -> (%s)" % (kodiId, url, imageUrl), 1) query = "UPDATE art set url = ? WHERE media_id = ? AND media_type = ? AND type = ?" @@ -202,31 +188,26 @@ class TextureCache(): if url and self.enableTextureCache: self.logMsg("Processing: %s" % url, 2) - # Add image to texture cache by simply calling it at the http endpoint + # add image to texture cache by simply calling it at the http endpoint url = self.double_urlencode(url) - try: # Extreme short timeouts so we will have a exception, but we don't need the result so pass - response = requests.head('http://%s:%s/image/image://%s' % (self.xbmc_host, self.xbmc_port, url), auth=(self.xbmc_username, self.xbmc_password), timeout=(0.01, 0.01)) - except: pass + try: + response = requests.head('http://%s:%s/image/image://%s' % (self.xbmc_host, self.xbmc_port, url), auth=(self.xbmc_username, self.xbmc_password),timeout=(0.01, 0.01)) + except: + #extreme short timeouts so we will have a exception, but we don't need the result so pass + pass - def deleteCachedArtwork(self, url): - # Only necessary to remove and apply a new backdrop or poster + def deleteFanart(self, url): + # Only necessary to remove and apply a new backdrop connection = utils.KodiSQL('texture') cursor = connection.cursor() cursor.execute("SELECT cachedurl FROM texture WHERE url = ?", (url,)) try: - cachedurl = cursor.fetchone()[0] - + cursor.fetchone()[0] except: self.logMsg("Could not find cached url.", 1) - - else: # Delete thumbnail as well as the entry - thumbnails = xbmc.translatePath("special://thumbnails/%s" % cachedurl) - self.logMsg("Deleting cached thumbnail: %s" % thumbnails, 1) - xbmcvfs.delete(thumbnails) - + else: cursor.execute("DELETE FROM texture WHERE url = ?", (url,)) connection.commit() - finally: cursor.close() \ No newline at end of file