jellyfin-kodi/jellyfin_kodi/objects/kodi/artwork.py

86 lines
2.8 KiB
Python

# -*- coding: utf-8 -*-
from __future__ import division, absolute_import, print_function, unicode_literals
#################################################################################################
from ...helper import LazyLogger
from . import queries as QU
##################################################################################################
LOG = LazyLogger(__name__)
##################################################################################################
class Artwork(object):
def __init__(self, cursor):
self.cursor = cursor
def update(self, image_url, kodi_id, media, image):
"""Update artwork in the video database.
Delete current entry before updating with the new one.
"""
if not image_url or image == "poster" and media in ("song", "artist", "album"):
return
try:
self.cursor.execute(
QU.get_art,
(
kodi_id,
media,
image,
),
)
url = self.cursor.fetchone()[0]
except TypeError:
LOG.debug("ADD to kodi_id %s art: %s", kodi_id, image_url)
self.cursor.execute(QU.add_art, (kodi_id, media, image, image_url))
else:
if url != image_url:
LOG.info("UPDATE to kodi_id %s art: %s", kodi_id, image_url)
self.cursor.execute(QU.update_art, (image_url, kodi_id, media, image))
def add(self, artwork, *args):
"""Add all artworks."""
KODI = {
"Primary": ["thumb", "poster"],
"Banner": "banner",
"Logo": "clearlogo",
"Art": "clearart",
"Thumb": "landscape",
"Disc": "discart",
"Backdrop": "fanart",
}
for art in KODI:
if art == "Backdrop":
self.cursor.execute(QU.get_backdrops, args + ("fanart%",))
if len(self.cursor.fetchall()) > len(artwork["Backdrop"]):
self.cursor.execute(QU.delete_backdrops, args + ("fanart_",))
for index, backdrop in enumerate(artwork["Backdrop"]):
if index:
self.update(*(backdrop,) + args + ("%s%s" % ("fanart", index),))
else:
self.update(*(backdrop,) + args + ("fanart",))
elif art == "Primary":
for kodi_image in KODI["Primary"]:
self.update(*(artwork["Primary"],) + args + (kodi_image,))
elif artwork.get(art):
self.update(*(artwork[art],) + args + (KODI[art],))
def delete(self, *args):
"""Delete artwork from kodi database"""
self.cursor.execute(QU.delete_art, args)