Página 1 de 1

SeriesYonkis/PeliculasYonkis -- Mejoras

Publicado: 20 Feb 2011, 00:31
por Truenon
Buenas,
Mi madre viendo una serie me reportó que le daba error al ver un capítulo.
Por si queréis reproducirlo os facilito los datos:
Serie: Elisa di Rivombrosa (capitulo 5)

------------------------------------------------------
Al lío, SeriesYonkis por defecto esta utilizando para decriptar los ID la función "decryptID_series".
Por lo que he visto los id de Yonkis de un unico archivo (o parte) tienen una longitud de 24 caracteres, y son los que se traga bien el "decryptID_series".
Por otra parte los id de Yonkies que apuntan a mas de un archivo (o parte) tienen una longitud de 51 caracteres y al "decryptID_series" da error.

Mirando el sistema de PeliculasYonkis vi que hacia distinción y usaba decryptID o decryptID_series en función del servidor, y me he basado en esto para usar el decryptID_series para los ID unicos (de 24 caracteres) y el decryptID para los ID variables (de 51 caracteres).

No se si es la mejor solución, pero de momento es una solución.
-------------------------------------------------------
Cambios realizados en seriesyonkis.py
1) Si llegan 2 códigos para reproducir del mismo vídeo, ahora saltará la pantalla de elección (Part 1, Part .... ), en vez de dar error.
2) Si el server es un pymeno y el ID es de 51 caracteres se usa el decryptID, en el resto de IDs se sigue usando el decryptID_series.

Nota: Estaría bien hacer una función genérica que funcionara para cualquier Longitud de ID, así si cambian algo, modificando esta se arreglaría todo.
---------------------------------------------
Código canal seriesyonkis.py modificado:

1) Añadida la función "choiceOnePart(matches)" que muestra la lista con las partes disponibles

Código: Seleccionar todo

def choiceOnePart(matches):
    opciones = []
    Nro = 0
    for codigo in matches:
        Nro = Nro + 1
        opciones.append("Parte %s " % Nro)
        
    dia = xbmcgui.Dialog()
    seleccion = dia.select("Selecciona uno ", opciones)
    logger.info("seleccion=%d" % seleccion)
    if seleccion == -1 : return ""
    id = matches[seleccion]
    return id
2) Modificada la función "detail(params,url,category)" para que pregunte que parte reproducir (en caso de haber mas de una)

Código: Seleccionar todo

def detail(params,url,category):
    logger.info("[seriesyonkis.py] detail")

    title = urllib.unquote_plus( params.get("title") )
    thumbnail = urllib.unquote_plus( params.get("thumbnail") )
    plot = unicode( xbmc.getInfoLabel( "ListItem.Plot" ), "utf-8" )
    Serie = urllib.unquote_plus( params.get("Serie") )
    # ------------------------------------------------------------------------------------
    # Busca los enlaces a los videos
    # ------------------------------------------------------------------------------------
    #server = "Megavideo"
    server,url = scrapvideoURL(url)  
   
    if (":" in url):
        match = url.split(":")
        url = choiceOnePart(match)
    
    if url == "":return
    
    logger.info("[seriesyonkis - detail] url="+url)
    
    xbmctools.playvideo(CHANNELNAME,server,url,category,title,thumbnail,plot,Serie=Serie)
    # ------------------------------------------------------------------------------------
3) En la función "choiceOne(matches)" si el servidor es un pymeno, mirar la longitud del Id y en función de esta ejecutar el decryptID que toca

Código: Seleccionar todo

    if servlist[seleccion]  in ["pymeno2","pymeno3","pymeno4","pymeno5","pymeno6"]:
        cortar = IDlist[seleccion].split("&")
        id = cortar[0]
        logger.info("[seriesyonkis.py]  id="+id)
        dec = Yonkis.DecryptYonkis()
        if(len(id)==51):                     
            id = dec.decryptID(dec.charting(dec.unescape(id)))
        else:
            id = dec.decryptID_series(dec.unescape(id))
Saludos

Re: SeriesYonkis/PeliculasYonkis -- Mejoras

Publicado: 20 Feb 2011, 13:46
por Truenon
Buenas de nuevo, buscando la película de Transporter 3 me he fijado que al intentar mostrar los diferentes enlaces daba error de plugin.

Esto era debido a que tiene servidores que no están en la lista de servidores a mostrar y da una excepción. En este caso se hacia uso del server pya (ADNSTREAM) que no está en la lista.

Para solucionar esto, que no de error y si muestre los que tenemos en la lista solo hay que añadir en la función "ChoiceOneVideo(matches,title)" de SeriesYonkis y PeliculasYonkis lo siguiente:

1) Buscar el siguiente "for":

Código: Seleccionar todo

    for server,codigo,audio,data in matches:
        try:
            servidor = SERVER[server]
            Nro = Nro + 1
2) Añadir el "if server in SERVER:" para que solo intente procesar los servidores que tenemos en la lista.

Código: Seleccionar todo

    for server,codigo,audio,data in matches:
        try:
            if server in SERVER:
                servidor = SERVER[server]
                Nro = Nro + 1
De esta manera se soluciona el problema en ambos canales.
Saludos!!

Re: SeriesYonkis/PeliculasYonkis -- Mejoras

Publicado: 24 Feb 2011, 22:51
por jesus
Actualizado en el SVN. Gracias por la aportación :)