Página 1 de 2

Fallo en el script con Raspberry Pi y openelec

Publicado: 26 Nov 2012, 14:16
por schatten
Hola.

He instalado la última versión de OpenElec (XBMC 12.0-Beta1 del 25/11) en mi nueva Raspberry Pi. Posteriormente he instalado el add-on de pelisalacarta versión pelisalacarta-xbmc-addon-eden-3.2.33.zip usando las instrucciones del video (añadíendolo a traves de la opción de añadir a través de zip).

El addon funciona aparentemente, pero cuando intento entrar en un canal (por ejemplo seriesyonkis -> Ultimos Capítulos) se produce un fallo en el script. Con todos los canales que he probado se produce el mismo resultado.

He buscado en los foros a ver si encontraba algún caso parecido, pero sin resultado, así que he mirado en el log y me he encontrado con esto:

4:03:16 T:2857366624 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following erro
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <type 'exceptions.ValueError'>
Error Contents: dictionary update sequence element #0 has length 1; 2 is required
Traceback (most recent call last):
File "/storage/.xbmc/addons/plugin.video.pelisalacarta/default.py", line 27, in
launcher.run()
File "/storage/.xbmc/addons/plugin.video.pelisalacarta/platformcode/xbmc/launche
params, channel_name, title, fulltitle, url, thumbnail, plot, action, server,
File "/storage/.xbmc/addons/plugin.video.pelisalacarta/platformcode/xbmc/launche
params = dict(part.split('=') for part in sys.argv[ 2 ][ 1: ].split('&'))
ValueError: dictionary update sequence element #0 has length 1; 2 is required
-->End of Python script error report<--
4:03:16 T:3043111440 ERROR: GetDirectory - Error getting plugin://plugin.video.pelisalacarta/?Serie&action=lastepisodes&cat
4:03:16 T:3043111440 ERROR: CGUIMediaWindow::GetDirectory(plugin://plugin.video.pelisalacarta/?Serie&action=lastepisodes&ca
4:03:16 T:2857366624 NOTICE: Thread Background Loader start, auto delete: false

Adjunto el log por si sirve de ayuda,

Gracias de antemano!!

Re: Fallo en el script con Raspberry Pi y openelec

Publicado: 27 Nov 2012, 02:15
por jesus
Este fallo me empieza a mosquear, porque no se por qué se produce.

Necesito dos cosas.

1) El log que has mandado, pero activando en la configuración de pelisalacarta el "Log completo para depuración". Veo el error, pero me faltan los pasos previos.
2) ¿Puede alguien decirme si le da este problema en algo que no sea una Rasperry?

Gracias :)

Re: Fallo en el script con Raspberry Pi y openelec

Publicado: 27 Nov 2012, 22:23
por schatten
Hola Jesús.

Aquí tienes el log después de cambiar la configuración. Por mi parte sólo lo he probado con Raspberry, así que no te puedo decir mas...

Muchas gracias!

Re: Fallo en el script con Raspberry Pi y openelec

Publicado: 28 Nov 2012, 22:20
por jimepa
Hola a todos,
Tengo el mismo problema, pero no solo con Openelec, con el Raspbmc tambien me sucede lo mismo.
No se si servira de ayuda para que Jesus pueda encontrar la solucion.
Gracias

Re: Fallo en el script con Raspberry Pi y openelec

Publicado: 28 Nov 2012, 22:47
por substanc3
hello,
after looking at the debug log i think to have found the issue...
the problem is the string passed in the sys.argv variable that is malformed
on raspberry is:
sys.argv=['plugin://plugin.video.pelisalacarta/', '0', '?Serie&action=listado&category=cinemastreaming&channel=cinemastreaming&extradata&fulltitle=Anime&plot&show&thumbnail&title=Anime&url=http%3a%2f%2fwww.cinemastreaming.net%2fcategory%2fanime%2f']

this variable is passed to the extract_parameters() function in order to be splitted in the launcher.py file.
params = dict(part.split('=') for part in sys.argv[ 2 ][ 1: ].split('&'))
if i'm not wrong, the dict() method require a pair of key:vaule and the split fuction should divide the string sys.argv[2] first by '&' and after by '=', the first item in the dictionary (item #0) will not have a correct pair values..

Serie& should not be part of the string as reported in the xbmc windows debug output.
sys.argv=['plugin://plugin.video.pelisalacarta/', '0', '?action=listado&category=cinemastreaming&channel=cinemastreaming&fulltitle=Anime&title=Anime&url=http%3a%2f%2fwww.cinemastreaming.net%2fcategory%2fanime%2f']

sorry but i'm not a programmer, so i don't know where the problem is exactly generated but i think that have someting to do with the xbmctools.py
i hope that this help..

Re: Fallo en el script con Raspberry Pi y openelec

Publicado: 29 Nov 2012, 22:41
por WEiS
Buenas.

Yo también estoy afectado por este problema, mi instalación en OpenELEC 3.0 Beta1 iON (x64).
En log lo que se ve es lo que dice substanc3, que aparentemente el argumento 2 que imagino que pasa XBMC está mal formado y por eso falla la función dict de python.
La composición del argumento 2 debería ser del tipo Nombre propiedad y valor (osea una tupla) pero no es así, esto en nightlies anteriores de XBMC no pasaba y ahora si. Imagino que será algún gambazo de programación, lo suyo sería identificar la última build de XBMC que funcionaba y la primera que fallaba y buscar que cambio ha podido provocar eso.

No tengo ni idea de nada, pero espero haber ayudado.

Saludos.

Re: Fallo en el script con Raspberry Pi y openelec

Publicado: 29 Nov 2012, 23:02
por substanc3
Reading more carefully the string passed in the element 2 of the list sys.argv i see that there are a lot of unpaired values, not only the first one... all the words that are not followed by an = symbol but are sorrounded by &, like extradata, plot, show, thumbnail will generate the same error

Re: Fallo en el script con Raspberry Pi y openelec

Publicado: 30 Nov 2012, 11:51
por pirexia
Hola Jesus, parece que he resuelto el problema. Como bien decía substanc3, el problema está cuando se crea el diccionario params en la funcion extract_parameters, entonces lo que he hecho es hacerlo mas artesanal.... advierto que no soy un experto programador pero con esto funciona, pongo como queda el comienzo de la funcion:

Código: Seleccionar todo

# Extract parameters from sys.argv
def extract_parameters():
    logger.info("[launcher.py] extract_parameters")
    #Imprime en el log los parámetros de entrada
    logger.info("[launcher.py] sys.argv=%s" % str(sys.argv))

    from string import maketrans
    table = maketrans("=", ":")
    # Crea el diccionario de parametros
    params = {}    
    params1 = []
    elementos = []
    if len(sys.argv)>=2 and len(sys.argv[2])>0:
        params1 = sys.argv[2][1:].split('&')   
        logger.info("[ANDRES launcher.py] params1=%s" % params1)
        for parametros in params1:
            elementos = parametros.split('=')
            if len(elementos)>1:
                params[elementos[0]] = elementos[1]          
        #params = dict(part.split('=') for part in sys.argv[ 2 ][1: ].split('&'))
    logger.info("[launcher.py] params=%s" % str(params))
Si te fijas sustituyo la linea #params = dict(part.split('=') for part in sys.argv[ 2 ][1: ].split('&')) por un for clasico y un par de split, vamos lo mismo pero sin el dict().
No se quizás esto se deba a la versión de python en la RC5 de raspbmc, según veo tengo intalada la 2.7.3..... Tambien decir que es la primera versión que tiene el core 3.6 de linux (creo...)

Bueno, así funciona, solo te queda darle una vuelta, dejarlo bonito y hacer la version 35

Un saludo.

Re: Fallo en el script con Raspberry Pi y openelec

Publicado: 01 Dic 2012, 00:09
por MarioXD
Decir que en Windows también da el fallo con la ultima nightly de Frodo y pude arreglarlo con la solución que dan por aquí arriba XD gracias :P



PD: acabo de ver que subiste una versión para frodo con un fix y funciona correctamente. Gracias

Re: Fallo en el script con Raspberry Pi y openelec

Publicado: 01 Dic 2012, 13:19
por pirexia
Ya he visto la solución, bastante mas pro que la mia ;)

Gracias por todo tu curro.