Closed mkreder closed 7 years ago
No puedo reproducirlo descargando exactamente el mismo subtítulo que entiendo es este: http://www.subdivx.com/X6XNDMwODM5X-mr-robot-s01e01.html.
Seria genial si podes postear en algun sitio o anexar a este issue el archivo de log completo de Kodi: kodi.log
segun se describe en http://forum.kodi.tv/showthread.php?tid=143488 y http://kodi.wiki/index.php?title=Log_file
¡Gracias!
Trate de reproducir el problema, pero me encontre con otro:
02:02:08 T:1420145552 NOTICE: -->Python Interpreter Initialized<--
02:02:10 T:1420145552 FATAL: SUBDIVX - Download: Expected content not found in selected subtitle intermediate detail page
02:02:12 T:1410487184 NOTICE: Thread LanguageInvoker start, auto delete: false
02:02:12 T:1410487184 NOTICE: -->Python Interpreter Initialized<--
02:02:15 T:1410487184 FATAL: SUBDIVX - Download: Expected content not found in selected subtitle intermediate detail page
02:02:20 T:1410487184 NOTICE: Thread LanguageInvoker start, auto delete: false
02:02:20 T:1410487184 NOTICE: -->Python Interpreter Initialized<--
02:02:22 T:1410487184 FATAL: SUBDIVX - Download: Expected content not found in selected subtitle intermediate detail page
02:02:28 T:1410487184 NOTICE: Thread LanguageInvoker start, auto delete: false
02:02:28 T:1410487184 NOTICE: -->Python Interpreter Initialized<--
02:02:30 T:1410487184 FATAL: SUBDIVX - Download: Expected content not found in selected subtitle intermediate detail page
02:02:36 T:1410487184 NOTICE: Thread BackgroundLoader start, auto delete: false
Esto es KODI para ARM, esta corriendo en una hummingboard (similar a raspberry pi)
kodi.log:
@mkreder Muchas gracias por tomarte el tiempo de intentar reproducir y continuar investigando.
1) Me llama la atención que en el kodi.log no aparezca una linea del tipo
19:59:27 T:139652711892736 INFO: SUBDIVX - Version: 0.x.y -- Action: search
mediante la cual podríamos identificar qué versión del addon estás usando. Esa línea debería aparecer siempre sin importar si está activa la opción de debugging (ver ítem 2 abajo). ¿Vos has recortado manualmente el kodi.log
de alguna forma?
2) No se si en tu caso que estás usando una plataforma en la cual el storage y la tecnologií (flash?) lo permiten pero la versión de kodi.log
que es realmente útil es la que se genera cuando la opción de Kodi:
Settings → System → Debugging → Enable debug logging
(Ajustes → Sistema → Depuración → 'Habilitar trazas de depuración' si es que usás Kodi en español)
está activa.
El problema es que en este caso el archivo que genera Kodi es mucho mas grande.
3) Si estás usando la versión 0.0.8 o la 0.1.0 del addon entonces el segundo problema que has encontrado no te va a permitir descargar ningun subtítulo y es el issue #13 que ya solucionamos en la versión 0.2.0. Lo que pasó es que en subdivx.com modificaron el proceso de descarga. Lamentablemente lo hicieron casi en simultaneo con la publicación de la versión 0.1.0
Nosotros ya hemos enviado la versión 0.2.0 a los encargados del repositorio oficial de addons Kodi, pero sucede que esa gente parece estar sobre-cargada de trabajo porque en adición a sus funciones de desarrollador Kodi tiene que revisar y publicar los envíos de todas las versiones de todos los addons. Asi que los tiempos se estiran.
(Para esto estamos analizando usar la posibilidad que brinda Kodi de crear nuestro propio repositorio para el addon de manera que los usuarios que agreguen ese repo a Kodi podran recibir las nuevas versiones de manera mas ágil).
Si queres solucionar el problema ahora podes descargar el .zip del release 0.2.0 de aca de GitHub, descomprimirlo y sobre-escribir con su contenido los archivos homónimos en el directorio .kodi/addons/service.subtitles.subdivx/
Por el momento parece estar andando bien con el update a 0.2.0. Mantengamos el issue abierto por un par de semanas mas (uso kodi 2 o 3 veces por semana y no siempre tengo que bajar subtitulos) y si no pasa de nuevo lo cerramos. Gracias por tu ayuda.
Estoy teniendo el mismo error en una placa china (MXQ Pro+ S905). La causa del issue #17 es la misma.
Lo vengo viendo hace meses con todos los subtítulos cuyo nombre de archivo dentro del .zip tiene una ñ
. Por ejemplo ayer me pasó con este subtítulo y el nombre del archivo interno es New Girl 6x12 - The Cubicle (Español (España)).srt
.
El log contiene:
11:14:29 T:18446744072329818128 NOTICE: Opening stream: 0 source: 1024
11:14:34 T:18446744072330826920 NOTICE: SUBDIVX - Version: 0.2.4 -- Action: search
11:14:38 T:18446744072308039312 NOTICE: SUBDIVX - Version: 0.2.4 -- Action: download
11:14:39 T:18446744072308039312 WARNING: SUBDIVX - Download: Intermediate detail page for selected subtitle or expected content not found. Handling it as final download page
11:14:43 T:18446744072308039312 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <type 'exceptions.UnicodeEncodeError'>
Error Contents: 'ascii' codec can't encode character u'\xa4' in position 148: ordinal not in range(128)
Traceback (most recent call last):
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.subtitles.subdivx/service.py", line 587, in <module>
main()
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.subtitles.subdivx/service.py", line 569, in main
subs = Download(params["id"], workdir)
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.subtitles.subdivx/service.py", line 431, in Download
saved_fname = _save_subtitles(workdir, content)
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.subtitles.subdivx/service.py", line 389, in _save_subtitles
rval, fname = _handle_compressed_subs(workdir, tmp_fname)
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.subtitles.subdivx/service.py", line 345, in _handle_compressed_subs
if _wait_for_extract(workdir, filecount, base_mtime, MAX_UNZIP_WAIT):
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.subtitles.subdivx/service.py", line 315, in _wait_for_extract
mtime = os.stat(pjoin(workdir, fname)).st_mtime
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa4' in position 148: ordinal not in range(128)
-->End of Python script error report<--
Nota: la misma acción sobre Windows anda bien, el subtítulo baja. La raíz tiene que ver con los caracteres que maneja la versión de Android de la placa, seguramente.
Solución relacionada: http://stackoverflow.com/questions/9942594/unicodeencodeerror-ascii-codec-cant-encode-character-u-xa0-in-position-20
No tendría problema en probar código sobre la placa si me indican qué cambiar.
Probé la versión del anteúltimo commit y el error todavía existe:
15:34:58 T:18446744072321215368 NOTICE: Opening stream: 0 source: 1024
15:35:02 T:18446744072310156488 NOTICE: SUBDIVX - Version: 0.2.5 -- Action: search
15:35:08 T:18446744072310156488 NOTICE: SUBDIVX - Version: 0.2.5 -- Action: download
15:35:08 T:18446744072310156488 WARNING: SUBDIVX - Download: Intermediate detail page for selected subtitle or expected content not found. Handling it as final download page
15:35:13 T:18446744072310156488 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <type 'exceptions.UnicodeEncodeError'>
Error Contents: 'ascii' codec can't encode character u'\xa4' in position 148: ordinal not in range(128)
Traceback (most recent call last):
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.subtitles.subdivx-f156a238ff4988a3a39756c7934903c85c88231c/service.py", line 587, in <module>
main()
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.subtitles.subdivx-f156a238ff4988a3a39756c7934903c85c88231c/service.py", line 569, in main
subs = Download(params["id"], workdir)
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.subtitles.subdivx-f156a238ff4988a3a39756c7934903c85c88231c/service.py", line 431, in Download
saved_fname = _save_subtitles(workdir, content)
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.subtitles.subdivx-f156a238ff4988a3a39756c7934903c85c88231c/service.py", line 389, in _save_subtitles
rval, fname = _handle_compressed_subs(workdir, tmp_fname)
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.subtitles.subdivx-f156a238ff4988a3a39756c7934903c85c88231c/service.py", line 345, in _handle_compressed_subs
if _wait_for_extract(workdir, filecount, base_mtime, MAX_UNZIP_WAIT):
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.subtitles.subdivx-f156a238ff4988a3a39756c7934903c85c88231c/service.py", line 315, in _wait_for_extract
mtime = os.stat(pjoin(workdir, fname)).st_mtime
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa4' in position 148: ordinal not in range(128)
-->End of Python script error report<--
Estuve haciendo un par de tests antes de la línea en la que falla.
fname
es <type 'unicode'>
sys.getfilesystemencoding()
en Windows es mbcs
y en la placa Android es None
New Girl 6x12 - The Cubicle (Espa¤ol (Espa¤a)).srt
En otras palabras, XBMC.Extract()
lo baja con un nombre raro y después falla en el os.stat(pjoin(workdir, fname))
por esos caracteres.
Último comentario.
Encontré que en Windows y en la placa Android la función xbmc.translatePath(fname)
genera los caracteres raros, es decir New Girl 6x12 - The Cubicle (Espa¤ol (Espa¤a)).srt
. Por lo tanto probé agregar esta función para que ande en ambos SO:
def get_mtime(workdir, fname):
try:
mtime = os.stat(pjoin(workdir, fname)).st_mtime
except UnicodeEncodeError:
fname = xbmc.translatePath(fname)
mtime = os.stat(pjoin(workdir, fname)).st_mtime
return mtime
La uso en _wait_for_extract()
y en _handle_compressed_subs()
.
El problema es que ahora en el bloque del except
me tira este error:
01:15:09 T:18446744072313888904 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <type 'exceptions.UnicodeDecodeError'>
Error Contents: 'ascii' codec can't decode byte 0xc2 in position 33: ordinal not in range(128)
Traceback (most recent call last):
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.subtitles.subdivx-editada/service.py", line 598, in <module>
main()
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.subtitles.subdivx-editada/service.py", line 580, in main
subs = Download(params["id"], workdir)
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.subtitles.subdivx-editada/service.py", line 442, in Download
saved_fname = _save_subtitles(workdir, content)
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.subtitles.subdivx-editada/service.py", line 400, in _save_subtitles
rval, fname = _handle_compressed_subs(workdir, tmp_fname)
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.subtitles.subdivx-editada/service.py", line 355, in _handle_compressed_subs
if _wait_for_extract(workdir, filecount, base_mtime, MAX_UNZIP_WAIT):
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.subtitles.subdivx-editada/service.py", line 325, in _wait_for_extract
mtime = get_mtime(workdir, fname)
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.subtitles.subdivx-editada/service.py", line 304, in get_mtime
mtime = os.stat(pjoin(workdir, fname)).st_mtime
File "/home/jenkins/workspace/Android-ARM/tools/depends/xbmc-depends/arm-linux-androideabi-android-17/lib/python2.6/posixpath.py", line 68, in join
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 33: ordinal not in range(128)
-->End of Python script error report<--
Links relacionados:
@ramiro después de muchas horas de testeo pude evitar el error en la placa Android. La idea del código es que cuando falla la lectura del st_mtime
por un tema de codificación en el nombre del archivo, salto la espera para que el proceso pueda continuar. Después de todo de movida ya espera 1 segundo después de extraer un archivo, y este fix sólo se ejecutaría en estos casos raros.
Ya lo re contra probé y anda de diez! 😃
Fixed by e8f0fe04cc656c8f00d125014e5dbffa6f7d083c
sólo para confirmar, probé esta última versión en la placa Android y anda bien 👍
Usando el ultimo service.py de git, obtengo este error con mr robot s01e01