Página 1 de 2

biblioteca Pelisalacarta UI

Publicado: 14 Sep 2015, 09:29
por fenice82
Hola todos,

in the version in subject, when a click on "Anadir esta serie a la biblioteca de XBMC" I obtain the following error "se ha producito un error"

I've no log to supply, sorry

Re: biblioteca Pelisalacarta UI

Publicado: 14 Sep 2015, 10:13
por robalo
:lol: Parce una pregunta trampa de un examen.

Si tienes un mensaje de error de kodi, esquina inferior derecha, el error queda reflejado en kodi.log. Si el mensaje lo genera pelisalacarta puedes tener o no tener datos del error en kodi.log si el código implicado es controlado o no es controlado por alguna excepción.

En cualquier caso, lo que sí tienes es el código que genera el error :lol:

Cuál es la puntuación para respuesta a esta pregunta trampa del examen? :lol:

Bromas aparte, pegar el código que genera el error sería de mucha ayuda, tenemos que adivinar a que te refieres.

Si es la opción 'Biblioteca' del menú principal de pelisalacarta-ui, hay hilos que se habla de este problema, entre los que se encuentra uno de zanzibar que enlaza a otros con el mismo problema viewtopic.php?f=22&t=6971
Con eso y con lo que realmente quieres o esperas encontrar cuando se accede a la opción 'Biblioteca' podrás encontrar una respuesta.

Si es la opción "Añadir esta serie a la bibloteca de XBMC" que se incluye en algunos canales en la función 'episodios', existen bastantes hilos sobre el tema pero si no te quieres marear mucho, pega el código a tu solución y entre todos veremos que puede fallar.

Re: biblioteca Pelisalacarta UI

Publicado: 14 Sep 2015, 10:42
por fenice82
robalo escribió::lol: Parce una pregunta trampa de un examen.

Si tienes un mensaje de error de kodi, esquina inferior derecha, el error queda reflejado en kodi.log. Si el mensaje lo genera pelisalacarta puedes tener o no tener datos del error en kodi.log si el código implicado es controlado o no es controlado por alguna excepción.

En cualquier caso, lo que sí tienes es el código que genera el error :lol:

Cuál es la puntuación para respuesta a esta pregunta trampa del examen? :lol:

Bromas aparte, pegar el código que genera el error sería de mucha ayuda, tenemos que adivinar a que te refieres.

Si es la opción 'Biblioteca' del menú principal de pelisalacarta-ui, hay hilos que se habla de este problema, entre los que se encuentra uno de zanzibar que enlaza a otros con el mismo problema viewtopic.php?f=22&t=6971
Con eso y con lo que realmente quieres o esperas encontrar cuando se accede a la opción 'Biblioteca' podrás encontrar una respuesta.

Si es la opción "Añadir esta serie a la bibloteca de XBMC" que se incluye en algunos canales en la función 'episodios', existen bastantes hilos sobre el tema pero si no te quieres marear mucho, pega el código a tu solución y entre todos veremos que puede fallar.
yes, I know... I didn't supplied you too much details...

The problem is about the option "Añadir esta serie a la bibloteca de XBMC". It's a strange error also because there is not error in the classic version :roll:

I tested it with channel animeflv

Re: biblioteca Pelisalacarta UI

Publicado: 14 Sep 2015, 12:09
por robalo
Bien, supongo que habrás observado que la versión 'ui' ya no usa 'platformcode/launcher.py', usa 'navigation.py' pero se mantenie el archivo en la carpeta 'platformcode'.

Te cuento lo que yo haría. Primero intentar localizar un buen punto de entrada para la 'action="add_serie_to_library"' y en segundo lugar intertar recrear o reutilizar el código en el punto de entrada elegido.

Un punto de entrada para la ejecución de 'action="add_serie_to_library"' podría ser en el archivo 'navigation.py' más o menos aquí

Código: Seleccionar todo

[.....]
            elif item.action=="findvideos":
                plugintools.log("navigation.get_next_items findvideos")
[.....]

            ## New code

[.....]
            else:
[.....]
Puedes probar con lo siguiente para ver que en ese punto podemos, en apariencia, controlar 'action="add_serie_to_library"'

Código: Seleccionar todo

[.....]
            elif item.action=="findvideos":
                plugintools.log("navigation.get_next_items findvideos")
[.....]

            # --------------------------------------------------------------------
            elif item.action=="add_serie_to_library":
                plugintools.log("navigation.get_next_items add_serie_to_library")

                return [ Item( title="%s: %s, %s, %s" % (item.channel, item.action, item.extra, item.show) ) ]
            # --------------------------------------------------------------------

            else:
[.....]

Re: biblioteca Pelisalacarta UI

Publicado: 14 Sep 2015, 12:43
por fenice82
I've added the code and I get in order:

Imagen
Imagen
Imagen

no log to help you... :cry:

I tried to copy all the function inside launcher.py and i get just the error message

Re: biblioteca Pelisalacarta UI

Publicado: 14 Sep 2015, 13:34
por robalo
Es normal, hay que ojear detenidamente el código

Re: biblioteca Pelisalacarta UI

Publicado: 14 Sep 2015, 13:37
por fenice82
yes, I saw...

However the message in the previous pictures is referred at your code.

Re: biblioteca Pelisalacarta UI

Publicado: 14 Sep 2015, 15:53
por robalo
:)
Ese código es una propuesta de una posible entrada para la insertar el código necesrio para añadir la serie a la biblioteca de xbmc/kodi.

En ese lugar se debería recrear el código del archivo launcher.py para este objetivo.

Puedo postearlo sin más pero creo que es mejor que hagas un intento por tí mismo que te servirá de ejercicio para un futuro mantenimiento de tu proyecto.
  • Imagen
    Imagen
    Imagen
Nota: La ruta la tengo personalizada en la configuración compartida por todos los equipos de mi red local. No tiene nada que ver con el código que se tiene que implementar.

Re: biblioteca Pelisalacarta UI

Publicado: 16 Sep 2015, 22:45
por fenice82
Python or n++ made me crazy :evil: :evil:

I fixed the libray the other day after 5 minutes but I don't know why, n++ put a space at the begin of a string and kodi gave me an error message.

Today I tried again and everything works good...

At the end was enough to copy the launcher part, added a string about the import of config and put at the end return itemlist.

Or there is a better way to do this?

Re: biblioteca Pelisalacarta UI

Publicado: 17 Sep 2015, 08:33
por robalo
1. Añadir funcionalidad a la opción "Añadir esta serie a la biblioteca XBMC" (action="add_serie_to_library").
  • Añadir en navigation.py:

Código: Seleccionar todo

            # -- -------------------------------------------------------------- --
            # -- Código 'add_serie_to_library' del launcher.py con pequeñas     --
            # -- modificaciones para versión 'ui'                               --
            elif item.action=="add_serie_to_library":
                plugintools.log("navigation.get_next_items add_serie_to_library")

                from platformcode import library
                import xbmcgui

                # Obtiene el listado desde el que se llamó
                action = item.extra

                # Esta marca es porque el item tiene algo más aparte en el atributo "extra"
                if "###" in item.extra:
                    action = item.extra.split("###")[0]
                    item.extra = item.extra.split("###")[1]

                exec "itemlist = channel."+action+"(item)"

                # Progreso
                pDialog = xbmcgui.DialogProgress()
                ret = pDialog.create('pelisalacarta', 'Añadiendo episodios...')
                pDialog.update(0, 'Añadiendo episodio...')
                totalepisodes = len(itemlist)
                plugintools.log("[launcher.py] Total Episodios:"+str(totalepisodes))
                i = 0
                errores = 0
                nuevos = 0

                for item in itemlist:
                    i = i + 1
                    pDialog.update(i*100/totalepisodes, 'Añadiendo episodio...',item.title)
                    plugintools.log("pelisalacarta.platformcode.launcher add_serie_to_library, title="+item.title)
                    if (pDialog.iscanceled()):
                        return

                    try:
                        #(titulo="",url="",thumbnail="",server="",plot="",canal="",category="Cine",Serie="",verbose=True,accion="strm",pedirnombre=True):
                        # Añade todos menos el que dice "Añadir esta serie..." o "Descargar esta serie..."
                        if item.action!="add_serie_to_library" and item.action!="download_all_episodes":
                            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 )
                    except IOError:
                        import sys
                        for line in sys.exc_info():
                            logger.error( "%s" % line )
                        plugintools.log("pelisalacarta.platformcode.launcherError al grabar el archivo "+item.title)
                        errores = errores + 1

                pDialog.close()

                # Actualizacion de la biblioteca
                itemlist=[]
                if errores > 0:
                    itemlist.append(Item(title="ERROR, la serie NO se ha añadido a la biblioteca o lo ha hecho incompleta"))
                    plugintools.log("[launcher.py] No se pudo añadir "+str(errores)+" episodios")
                else:
                    itemlist.append(Item(title="La serie se ha añadido a la biblioteca"))
                    plugintools.log("[launcher.py] Ningún error al añadir "+str(errores)+" episodios")

                ## ERROR AQUÍ
                # FIXME:jesus Comentado porque no funciona bien en todas las versiones de XBMC
                #library.update(totalepisodes,errores,nuevos)
                #xbmctools.renderItems(itemlist, launcher.extract_parameters(), url, category)

                #Lista con series para actualizar
                from core import config
                nombre_fichero_config_canal = os.path.join( config.get_library_path() , "series.xml" )
                if not os.path.exists(nombre_fichero_config_canal):
                    nombre_fichero_config_canal = os.path.join( config.get_data_path() , "series.xml" )

                plugintools.log("nombre_fichero_config_canal="+nombre_fichero_config_canal)
                if not os.path.exists(nombre_fichero_config_canal):
                    f = open( nombre_fichero_config_canal , "w" )
                else:
                    f = open( nombre_fichero_config_canal , "r" )
                    contenido = f.read()
                    f.close()
                    f = open( nombre_fichero_config_canal , "w" )
                    f.write(contenido)
                from platformcode import library
                f.write( library.title_to_folder_name(item.show)+","+item.url+","+item.channel+"\n")
                f.close();

                return itemlist
            # -- -------------------------------------------------------------- --
2. Corregir el path de la carpeta 'channels' para la actualización de los nuevos episodios a la biblioteca de xbmc/kodi.
  • Cambiar en library_service.py:

Código: Seleccionar todo

                    pathchannels = os.path.join(config.get_runtime_path() ,'pelisalacarta', 'channels' ,serie[2].strip() + '.py')
  • Por:

Código: Seleccionar todo

                    pathchannels = os.path.join(config.get_runtime_path(), 'channels' ,serie[2].strip() + '.py')