# -*- 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)