MovistarTV/tv_grab_es_movistartv

Error al generar lista de canales

Opened this issue · 4 comments

Hola buenas

Lo primero dar la enhorabuena por el trabajo.

Quería comentarte que llevo ya algún tiempo con el siguiente error en el grabber. El EPG llega a funcionar, pero la lista m3u actualizada no se genera.

Adjunto log

[27/08/2019 12:32:10] [INFO] ---------------------------------------------------
[27/08/2019 12:32:10] [INFO] MovistarTV EPG Grabber
[27/08/2019 12:32:10] [INFO] Parámetros: ['--tvheadend', '/home/hts/.xmltv/MovistarTV']
[27/08/2019 12:32:10] [INFO] ---------------------------------------------------
[27/08/2019 12:32:11] [INFO] Cookie: JSESSIONID=366C9684E1914674AEFF1480209A6589-node7; Path=/appserver; HttpOnly
[27/08/2019 12:32:11] [INFO] tvPackages: UTX4N|UTX4S|UTX50|UTX65|UTX92
[27/08/2019 12:32:11] [INFO] Demarcation: 38
[27/08/2019 12:32:11] [INFO] Buscando el Proveedor de Servicios de Castilla la Mancha
[27/08/2019 12:32:11] [INFO] Proveedor de Servicios de Castilla la Mancha: 239.0.2.172
[27/08/2019 12:32:11] [INFO] Canales: 405
[27/08/2019 12:32:11] [INFO] Paquetes: 346
[27/08/2019 12:32:11] [INFO] Días de EPG: 8
[27/08/2019 12:32:11] [INFO] Generando la guía XMLTV: descargando info extendida
[27/08/2019 12:32:13] [CRITICAL] 4401
Traceback (most recent call last):
  File "/usr/bin/tv_grab_es_movistartv", line 1215, in <module>
    export_channels(args.channels)
  File "/usr/bin/tv_grab_es_movistartv", line 1163, in export_channels
    xmltv.write_m3u(m3u_file)
  File "/usr/bin/tv_grab_es_movistartv", line 1047, in write_m3u
    m3u = self.__generate_m3u()
  File "/usr/bin/tv_grab_es_movistartv", line 1071, in __generate_m3u
    channel_key = self.__channels[self.__channels[channel_id]['replacement']]['id']
KeyError: u'4401'

Y también este haciendolo directamente con la opción --m3u después de haber hecho un --reset

[27/08/2019 11:48:47] [INFO] ---------------------------------------------------
[27/08/2019 11:48:47] [INFO] MovistarTV EPG Grabber
[27/08/2019 11:48:47] [INFO] Parámetros: ['--m3u', 'hola.m3u']
[27/08/2019 11:48:47] [INFO] ---------------------------------------------------
[27/08/2019 11:48:47] [INFO] Creando caché en /home/hts/.xmltv/cache
[27/08/2019 11:48:47] [INFO] Cookie: no encontrada
[27/08/2019 11:48:47] [INFO] Descargando configuración del cliente
[27/08/2019 11:48:47] [INFO] Set-Cookie: JSESSIONID=366C9684E1914674AEFF1480209A6589-node7; Path=/appserver; HttpOnly
[27/08/2019 11:48:47] [INFO] Descargando pefil del servicio
[27/08/2019 11:48:47] [INFO] Descargando parámetros de configuración
[27/08/2019 11:48:47] [INFO] tvPackages: UTX4N|UTX4S|UTX50|UTX65|UTX92
[27/08/2019 11:48:47] [INFO] Demarcation: 38
[27/08/2019 11:48:47] [INFO] Nuevos End Points: [u'epNoCach4', u'epNoCach5', u'epNoCach6', u'epNoCach7', u'epNoCach1', u'epNoCach2', u'epNoCach3']
[27/08/2019 11:48:47] [INFO] Descargando mapa de géneros
[27/08/2019 11:48:47] [INFO] Buscando el Proveedor de Servicios de Castilla la Mancha
[27/08/2019 11:48:49] [INFO] Proveedor de Servicios de Castilla la Mancha: 239.0.2.172
[27/08/2019 11:48:49] [INFO] Descargando canales, paquetes e índices
[27/08/2019 11:51:03] [INFO] Canales: 405
[27/08/2019 11:51:03] [INFO] Paquetes: 346
[27/08/2019 11:51:03] [INFO] Días de EPG: 8
[27/08/2019 11:51:03] [CRITICAL] 4401
Traceback (most recent call last):
  File "./tv_grab_es_movistartv.py", line 1201, in <module>
    export_channels(args.output)
  File "./tv_grab_es_movistartv.py", line 1163, in export_channels
    xmltv.write_m3u(m3u_file)
  File "./tv_grab_es_movistartv.py", line 1047, in write_m3u
    m3u = self.__generate_m3u()
  File "./tv_grab_es_movistartv.py", line 1071, in __generate_m3u
    channel_key = self.__channels[self.__channels[channel_id]['replacement']]['id']
KeyError: '4401'

No sé qué es lo que puede estar sucediendo. Por si se puede arrojar luz.

Saludos

A mi me la acaba de generar sin problemas.

EDITO: Me acabo de dar cuenta de que esa parte del script la tengo modificada... por eso no me falla.

El problema esta aqui:

channel_key = self.__channels[self.__channels[channel_id]['replacement']]['id']

Los de movistar mandan un replacement channel y ese canal no existe.

El parche es modificar ese trozo añadiendo un if que lo compruebe

diff --git a/tv_grab_es_movistartv.py b/tv_grab_es_movistartv.py
index 560d21a..d93cc1f 100755
--- a/tv_grab_es_movistartv.py
+++ b/tv_grab_es_movistartv.py
@@ -1068,7 +1068,8 @@ class XMLTV:
                 channel_quality = 'HDTV' if 'HD' in channel_name else 'SDTV'
                 channel_logo = '%s%s' % (config['tvChannelLogoPath'], self.__channels[channel_id]['logo_uri'])
                 if 'replacement' in self.__channels[channel_id]:
-                    channel_key = self.__channels[self.__channels[channel_id]['replacement']]['id']
+                    if self.__channels[channel_id]['replacement'] in self.__channels:
+                        channel_key = self.__channels[self.__channels[channel_id]['replacement']]['id']
                 m3u += '#EXTINF:-1 tvh-epg="disable" tvh-chnum="%s" ' % channel_number
                 m3u += 'tvg-id="%s.movistar.tv" tvh-tags="Movistar TV|%s|%s" ' % (
                     channel_key, channel_quality, channel_tag)

Saludos.

Muchas gracias. Ahora ya funciona. Seguiré observando a ver si todo sigue bien y si mapean los canales correctamente.

El problema esta aqui:

El problema está en Movistar... que envía canales sin EPG y sin reemplazo... o, como en este caso, con un ID de reemplazo que no existe, de ahí la excepción.

Obviarlo no es una solución.

Me da que hay algún canal en los paquetes de fútbol (yo no los tengo) que está en pruebas y la han liado.

Estoy en ello.