# -*- coding: utf-8 -*-
import xbmc
import xbmcaddon
import xbmcplugin
import xbmcgui
import sys
from urllib.parse import parse_qsl, urlencode
import os

addon = xbmcaddon.Addon()
addonpath = addon.getAddonInfo('path')
player = xbmc.Player()

# Rádios + vídeo ao vivo com ícones separados
streams = {
    'Estúdio KAZA FM': ['https://stm.kazafm.com.br/Live', 'icon.png', 'music'],
    'Estúdio KAZA AO VIVO': ['https://srs.kazafm.com.br/live/livestream.flv', 'ao_vivo.png', 'video'],
    'Estúdio KAZA FM SERTANEJO': ['https://sertanejo.kazafm.com.br/sertanejo', 'sertanejo.png', 'music'],
    'Estúdio KAZA FM LOUVORES': ['https://louvor.kazafm.com.br/Louvores', 'louvores.png', 'music'],
    'Estúdio KAZA FM FLASHBACK': ['https://flashback.kazafm.com.br/flashback', 'flashback.png', 'music'],
    'Estúdio KAZA FM PAGODE': ['https://pagode.kazafm.com.br/pagode', 'pagode.png', 'music']
}


def get_url(params):
    return '{0}?{1}'.format(_url, urlencode(params))


def get_image(image):
    return os.path.join(addonpath, 'resources', 'images', image)


def list_streams():
    xbmcplugin.setPluginCategory(_handle, 'Estúdio KAZA FM')
    xbmcplugin.setContent(_handle, 'mixed')  # lista pode conter áudio e vídeo

    for stream in streams:
        url_stream, icon, tipo = streams[stream]

        liz = xbmcgui.ListItem(label=stream)
        liz.setPath(url_stream)
        liz.setArt({'icon': get_image(icon), 'thumb': get_image(icon), 'fanart': get_image('fanart.jpg')})
        liz.setProperty('IsPlayable', 'true')

        if tipo == 'music':
            liz.setInfo('music', {'title': stream})
        else:
            liz.setInfo('video', {'title': stream})

        url = get_url({'action': 'play', 'url': url_stream,
                       'icon': get_image(icon),
                       'title': stream,
                       'type': tipo})
        xbmcplugin.addDirectoryItem(_handle, url, liz, isFolder=False)

    xbmcplugin.addSortMethod(_handle, xbmcplugin.SORT_METHOD_LABEL_IGNORE_THE)
    xbmcplugin.endOfDirectory(_handle)


def play_stream(path, icon, title, tipo):
    if player.isPlaying():
        xbmc.log('Stop player')
        player.stop()
    xbmc.log('Playing {}'.format(path))
    play_item = xbmcgui.ListItem(path=path)

    if tipo == 'music':
        play_item.setInfo('music', {'title': title})
    else:
        play_item.setInfo('video', {'title': title})

    play_item.setArt({'icon': icon, 'thumb': icon, 'fanart': get_image('fanart.jpg')})
    xbmcplugin.setResolvedUrl(_handle, True, listitem=play_item)


def router(route):
    params = dict(parse_qsl(route))
    xbmc.log('Parameter list: {}'.format(params), xbmc.LOGDEBUG)
    if params:
        if params['action'] == 'play':
            play_stream(params['url'], params['icon'], params['title'], params.get('type', 'music'))
    else:
        list_streams()


_url = sys.argv[0]
_handle = int(sys.argv[1])

if __name__ == '__main__':
    try:
        router(sys.argv[2][1:])
    except IndexError:
        list_streams()
