Página 1 de 1

SoD e libreria...

Publicado: 09 Ene 2017, 11:24
por Pasca
Salve a tutti,
innanzitutto GRAZIE... siete fantastici!!! :D :D :D
Vorrei sottoporvi un quesito, sto tentando di aggiungere una serie tv (Grey's Anatomy) alla libreria di SoD, il canale è Guardaserie, ma mentre sul PC funziona sul RPi2 con openelec SoD mi da errore.
Credo che il problema risieda nel maledetto apostrofo che è nel titolo della serie, infatti con altre serie sempre sullo stesso canale tutto funziona alla grande.
Ho attivato il log del debug ed i messaggi al punto critico sono questi:

Código: Seleccionar todo

10:46:54 781.068420 T:1806693280  NOTICE: ######## ERROR #########
10:46:54 781.068726 T:1806693280  NOTICE:     [launcher.run] streamondemand.platformcode.launcher Traceback (most recent call last):
                                              File "/storage/.kodi/addons/plugin.video.streamondemand/platformcode/launcher.py", line 256, in run
                                                library.add_serie_to_library(item, channel)
                                              File "/storage/.kodi/addons/plugin.video.streamondemand/platformcode/library.py", line 870, in add_serie_to_library
                                                insertados, sobreescritos, fallidos = save_library_tvshow(item, itemlist)
                                              File "/storage/.kodi/addons/plugin.video.streamondemand/platformcode/library.py", line 225, in save_library_tvshow
                                                if not filetools.exists(path):
                                              File "/storage/.kodi/addons/plugin.video.streamondemand/core/filetools.py", line 214, in exists
                                                path = encode(path)
                                              File "/storage/.kodi/addons/plugin.video.streamondemand/core/filetools.py", line 74, in encode
                                                path = path.encode(_ENCODING)
                                            UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 82: ordinal not in range(128)
10:46:58 784.948425 T:1963958272   ERROR: GetDirectory - Error getting plugin://plugin.video.streamondemand/?ey... ...n0%3d
10:46:58 784.951172 T:1963958272   ERROR: CGUIMediaWindow::GetDirectory(plugin://plugin.video.streamondemand/?ey... ...n0%3d) failed 
Mi chiedevo se fosse un problema di configurazione o è un bug.
Grazie

Re: SoD e libreria...

Publicado: 09 Ene 2017, 20:16
por dentaku65
è sicuramente un bug :-)

Re: SoD e libreria...

Publicado: 10 Ene 2017, 19:45
por Pasca
Grazie per la risposta dentaku, ho indagato oltre e sembra che il problema sia nelle funzioni encode e decode del filetools.py, ho modificato (pedestremente e senza cognizione di causa) le due funzioni così:

Código: Seleccionar todo

def encode(path, _samba=False):
    """
    Codifica una ruta segun el sistema operativo que estemos utilizando
    El argumento path tiene que estar codificado en UTF-8
    @type path str
    @param path parametro a codificar
    @type _samba bool
    @para _samba si la ruta es samba o no
    @rtype: str
    @return ruta encodeada
    """
    if path.lower().startswith("smb://") or _samba:
        path = unicode(path, "utf8")
    else:
        _ENCODING = sys.getfilesystemencoding() or locale.getdefaultlocale()[1] or 'utf-8'
        path = unicode(path, "utf8")
        path = path.encode("utf-8")

    return remove_chars(path)

def decode(path):
    """
    Descodifica una ruta segun el sistema operativo que estemos utilizando
    @param path: puede ser una ruta o un list() con varias rutas
    @rtype: str
    @return: ruta codificado en UTF-8
    """
    _ENCODING = sys.getfilesystemencoding() or locale.getdefaultlocale()[1] or 'utf-8'

    if type(path) == list:
        for x in range(len(path)):
            if not type(path[x]) == unicode:
                path[x] = path[x].decode("utf-8")
            path[x] = path[x].encode("utf8")
    else:
        if not type(path) == unicode:
            path = path.decode("utf-8")
        path = path.encode("utf8")
    return path
Su openelec ha funzionato, ma chissà che implicazioni potrebbe avere altrove o su altre piattaforme...
Mi piacerebbe capirci di più... a partire dal Python che non conosco, spero di avere tempo. Per ora spero che qualcuno più competente ci metta mano.
Saluti