Página 1 de 1

como añadir series a la biblioteca?

Publicado: 08 Dic 2014, 00:12
por Zezaru
Hola
Configure mi xbmc para crear una biblioteca y tener las series que sigo a mano y que avise cuando hay capitulos nuevos y poder acceder a ellas rapidamente.

El problema que tengo es que hay paginas en donde no sale la opcion de "añadir esta serie a la biblioteca de xbmc" y nose como hacerlo.

Me gustaria saber como puedo añadir series a la biblioteca desde paginas donde no me sale esa opcion y tambien si se puede hacer para que las series de la biblioteca cojan los enlaces de varias paginas(por ejemplo que muestre los enlaces de series.ly y newpct).

Saludos

Re: como añadir series a la biblioteca?

Publicado: 08 Dic 2014, 13:25
por robalo
Hola Zezaru

Para poder tener la misma serie de dos web diferentes, el título de la serie que será el que dará nombre a la carpeta dónde se guardarán los epesodios, debe de ser diferentes. En el caso de seriesly, los episodios se guardan con el formato 01x01.strm y no hay problemas en compartir la misma carpeta ya que el resto guarda los archivos con el formato 1x01.strm con lo que no machaca, reecribe o ignora la opción de actualizar o añadir episodios.

Para añadir la opción "Añadir esta serie a la biblioteca de XBMC" a otros canales, lo normal es añadir un par de líneas a la función episodios al final de dicha función. También tienes que asegurarte de que el parámetro "show" del "itemlist.append(....)" que existe en la función esté incluido y que se le pasa el título de la serie. Si no es así, no creará la carpeta.

Te paso un ejemplo de como sería en seriesflv.

Ésta es la función como está actualmente sin la opción "Añadir esta serie a la biblioteca de XBMC"

Código: Seleccionar todo

def episodios(item):
    logger.info("pelisalacarta.channels.seriesflv episodios")
    itemlist = []

    # Descarga la pagina
    headers = DEFAULT_HEADERS[:]
    data = scrapertools.cache_page(item.url,headers=headers)
    #logger.info("data="+data)

    # Extrae los episodios
    '''
    <tr>
    <td class="sape"><i class="glyphicon glyphicon-film"></i> <a href="http://www.seriesflv.net/ver/game-of-thrones-1x9.html" class="color4">Game of Thrones (Juego de tronos) 1x09</a></td>
    <td>
    <a href="javascript:void(0);" class="loginSF" title="Marcar Visto"><span class="no visto"></span></a>
    </td>
    <td><div class="star_rating">
    <ul class="star">
    <li class="curr" style="width: 99.6%;"></li>
    </ul>
    </div></td>
    <td>
    <img src="http://www.seriesflv.net/images/lang/es.png" width="20" />
    <img src="http://www.seriesflv.net/images/lang/la.png" width="20" />
    <img src="http://www.seriesflv.net/images/lang/sub.png" width="20" />
    </td>
    <td>40,583</td>
    </tr>
    '''
    patron  = '<tr[^<]+<td class="sape"><i class="glyphicon glyphicon-film"></i[^<]+'
    patron += '<a href="([^"]+)"[^>]+>([^<]+)</a>.*?<img(.*?)</td'
    matches = re.compile(patron,re.DOTALL).findall(data)
    
    for scrapedurl,scrapedtitle,bloqueidiomas in matches:
        title = scrapedtitle+" ("

        patronidiomas="lang/([a-z]+).png"
        matchesidiomas = re.compile(patronidiomas,re.DOTALL).findall(bloqueidiomas)
        for idioma in matchesidiomas:
            title=title+get_nombre_idioma(idioma)+", "

        title=title[:-2]+")"

        thumbnail = ""
        plot = ""
        url = scrapedurl
        itemlist.append( Item(channel=__channel__, action="findvideos" , title=title , url=url, thumbnail=thumbnail, plot=plot, fulltitle=title))

        if (DEBUG): logger.info("title=["+title+"], url=["+url+"], thumbnail=["+thumbnail+"]")

    return itemlist
Y ésta con la opción "Añadir esta serie a la biblioteca de XBMC"

Código: Seleccionar todo

def episodios(item):
    logger.info("pelisalacarta.channels.seriesflv episodios")
    itemlist = []

    # Descarga la pagina
    headers = DEFAULT_HEADERS[:]
    data = scrapertools.cache_page(item.url,headers=headers)
    #logger.info("data="+data)

    # Extrae los episodios
    '''
    <tr>
    <td class="sape"><i class="glyphicon glyphicon-film"></i> <a href="http://www.seriesflv.net/ver/game-of-thrones-1x9.html" class="color4">Game of Thrones (Juego de tronos) 1x09</a></td>
    <td>
    <a href="javascript:void(0);" class="loginSF" title="Marcar Visto"><span class="no visto"></span></a>
    </td>
    <td><div class="star_rating">
    <ul class="star">
    <li class="curr" style="width: 99.6%;"></li>
    </ul>
    </div></td>
    <td>
    <img src="http://www.seriesflv.net/images/lang/es.png" width="20" />
    <img src="http://www.seriesflv.net/images/lang/la.png" width="20" />
    <img src="http://www.seriesflv.net/images/lang/sub.png" width="20" />
    </td>
    <td>40,583</td>
    </tr>
    '''
    patron  = '<tr[^<]+<td class="sape"><i class="glyphicon glyphicon-film"></i[^<]+'
    patron += '<a href="([^"]+)"[^>]+>([^<]+)</a>.*?<img(.*?)</td'
    matches = re.compile(patron,re.DOTALL).findall(data)
    
    for scrapedurl,scrapedtitle,bloqueidiomas in matches:
        title = scrapedtitle+" ("

        patronidiomas="lang/([a-z]+).png"
        matchesidiomas = re.compile(patronidiomas,re.DOTALL).findall(bloqueidiomas)
        for idioma in matchesidiomas:
            title=title+get_nombre_idioma(idioma)+", "

        title=title[:-2]+")"

        thumbnail = ""
        plot = ""
        url = scrapedurl

        ## Sólo nos interesa el título de la serie
        show = re.sub(" \([^\)]+\)$","",item.show)

        ## Se a añadido el parámetro show
        itemlist.append( Item(channel=__channel__, action="findvideos" , title=title , url=url, thumbnail=thumbnail, plot=plot, fulltitle=title, show=show))

        if (DEBUG): logger.info("title=["+title+"], url=["+url+"], thumbnail=["+thumbnail+"]")

    ## Opción "Añadir esta serie a la biblioteca de XBMC"
    if (config.get_platform().startswith("xbmc") or config.get_platform().startswith("boxee")) and len(itemlist)>0:
        itemlist.append( Item(channel=__channel__, title="Añadir esta serie a la biblioteca de XBMC", url=item.url, action="add_serie_to_library", extra="episodios", show=show) )

    return itemlist
En el caso de newpct es más complicado. Hay que crear un nuevo menú y una nueva función para conseguir una url como ésta

Código: Seleccionar todo

http://www.newpct.com/buscar-descargas/|category_=767&q=the+big+bang+theory
Si te sientes capaz nos ponemos al tajo :)

EDITO: Había pegado la función findvideos en vez de la de episodios del archivo seriesflv.py original, lo siento :oops: , ya está corregido

Re: como añadir series a la biblioteca?

Publicado: 09 Dic 2014, 04:23
por Zezaru
Hola Robalo

He añadido las lineas al codigo y ya me aparece y funciona, muchas gracias.

El problema que me a surgido es que ya tenia la serie añadida a la biblioteca y al añadirla otra vez desde otra web distinta me salen los capitulos duplicados.
¿Se podria arreglar para que no salgan los capitulos duplicados y que cuando le de a un capitulo preguntara desde donde quiero cojer los enlaces? o que salgan los enlaces de las dos web en la misma lista.

No tengo conocimientos de programacion como para crear nada.

Saludos y gracias por todo!

Re: como añadir series a la biblioteca?

Publicado: 03 Ene 2015, 16:21
por xbianuser
Hola,

He seguido los pasos que comentas para agregar la opción de añadir a la biblioteca para "pordede", pero en el momento de darle al enlace, devuelve error.

El enlace aparece correctamente al final de la lista de episodios, pero el error ocurre al seleccionar la opción.

Muestro el código añadido en la función "episodios":

Código: Seleccionar todo

...
            epid = scrapertools.find_single_match(scrapedurl,"id/(\d+)")
            url = "http://www.pordede.com/links/viewepisode/id/"+epid
            ## Sólo nos interesa el título de la serie
            show = re.sub(" \([^\)]+\)$","",item.show)
            ## Se a añadido el parametro show
            itemlist.append( Item(channel=__channel__, action="findvideos" , title=title , url=url, thumbnail=thumbnail, plot=plot, fulltitle=title, show=show))

            if (DEBUG): logger.info("title=["+title+"], url=["+url+"], thumbnail=["+thumbnail+"]")

    ## Opcion "Añadir esta serie a la biblioteca de XBMC"
    if (config.get_platform().startswith("xbmc") or config.get_platform().startswith("boxee")) and len(itemlist)>0:
        itemlist.append( Item(channel=__channel__, title="Añadir esta serie a la biblioteca de XBMC", url=item.url, action="add_serie_to_library", extra="episodios", show=show) )

    return itemlist
Y los errores en los logs, por si son de ayuda:

Código: Seleccionar todo

16:20:02 T:2878760000  NOTICE: Thread XBPyThread start, auto delete: false
16:20:02 T:2878760000  NOTICE: -->Python Interpreter Initialized<--
16:20:02 T:2878760000  NOTICE: PLATFORM_NAME=xbmceden
16:20:02 T:2878760000  NOTICE: [config.py] xbmceden config
16:20:02 T:2878760000  NOTICE: [config.py] runtime path = /home/xbian/.xbmc/addons/plugin.video.pelisalacarta
16:20:02 T:2878760000  NOTICE: [config.py] data path = /home/xbian/.xbmc/userdata/addon_data/plugin.video.pelisalacarta/
16:20:02 T:2878760000  NOTICE: [config.py] temp path = /home/xbian/.xbmc/temp/test
16:20:04 T:2878760000   ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
                                             - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
                                            Error Type: <type 'exceptions.IndexError'>
                                            Error Contents: list index out of range
                                            Traceback (most recent call last):
                                              File "/home/xbian/.xbmc/addons/plugin.video.pelisalacarta/default.py", line 27, in <module>
                                                launcher.run()
                                              File "/home/xbian/.xbmc/addons/plugin.video.pelisalacarta/platformcode/xbmc/launcher.py", line 246, in run
                                                nuevos = nuevos + library.savelibrary( titulo=item.title , url=item.url , thumbnail=item.thumbnail , server=item.server , plot=item.plot , canal=item.channel , category="Series" , Serie=item.show.strip() , verbose=False, accion="play_from_library", pedirnombre=False, subtitle=item.subtitle, extra=item.extra )
                                              File "/home/xbian/.xbmc/addons/plugin.video.pelisalacarta/platformcode/xbmc/library.py", line 112, in savelibrary
                                                filename = scrapertools.get_season_and_episode(titulo)+".strm"
                                              File "/home/xbian/.xbmc/addons/plugin.video.pelisalacarta/core/scrapertools.py", line 1296, in get_season_and_episode
                                                filename=matches[0][0]+"x"+matches[0][1]
                                            IndexError: list index out of range
                                            -->End of Python script error report<--
16:20:04 T:3041510016   ERROR: GetDirectory - Error getting plugin://plugin.video.pelisalacarta/?Serie&action=add_serie_to_library&category=pordede&channel=pordede&extradata=episodios&fanart=%2fhome%2fxbian%2f.xbmc%2faddons%2fplugin.video.pelisalacarta%2ffanart.jpg&fulltitle=A%c3%b1adir%20esta%20serie%20a%20la%20biblioteca%20de%20XBMC&plot&show&thumbnail&title=A%c3%b1adir%20esta%20serie%20a%20la%20biblioteca%20de%20XBMC&url=http%3a%2f%2fwww.pordede.com%2fserie%2fhow-to-get-away-with-murder
16:20:04 T:3041510016   ERROR: CGUIMediaWindow::GetDirectory(plugin://plugin.video.pelisalacarta/?Serie&action=add_serie_to_library&category=pordede&channel=pordede&extradata=episodios&fanart=%2fhome%2fxbian%2f.xbmc%2faddons%2fplugin.video.pelisalacarta%2ffanart.jpg&fulltitle=A%c3%b1adir%20esta%20serie%20a%20la%20biblioteca%20de%20XBMC&plot&show&thumbnail&title=A%c3%b1adir%20esta%20serie%20a%20la%20biblioteca%20de%20XBMC&url=http%3a%2f%2fwww.pordede.com%2fserie%2fhow-to-get-away-with-murder) failed
16:20:04 T:2878760000  NOTICE: Thread BackgroundLoader start, auto delete: false
Gracias