<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<items>

<item>
<title>[COLOR red]•[/COLOR] [B][COLOR white]ELEMENTUM[/COLOR][COLOR none]     $doregex[elementum]  [/COLOR][/B]</title>
<link>$doregex[install]</link>
<thumbnail>https://i.imgur.com/d1ad1Is.png</thumbnail>
<fanart>https://i.imgur.com/mAe2igo.jpg</fanart>
<regex>
<name>elementum</name>
<expres><![CDATA[#$pyFunction#
def GetLSProData(page_data, Cookie_Jar, m):
    import xbmcvfs
    import xbmcaddon
    import xbmc
    import os
    import requests
    from bs4 import BeautifulSoup

    HOME = xbmcvfs.translatePath('special://home/')
    ADDONS = xbmcvfs.translatePath(os.path.join(HOME, 'addons'))
    ELEMENTUM_ID = "plugin.video.elementum"
    localPath = os.path.join(ADDONS, ELEMENTUM_ID)
    remoteData = requests.get(
        "https://raw.githubusercontent.com/elgatito/plugin.video.elementum/master/addon.xml").text
    remoteSoup = BeautifulSoup(remoteData, "html5lib")

    if (localPath and xbmc.getCondVisibility('System.HasAddon(%s)' % ELEMENTUM_ID)):
        localVersion = xbmcaddon.Addon(ELEMENTUM_ID).getAddonInfo("version")
        remoteVersion = remoteSoup.find("addon").get("version")
        from distutils.version import LooseVersion
        if LooseVersion(remoteVersion) > LooseVersion(localVersion):
            return "[COLOR orange]ACTUALIZACIÓN REQUERIDA[/COLOR]"
        else:
            return "[COLOR lime]INSTALADO[/COLOR]"

    return "[COLOR red]NO INSTALADO[/COLOR]"

]]></expres>
<page></page>
</regex>
<regex>
<name>platforms</name>
<expres><![CDATA[#$pyFunction
def GetLSProData(page_data, Cookie_Jar, m):
    import requests
    import os
    import xbmcvfs
    import xbmcaddon
    import xbmcgui
    import platform as plt
    from bs4 import BeautifulSoup

    ADDON = xbmcaddon.Addon()
    ADDONTITLE = ADDON.getAddonInfo('name')
    HOME = xbmcvfs.translatePath('special://home/')
    ADDONS = os.path.join(HOME, 'addons')
    PACKAGES = os.path.join(HOME, 'packages')

    ELEMENTUM_URL = "https://elementum.surge.sh/getting-started/platforms-page/"
    platforms = dict()
    names = list()
    parentLinks = list()
    system = plt.system()

    data = requests.get(ELEMENTUM_URL).text
    soup = BeautifulSoup(data, "html5lib")
    for item in soup.find_all("tr", {"class": "platform-os"}):
        links = list()

        for link in item.find_all(
                "div", {"class": "platform-asset"}):
            links.append({link.text: link.find("a").get("href")})

        platforms[item.find(
            "td", {"class": "platform-name"}).text.strip().replace("OSx", "Darwin")] = links

    for platform, structures in platforms.items():
        for k, v in {key: value for dictionary in structures for key,
                     value in dictionary.items()}.items():
            if platform != system:
                names.append(
                    f"[COLOR red]{platform}[/COLOR] - [COLOR white]{k}[/COLOR]")
            else:
                names.append(
                    f"[B][COLOR orange]{platform} - {k}[/COLOR][/B]")
            parentLinks.append(v)
    option = xbmcgui.Dialog().select("Selecciona tu plataforma", names)
    if option == -1:
        return xbmcgui.Dialog().notification(ADDON.getAddonInfo('name'), "Selección cancelada", ADDON.getAddonInfo('icon'))
    return str((parentLinks[option], names[option]))

]]></expres>
<page></page>
</regex>
<regex>
<name>install</name>
<expres><![CDATA[#$pyFunction
def GetLSProData(page_data, Cookie_Jar, m):
    import os
    import xbmcvfs
    import xbmcaddon
    import xbmcgui
    import zipfile
    import time
    import urllib.request
    import xbmc
    import re
    import glob
    from datetime import datetime
    from sqlite3 import dbapi2 as database

    ADDON = xbmcaddon.Addon()
    ADDONTITLE = ADDON.getAddonInfo('name')
    HOME = xbmcvfs.translatePath('special://home/')
    ADDONS = os.path.join(HOME, 'addons')
    PACKAGES = os.path.join(ADDONS, 'packages')
    DATABASE = xbmcvfs.translatePath('special://database/')

    def latest_db(db):
        match = glob.glob(os.path.join(DATABASE, '{0}*.db'.format(db)))
        comp = '{0}(.+?).db'.format(db[1:])
        highest = 0
        for file in match:
            try:
                check = int(re.compile(comp).findall(file)[0])
            except:
                check = 0
            if highest < check:
                highest = check
        return '{0}{1}.db'.format(db, highest)

    def addon_database(addon=None, state=1, array=False):
        dbfile = latest_db('Addons')
        dbfile = os.path.join(DATABASE, dbfile)
        installedtime = str(datetime.now())[:-7]

        if os.path.exists(dbfile):
            try:
                textdb = database.connect(dbfile)
                textexe = textdb.cursor()
            except Exception as e:
                return False
        else:
            return False

        if state == 2:
            try:
                textexe.execute(
                    "DELETE FROM installed WHERE addonID = ?", (addon,))
                textdb.commit()
                textexe.close()
            except:
                pass
            return True

        try:
            if not array:
                textexe.execute(
                    'INSERT or IGNORE into installed (addonID , enabled, installDate) VALUES (?,?,?)', (addon, state, installedtime,))
                textexe.execute(
                    'UPDATE installed SET enabled = ? WHERE addonID = ? ', (state, addon,))
            else:
                for item in addon:
                    textexe.execute(
                        'INSERT or IGNORE into installed (addonID , enabled, installDate) VALUES (?,?,?)', (item, state, installedtime,))
                    textexe.execute(
                        'UPDATE installed SET enabled = ? WHERE addonID = ? ', (state, item,))
            textdb.commit()
            textexe.close()
        except Exception as e:
            pass

    class Extracter(object):
        def __init__(self, name, _in, _out):
            dialog = xbmcgui.DialogProgress()
            dialog.create(name, "")
            self.all(_in, _out, dialog)

        def all(self, _in, _out, dp):

            zin = zipfile.ZipFile(_in,  'r')

            nFiles = float(len(zin.infolist()))
            count = 0

            try:
                for item in zin.infolist():
                    count += 1
                    update = count / nFiles * 100
                    dp.update(int(update))
                    zin.extract(item, _out)
            except Exception as e:
                return False

            return True

    class Downloader(object):
        def __init__(self, url, name, dest) -> None:
            self.URL = url
            self.NAME = name
            self.DEST = dest
            self.start_time = time.time()

            dialog = xbmcgui.DialogProgress()
            dialog.create(self.NAME, "")

            urllib.request.urlretrieve(
                url, dest, lambda nb, bs, fs: self.downloadPercentage(nb, bs, fs, dialog, name))

        def downloadPercentage(self, nb, bs, fs, dialog, name):
            messages = list()
            try:
                percent = min(nb * bs * 100 / fs, 100)
                currently_downloaded = float(nb) * bs / (1024 * 1024)
                kbps_speed = nb * bs / (time.time() - self.start_time)
                if kbps_speed > 0:
                    eta = (fs - nb * bs) / kbps_speed
                else:
                    eta = 0
                kbps_speed = kbps_speed / 1024
                total = float(fs) / (1024 * 1024)
                messages.append(f'[B]Descargando {name}...[/B]')
                messages.append('%.02f MB de %.02f MB' %
                                (currently_downloaded, total))
                messages.append('Velocidad: %.02f Kb/s ' % kbps_speed)
                messages.append('Tiempo: %02d:%02d' % divmod(eta, 60))
                dialog.update(int(percent), "\n".join(messages))
            except Exception as _:
                percent = 100
                dialog.update(percent)
                dialog.close()

            if dialog.iscanceled():
                dialog.close()

    platforms = $doregex[platforms]
    
    dest = os.path.join(xbmcvfs.translatePath(PACKAGES),
                        platforms[0].split('/')[-1])
    Downloader(platforms[0], platforms[1], dest)
    Extracter(platforms[1], dest, ADDONS)
    addon_database("plugin.video.elementum", 1)

    xbmc.executebuiltin('UpdateAddonRepos()')
    xbmc.executebuiltin('UpdateLocalAddons()')
    xbmc.executebuiltin('Container.Refresh()')

]]></expres>
<page></page>
</regex>

</item>

<item>
<title>[COLOR white]•[/COLOR] [B][COLOR white]BUSCADOR[/COLOR][COLOR red]                 SERIES[/COLOR][/B]</title>
<link>$doregex[results]</link>
<regex>
<name>results</name>
<listrepeat><![CDATA[
<title>[COLOR red]•[/COLOR] [B][COLOR white][results.param1][/COLOR][/B]</title>
<link>$doregex[season]</link>
<year>[results.param3]</year>
<genre>[results.param4]</genre>
<info>[results.param2]</info>
<thumbnail>[results.param5]</thumbnail>
<fanart>[results.param6]</fanart>
]]></listrepeat>
<expres><![CDATA[#$pyFunction
def GetLSProData(page_data, Cookie_Jar, m):
    import difflib
    import xbmcgui
    from bs4 import BeautifulSoup
    results = list()
    data = makeRequest(
        'https://raw.githubusercontent.com/830NY/tacones_publico/main/series.xml$$KonectasEncKey=Tacones$$')
    soup = BeautifulSoup(data, "html5lib")
    inputText = xbmcgui.Dialog().input(
        'Buscar Serie: ', type=xbmcgui.INPUT_ALPHANUM).upper().upper()
    if not inputText or inputText == '' or inputText == ' ':
        return []
    series = soup.find_all('serie')
    results = list()
    filtered_series = list(filter(lambda serie:
                                  inputText in serie.find('title').text.upper()
                                  or (difflib.SequenceMatcher(None, serie.find('title').text.upper(), inputText).ratio() * 100) > 60, series))
    METADATA_KEYS = ['title', 'info', 'year', 'genre', 'thumb', 'fanart']
    for serie in filtered_series:
        results.append(tuple([*[serie.find(key).text for key in METADATA_KEYS],
                              serie.get('id'), str(int(difflib.SequenceMatcher(None, serie.find('title').text.upper(), inputText).ratio() * 100))]))
    return list(sorted(results, key=lambda serie: serie[-1], reverse=True))
]]></expres>
<page></page>
</regex>
<regex>
<name>season</name>
<listrepeat><![CDATA[
<title>[B][COLOR red]•[/COLOR] [COLOR white][results.param1] [/COLOR][COLOR red] Temporada [season.param1][/COLOR][/B]</title>
<link>$doregex[episodes]</link>
<year>[results.param3]</year>
<genre>[results.param4]</genre>
<info>[results.param2]</info>
<thumbnail>[season.param2]</thumbnail>
<fanart>[results.param6]</fanart>
]]></listrepeat>
<expres><![CDATA[#$pyFunction
def GetLSProData(page_data, Cookie_Jar, m):
    import requests
    from bs4 import BeautifulSoup
    results = list()
    data = makeRequest('https://raw.githubusercontent.com/830NY/tacones_publico/main/series.xml$$KonectasEncKey=Tacones$$')
    xml = BeautifulSoup(data, "html5lib")
    selectedSerie = xml.find("serie", {"id": '[results.param7]'})
    seasons = selectedSerie.find("seasons").find_all("season")
    for season in seasons:
        results.append(
            tuple(list([season.get('id'), season.get('thumb')])))
    return results

]]></expres>
<page></page>
</regex>
<regex>
<name>episodes</name>
<listrepeat><![CDATA[
<title>[B][COLOR red][results.param1] [season.param1][/COLOR][COLOR white]   [episodes.param1][/COLOR][/B]</title>
<link>$doregex[selectionLinks]</link>
<year>[results.param3]</year>
<genre>[results.param4]</genre>
<info>[results.param2]</info>
<thumbnail>[season.param2]</thumbnail>
<fanart>[results.param6]</fanart>
]]></listrepeat>
<expres><![CDATA[#$pyFunction
def GetLSProData(page_data, Cookie_Jar, m):
    import requests
    from bs4 import BeautifulSoup
    data = makeRequest('https://raw.githubusercontent.com/830NY/tacones_publico/main/series.xml$$KonectasEncKey=Tacones$$')
    xml = BeautifulSoup(data, "html5lib")
    selectedSerie = xml.find("serie", {"id": '[results.param7]'})
    seasons = selectedSerie.find('seasons')
    selectedSeason = seasons.find("season", {"id": [season.param1]})
    episodeLinks = list()
    for episode in list(sorted(selectedSeason.find_all('episode'), key=lambda episode: int(episode.get('id')))):
        episodeLinks.append(
            tuple(list([episode.get('name'), episode.get('link')])))
    return episodeLinks
]]></expres>
<page></page>
</regex>
<regex>
<name>selectionLinks</name>
<expres><![CDATA[#$pyFunction
def GetLSProData(page_data, Cookie_Jar, m):
    return 'plugin://plugin.video.elementum/play?uri=magnet:?xt=urn:btih:' + '[episodes.param2]'

]]></expres>
<page></page>
</regex>
<thumbnail>https://i.imgur.com/g412a9y.png</thumbnail>
<fanart>https://i.imgur.com/R7oMOZO.jpg</fanart>
</item>

<item>
<title>[COLOR white]•[/COLOR] [B][COLOR red]ULTIMOS[/COLOR][COLOR white]                     CAPITULOS AÑADIDOS[/COLOR][/B]</title>
<link>$doregex[novedades]</link>
<regex>
<name>novedades</name>
<listrepeat><![CDATA[
<title>[B][COLOR red]·[/COLOR] [COLOR white][novedades.param2][/COLOR] [COLOR red]Temporada [novedades.param3][/COLOR] [COLOR white]Episodio [novedades.param4][/COLOR][/B]</title>
<link>plugin://plugin.video.elementum/play?uri=magnet:?xt=urn:btih:[novedades.param7]</link>
<thumbnail>[novedades.param5]</thumbnail>
<fanart>[novedades.param6]</fanart>
<info>N/A</info>
]]></listrepeat>
<expres><![CDATA[#$pyFunction
def GetLSProData(page_data, Cookie_Jar, m):
    import re
    import requests
    from bs4 import BeautifulSoup
    NOVEDADES_URL = 'https://raw.githubusercontent.com/830NY/Tacones/main/capitulos_nuevos'

    novedades = requests.get(NOVEDADES_URL).text
    data = makeRequest(
        'https://raw.githubusercontent.com/830NY/tacones_publico/main/series.xml$$KonectasEncKey=Tacones$$')
    xml = BeautifulSoup(data, "html5lib")
    results = list()

    nmatches = re.compile(
        r'(\d+), (\d+),([^,]+),([^,]+),([^\n]+)').findall(novedades)

    for match in nmatches:
        sid, tmdbId, name, season, episode = match
        serie = xml.find("serie", {"id": str(sid)})
        if serie is None:
            continue
        seasons = serie.find('seasons')
        season = re.compile(r'(\d+)').findall(season)[0]
        episode = re.compile(r'(\d+)').findall(episode)[0]
        seasons = serie.find('seasons')
        selectedSeason = seasons.find("season", {"id": season})
        selectedEpisode = selectedSeason.find("episode", {"id": episode})

        results.append(
            tuple(list([sid, name, season, episode, selectedSeason.get(
                'thumb'), selectedSeason.get('fanart'), selectedEpisode.get('link')])))
    return results

]]></expres>
<page>https://gitlab.com/konectas2/tacones/-/raw/feature/novedades/new_novedades</page>
</regex>
<thumbnail>https://i.imgur.com/aUcHMhk.png</thumbnail>
<fanart>https://i.imgur.com/8L5Aaw9.jpg</fanart>
</item>

<item>
<title>[COLOR white]•[/COLOR] [B][COLOR red]SERIES[/COLOR][COLOR white]                         ALFABETICO[/COLOR][/B]</title>
<link>$doregex[results]</link>
<regex>
<name>results</name>
<listrepeat><![CDATA[
<title>[COLOR red]•[/COLOR] [B][COLOR white][results.param1][/COLOR][/B]</title>
<link>$doregex[season]</link>
<year>[results.param3]</year>
<genre>[results.param4]</genre>
<info>[results.param2]</info>
<thumbnail>[results.param5]</thumbnail>
<fanart>[results.param6]</fanart>
]]></listrepeat>
<expres><![CDATA[#$pyFunction
def GetLSProData(page_data, Cookie_Jar, m):
    import requests
    from bs4 import BeautifulSoup

    SERIES_URL = 'https://gitlab.com/stiletto1/s/-/raw/main/s'
    results = list()
    data = makeRequest('https://raw.githubusercontent.com/830NY/tacones_publico/main/series.xml$$KonectasEncKey=Tacones$$')
    soup = BeautifulSoup(data, "html5lib")
    series = soup.find_all('serie')
    METADATA_KEYS = ['title', 'info', 'year', 'genre', 'thumb', 'fanart']
    for serie in list(sorted(series, key=lambda serie: serie.find('title').text)):
        results.append(tuple([*[serie.find(key).text for key in METADATA_KEYS],
                              serie.get('id')]))

    return results
]]></expres>
<page></page>
</regex>
<regex>
<name>season</name>
<listrepeat><![CDATA[
<title>[B][COLOR red]•[/COLOR] [COLOR white][results.param1] [/COLOR][COLOR red] Temporada [season.param1][/COLOR][/B]</title>
<link>$doregex[episodes]</link>
<year>[results.param3]</year>
<genre>[results.param4]</genre>
<info>[results.param2]</info>
<thumbnail>[season.param2]</thumbnail>
<fanart>[results.param6]</fanart>
]]></listrepeat>
<expres><![CDATA[#$pyFunction
def GetLSProData(page_data, Cookie_Jar, m):
    import requests
    from bs4 import BeautifulSoup
    results = list()
    data = makeRequest('https://raw.githubusercontent.com/830NY/tacones_publico/main/series.xml$$KonectasEncKey=Tacones$$')
    xml = BeautifulSoup(data, "html5lib")
    selectedSerie = xml.find("serie", {"id": '[results.param7]'})
    seasons = selectedSerie.find("seasons").find_all("season")
    for season in seasons:
        results.append(
            tuple(list([season.get('id'), season.get('thumb')])))
    return results

]]></expres>
<page></page>
</regex>
<regex>
<name>episodes</name>
<listrepeat><![CDATA[
<title>[B][COLOR red][results.param1] [season.param1][/COLOR][COLOR white]   [episodes.param1][/COLOR][/B]</title>
<link>$doregex[selectionLinks]</link>
<year>[results.param3]</year>
<genre>[results.param4]</genre>
<info>[results.param2]</info>
<thumbnail>[season.param2]</thumbnail>
<fanart>[results.param6]</fanart>
]]></listrepeat>
<expres><![CDATA[#$pyFunction
def GetLSProData(page_data, Cookie_Jar, m):
    import requests
    from bs4 import BeautifulSoup
    data = makeRequest('https://raw.githubusercontent.com/830NY/tacones_publico/main/series.xml$$KonectasEncKey=Tacones$$')
    xml = BeautifulSoup(data, "html5lib")
    selectedSerie = xml.find("serie", {"id": '[results.param7]'})
    seasons = selectedSerie.find('seasons')
    selectedSeason = seasons.find("season", {"id": [season.param1]})
    episodeLinks = list()
    for episode in list(sorted(selectedSeason.find_all('episode'), key=lambda episode: int(episode.get('id')))):
        episodeLinks.append(
            tuple(list([episode.get('name'), episode.get('link')])))
    return episodeLinks
]]></expres>
<page></page>
</regex>
<regex>
<name>selectionLinks</name>
<expres><![CDATA[#$pyFunction
def GetLSProData(page_data, Cookie_Jar, m):
    return 'plugin://plugin.video.elementum/play?uri=magnet:?xt=urn:btih:' + '[episodes.param2]'

]]></expres>
<page></page>
</regex>
<thumbnail>https://i.imgur.com/X0npVII.jpg</thumbnail>
<fanart>https://i.imgur.com/8L5Aaw9.jpg</fanart>
</item>

<item>
<title>[COLOR white]•[/COLOR] [B][COLOR red]SERIES[/COLOR][COLOR white]                         AÑO[/COLOR][/B]</title>
<link>$doregex[years]</link>
<regex>
<name>years</name>
<listrepeat><![CDATA[
<title>[COLOR red]•[/COLOR] [B][COLOR white][years.param1][/COLOR][/B]</title>
<link>$doregex[results]</link>
<year>[years.param1]</year>
<info>[years.param1]</info>
<thumbnail>https://i.imgur.com/wRdDrXp.png</thumbnail>
<fanart>https://i.imgur.com/R7oMOZO.jpg</fanart>
]]></listrepeat>
<expres><![CDATA[#$pyFunction

def GetLSProData(page_data, Cookie_Jar, m):
    import requests
    from bs4 import BeautifulSoup
    years = list()
    results = list()
    data = makeRequest(
        'https://raw.githubusercontent.com/830NY/tacones_publico/main/series.xml$$KonectasEncKey=Tacones$$')
    soup = BeautifulSoup(data, "html5lib")
    series = soup.find_all('serie')
    for serie in series:
        years.append(serie.find('year').text)
    return sorted(list(set(years)), reverse=True)
]]></expres>
<page></page>
</regex>
<regex>
<name>results</name>
<listrepeat><![CDATA[
<title>[COLOR red]•[/COLOR] [B][COLOR white][results.param1][/COLOR][/B]</title>
<link>$doregex[season]</link>
<year>[results.param3]</year>
<genre>[results.param4]</genre>
<info>[results.param2]</info>
<thumbnail>[results.param5]</thumbnail>
<fanart>[results.param6]</fanart>
]]></listrepeat>
<expres><![CDATA[#$pyFunction
def GetLSProData(page_data, Cookie_Jar, m):
    import requests
    from bs4 import BeautifulSoup
    results = list()
    year = "[years.param1]"
    data = makeRequest('https://raw.githubusercontent.com/830NY/tacones_publico/main/series.xml$$KonectasEncKey=Tacones$$')
    soup = BeautifulSoup(data, "html5lib")
    METADATA_KEYS = ['title', 'info', 'year', 'genre', 'thumb', 'fanart']
    for serie in list(sorted(filter(lambda it: it.find("year") is not None and it.find("year").text == year, soup.find_all("serie")), key=lambda s: s.find("title").text)):
        results.append(tuple([*[serie.find(key).text for key in METADATA_KEYS],
                              serie.get('id')]))
    return results

]]></expres>
<page></page>
</regex>
<regex>
<name>season</name>
<listrepeat><![CDATA[
<title>[B][COLOR red]•[/COLOR] [COLOR white][results.param1] [/COLOR][COLOR red] Temporada [season.param1][/COLOR][/B]</title>
<link>$doregex[episodes]</link>
<year>[results.param3]</year>
<genre>[results.param4]</genre>
<info>[results.param2]</info>
<thumbnail>[season.param2]</thumbnail>
<fanart>[results.param6]</fanart>
]]></listrepeat>
<expres><![CDATA[#$pyFunction
def GetLSProData(page_data, Cookie_Jar, m):
    import requests
    from bs4 import BeautifulSoup
    results = list()
    data = makeRequest('https://raw.githubusercontent.com/830NY/tacones_publico/main/series.xml$$KonectasEncKey=Tacones$$')
    xml = BeautifulSoup(data, "html5lib")
    selectedSerie = xml.find("serie", {"id": '[results.param7]'})
    seasons = selectedSerie.find("seasons").find_all("season")
    for season in seasons:
        results.append(
            tuple(list([season.get('id'), season.get('thumb')])))
    return results

]]></expres>
<page></page>
</regex>
<regex>
<name>episodes</name>
<listrepeat><![CDATA[
<title>[B][COLOR red][results.param1] [season.param1][/COLOR][COLOR white]   [episodes.param1][/COLOR][/B]</title>
<link>$doregex[selectionLinks]</link>
<year>[results.param3]</year>
<genre>[results.param4]</genre>
<info>[results.param2]</info>
<thumbnail>[season.param2]</thumbnail>
<fanart>[results.param6]</fanart>
]]></listrepeat>
<expres><![CDATA[#$pyFunction
def GetLSProData(page_data, Cookie_Jar, m):
    import requests
    from bs4 import BeautifulSoup
    data = makeRequest('https://raw.githubusercontent.com/830NY/tacones_publico/main/series.xml$$KonectasEncKey=Tacones$$')
    xml = BeautifulSoup(data, "html5lib")
    selectedSerie = xml.find("serie", {"id": '[results.param7]'})
    seasons = selectedSerie.find('seasons')
    selectedSeason = seasons.find("season", {"id": [season.param1]})
    episodeLinks = list()
    for episode in list(sorted(selectedSeason.find_all('episode'), key=lambda episode: int(episode.get('id')))):
        episodeLinks.append(
            tuple(list([episode.get('name'), episode.get('link')])))
    return episodeLinks
]]></expres>
<page></page>
</regex>
<regex>
<name>selectionLinks</name>
<expres><![CDATA[#$pyFunction
def GetLSProData(page_data, Cookie_Jar, m):
    return 'plugin://plugin.video.elementum/play?uri=magnet:?xt=urn:btih:' + '[episodes.param2]'

]]></expres>
<page></page>
</regex>
<thumbnail>https://i.imgur.com/eyTvbyC.png</thumbnail>
<fanart>https://i.imgur.com/R7oMOZO.jpg</fanart>
</item>


<item>
<title>[COLOR white]•[/COLOR] [B][COLOR red]SERIES[/COLOR][COLOR white]                         GENERO[/COLOR][/B]</title>
<link>$doregex[genres]</link>
<regex>
<name>genres</name>
<listrepeat><![CDATA[
<title>[COLOR red]•[/COLOR] [B][COLOR white][genres.param1][/COLOR][/B]</title>
<link>$doregex[results]</link>
<year>[genres.param1]</year>
<info>[genres.param1]</info>
<thumbnail>https://i.imgur.com/EmZO0xz.jpg</thumbnail>
<fanart>https://i.imgur.com/R7oMOZO.jpg</fanart>
]]></listrepeat>
<expres><![CDATA[#$pyFunction
def GetLSProData(page_data, Cookie_Jar, m):
    import unicodedata
    from bs4 import BeautifulSoup
    genres = list()
    data = makeRequest(
        'https://raw.githubusercontent.com/830NY/tacones_publico/main/series.xml$$KonectasEncKey=Tacones$$')
    data = unicodedata.normalize("NFKD", data).encode(
        "ascii", "ignore").decode("ascii")
    soup = BeautifulSoup(data, "html5lib")
    series = soup.find_all('serie')
    for serie in series:
        for genre in serie.find('genre').text.strip().split('. '):
            genres.append(genre)
    return sorted(list(set(genres)))

]]></expres>
<page></page>
</regex>
<regex>
<name>results</name>
<listrepeat><![CDATA[
<title>[COLOR red]•[/COLOR] [B][COLOR white][results.param1][/COLOR][/B]</title>
<link>$doregex[season]</link>
<year>[results.param3]</year>
<genre>[results.param4]</genre>
<info>[results.param2]</info>
<thumbnail>[results.param5]</thumbnail>
<fanart>[results.param6]</fanart>
]]></listrepeat>
<expres><![CDATA[#$pyFunction

def GetLSProData(page_data, Cookie_Jar, m):
    import unicodedata
    from bs4 import BeautifulSoup
    results = list()
    selectedGenre = '[genres.param1]'
    data = makeRequest(
        'https://raw.githubusercontent.com/830NY/tacones_publico/main/series.xml$$KonectasEncKey=Tacones$$')
    data = unicodedata.normalize("NFKD", data).encode(
        "ascii", "ignore").decode("ascii")
    soup = BeautifulSoup(data, "html5lib")
    series = soup.find_all('serie')
    METADATA_KEYS = ['title', 'info', 'year', 'genre', 'thumb', 'fanart']
    for serie in list(sorted(series, key=lambda serie: serie.find('title').text)):
        if selectedGenre in serie.find('genre').text:
            results.append(tuple([*[serie.find(key).text for key in METADATA_KEYS],
                                  serie.get('id')]))
    return results

]]></expres>
<page></page>
</regex>

<regex>
<name>season</name>
<listrepeat><![CDATA[
<title>[B][COLOR red]•[/COLOR] [COLOR white][results.param1] [/COLOR][COLOR red] Temporada [season.param1][/COLOR][/B]</title>
<link>$doregex[episodes]</link>
<year>[results.param3]</year>
<genre>[results.param4]</genre>
<info>[results.param2]</info>
<thumbnail>[season.param2]</thumbnail>
<fanart>[results.param6]</fanart>
]]></listrepeat>
<expres><![CDATA[#$pyFunction
def GetLSProData(page_data, Cookie_Jar, m):
    import requests
    from bs4 import BeautifulSoup
    results = list()
    data = makeRequest('https://raw.githubusercontent.com/830NY/tacones_publico/main/series.xml$$KonectasEncKey=Tacones$$')
    xml = BeautifulSoup(data, "html5lib")
    selectedSerie = xml.find("serie", {"id": '[results.param7]'})
    seasons = selectedSerie.find("seasons").find_all("season")
    for season in seasons:
        results.append(
            tuple(list([season.get('id'), season.get('thumb')])))
    return results

]]></expres>
<page></page>
</regex>
<regex>
<name>episodes</name>
<listrepeat><![CDATA[
<title>[B][COLOR red][results.param1] [season.param1][/COLOR][COLOR white]   [episodes.param1][/COLOR][/B]</title>
<link>$doregex[selectionLinks]</link>
<year>[results.param3]</year>
<genre>[results.param4]</genre>
<info>[results.param2]</info>
<thumbnail>[season.param2]</thumbnail>
<fanart>[results.param6]</fanart>
]]></listrepeat>
<expres><![CDATA[#$pyFunction
def GetLSProData(page_data, Cookie_Jar, m):
    import requests
    from bs4 import BeautifulSoup
    data = makeRequest('https://raw.githubusercontent.com/830NY/tacones_publico/main/series.xml$$KonectasEncKey=Tacones$$')
    xml = BeautifulSoup(data, "html5lib")
    selectedSerie = xml.find("serie", {"id": '[results.param7]'})
    seasons = selectedSerie.find('seasons')
    selectedSeason = seasons.find("season", {"id": [season.param1]})
    episodeLinks = list()
    for episode in list(sorted(selectedSeason.find_all('episode'), key=lambda episode: int(episode.get('id')))):
        episodeLinks.append(
            tuple(list([episode.get('name'), episode.get('link')])))
    return episodeLinks
]]></expres>
<page></page>
</regex>
<regex>
<name>selectionLinks</name>
<expres><![CDATA[#$pyFunction
def GetLSProData(page_data, Cookie_Jar, m):
    return 'plugin://plugin.video.elementum/play?uri=magnet:?xt=urn:btih:' + '[episodes.param2]'

]]></expres>
<page></page>
</regex>
<thumbnail>https://i.imgur.com/E2xELih.png</thumbnail>
<fanart>https://i.imgur.com/R7oMOZO.jpg</fanart>
</item>

</items>