Obtener la Lista de Canales y Programación de Movistar TV

Re: Obtener la Lista de Canales y Programación de Movistar T

Ayer terminé el prototipo y ésto ya está en marcha...

Código:
{
   'sid': '0005', 
   'sid_url': '5.imagenio.es', 
   'sid_version': 0, 
   'full_title': 'Intelligence T1 Ep. 8 - Delta Force', 
   'pid': 44403712, 
   'start': 1495239000,    
   'duration': 3000, 
   'serie': 'Intelligence', 
   'episode_title': 'Delta Force', 
   'season': 1, 
   'episode': 8, 
   'genre': 121
}
Lo he estado pensando y voy a pasar del servidor de metadatos de Movistar. Primero porque aún no sé dónde está (los servicios web que hay en este hilo parece que ya no tiran) y tampoco me he puesto a sniffar el deco, segundo porque paso de andar jugando al gato y al ratón con ellos (y si han actualizado el servicio es probable que hayan cifrado las peticiones HTTP con TLS y si es así, GAME OVER) y tercero porque hay servicios libres y/o gratuitos como TheTVDB o TMDB que proporcionan la misma información aunque no de toda la EPG (pero lo que más me interesa es tener los metadatos completos de las series y las películas y de eso van sobrados)

La pega es que algunos programas no van a tener descripción, pero... ¿a quién coño le importa la descripción de "La Noche en 24h"? :LOL:

Así que entre los datos que envían por multicast (leer de ahí no les afecta en absoluto) y lo que se extrae de TheTVDB y TMDB se consigue una guía cojonuda:

Código:
{
    "Series": {
        "id": "268592", 
        "Actors": "|Eliza Taylor|Bob Morley|Marie Avgeropoulos|Lindsey Morgan [...]", 
        "Airs_DayOfWeek": "Wednesday", 
        "Airs_Time": "9:00 PM", 
        "ContentRating": "TV-14", 
        "FirstAired": "2014-03-19", 
        "Genre": "|Drama|Science-Fiction|Suspense|Thriller|", 
        "IMDB_ID": "tt2661044", 
        "Language": "es", 
        "Network": "The CW", 
        "NetworkID": null, 
        "Overview": "Noventa y siete a\u00f1os atr\u00e1s, la Tierra [...]", 
        "Rating": "8.2", 
        "RatingCount": "147", 
        "Runtime": "45", 
        "SeriesID": "183133", 
        "SeriesName": "Los 100", 
        "Status": "Continuing", 
        "added": "2013-04-09 18:54:34", 
        "addedBy": "141901", 
        "banner": "graphical/268592-g11.jpg", 
        "fanart": "fanart/original/268592-8.jpg", 
        "finale_aired": "2017-05-24", 
        "lastupdated": "1495011173", 
        "poster": "posters/268592-25.jpg", 
        "tms_wanted_old": "0", 
        "zap2it_id": "EP01740398"
    }, 
    "Episode": [
        {
            "id": "4543295", 
            "Combined_episodenumber": "1.0", 
            "Combined_season": "1", 
            "DVD_chapter": null, 
            "DVD_discid": null, 
            "DVD_episodenumber": "1.0", 
            "DVD_season": "1", 
            "Director": "Bharat Nalluri", 
            "EpImgFlag": "2", 
            "EpisodeName": "Piloto", 
            "EpisodeNumber": "1", 
            "FirstAired": "2014-03-19", 
            "GuestStars": "|Kelly Hu|Terry Chen|Richard Harmon|Sachin Sahel|", 
            "IMDB_ID": "tt2912494", 
            "Language": "es", 
            "Overview": "Desde una agonizante estaci\u00f3n espacial env\u00edan [...]", 
            "ProductionCode": null, 
            "Rating": "7.4", 
            "RatingCount": "91", 
            "SeasonNumber": "1", 
            "Writer": "Jason Rothenberg", 
            "absolute_number": "1", 
            "filename": "episodes/268592/4543295.jpg", 
            "is_movie": "0", 
            "lastupdated": "1472736377", 
            "seasonid": "517077", 
            "seriesid": "268592", 
            "thumb_added": "2014-01-27 14:23:15", 
            "thumb_height": "225", 
            "thumb_width": "400"
        }]
}
Y antes de que se me olvide... Goommer, si algún día te pasas por Asturias avisa para invitarte a unas sidras, cervezas o lo que quieras! :razz:

En unos días, cuando tenga algo presentable, lo subo a un repositorio público en GitHub.

(PD: Tengo la sensación de estar 'hablando' sólo...)

Un saludo.
 
Re: Obtener la Lista de Canales y Programación de Movistar T

_WiLloW_ dijo:
Hola

_WiLloW_ dijo:
... El servicio para obtener los datos de cliente, plataforma y EPG extendida era:
http://www-60.svc.imagenio.telefonica.net:2001/appserver/mvtv.do

Pero soy incapaz de conectar... ¿este servicio sigue activo?...
Sí.
Quizás no resuelvas el nombre de dominio de manera adecuada. El servicio de TV de movistar tiene su propio servidor de nombres de dominio.
Prueba esto:

Código:
$ dig @172.26.23.3  www-60.svc.imagenio.telefonica.net. | grep -A1 '^;; ANSWER SECTION:'

Recuerda que tienes que tener los encaminamientos adecuados para enviarlo por la interfaz de TV ;-)


_WiLloW_ dijo:
... ¿hay algún patrón en la estructura que permita marcar el inicio y el fin de la EPG de cada canal claramente? ¿Qué relación hay entre los segments y la información de la guía binaria? ...
No sólo hay un patrón, sino todo un protocolo DVBSTP. Recomiendo la lectura de ETSI_TS_102. En particular ETSI_TS_102_034, por ejemplo en la página 59 tienes la descripción de la cabecera del protocolo SD&S multicast delivery protocol y cómo funciona todo.
El binario, en teoría BiM, y digo en teoría porque no hay bandera que lo indique ni tengo documentación para afirmarlo, se ha obtenido analizando los datos enviados por el operador. Creo que hay un ISO por ahí que por el módico precio de más de 200 euros te lo explica, aunque no tengo claro si aplica en este caso.


_WiLloW_ dijo:
...¿Movistar envía la guía de 7 días?...
No, manda información de 0xF días, es decir, 16 días. Normalmente hoy, 3 en futuro y lo demás en pasado.

_WiLloW_ dijo:
...¿Cómo se obtienen los datos de cliente para saber a qué canales está suscrito?...
Código:
$ curl --silent 'http://www-60.svc.imagenio.telefonica.net:2001/appserver/mvtv.do?action=getClientProfile'
$ curl --silent 'http://www-60.svc.imagenio.telefonica.net:2001/appserver/mvtv.do?action=getPlatformProfile'
$ curl --silent 'http://www-60.svc.imagenio.telefonica.net:2001/appserver/mvtv.do?action=getConfigurationParams'


_WiLloW_ dijo:
...voy a pasar del servidor de metadatos de Movistar...
Es una opción. Otra es obtenerlo de la página web de movistar.
Prueba esto:

Código:
curl --silent 'http://www.movistarplus.es/programacion-tv/2017-05-22/?v=json&canal=CPDEP'

y los códigos de canal:

Código:
curl --silent 'http://www.movistarplus.es/programacion-tv' | grep 'movistarplus.es/canal'

_WiLloW_ dijo:
...tampoco me he puesto a sniffar el deco...
Pues es básico, primero para aprender y luego para comparar con lo que haces :p

_WiLloW_ dijo:
...si algún día te pasas por Asturias avisa para invitarte a unas sidras, cervezas...
¡¡¡ Unos culines !!! encantado

Qué mala es la NBA y los guerreros que me mantinen despierto a estas horas :p
 
Re: Obtener la Lista de Canales y Programación de Movistar T

Goommer dijo:
Sí.
Quizás no resuelvas el nombre de dominio de manera adecuada. El servicio de TV de movistar tiene su propio servidor de nombres de dominio.
Prueba esto:

Código:
$ dig @172.26.23.3  www-60.svc.imagenio.telefonica.net. | grep -A1 '^;; ANSWER SECTION:'
Recuerda que tienes que tener los encaminamientos adecuados para enviarlo por la interfaz de TV ;-)
Tengo un problema de rutas, me da timeout al intentar conectar al DNS  tanto con dig como con nslookup.

Tengo un HGU Mitrastar en modo bridge y un RT-AC68U gestionando las tres VLAN y aparentemente todo funciona correctamente: puedo ver todos los canales desde VLC, usar softphones e Internet va bien.

Estoy investigándolo ya.

Goommer dijo:
Es una opción. Otra es obtenerlo de la página web de movistar.
Prueba esto:

Código:
curl --silent 'http://www.movistarplus.es/programacion-tv/2017-05-22/?v=json&canal=CPDEP'
y los códigos de canal:

Código:
curl --silent 'http://www.movistarplus.es/programacion-tv' | grep 'movistarplus.es/canal'
Me acabas de dejar con el trasero torcido :razz:

NO SABÍA que Movistar ofrece la guía en formato JSON directamente de movistarplus.es

Aunque falte la ficha con los datos extendidos, es sólo una petición más...

Goommer dijo:
Pues es básico, primero para aprender y luego para comparar con lo que haces :p
Tienes toda la razón, pero al no conseguir conectar al DNS desde el PC di por hecho que algo habrían cambiado y que poco iba a poder rascar de ahí... craso error.

Goommer dijo:
¡¡¡ Unos culines !!! encantado

Qué mala es la NBA y los guerreros que me mantinen despierto a estas horas :p
Unos culines no, un tonel entero!!! :LOL:

Macho, te mereces un monumento jajaja

INFINITAS GRACIAS!
 
Re: Obtener la Lista de Canales y Programación de Movistar T

Era un problema de rutas, me faltaban las de las subredes 172.26.22.0, 172.26.23.0 y 172.26.80.0
Ahora sí:

Código:
nslookup www-60.svc.imagenio.telefonica.net 172.26.23.3
Server:    172.26.23.3
Address:   172.26.23.3#53

Name:   www-60.svc.imagenio.telefonica.net
Address: 172.26.22.23
Por fin puedo conectar con el servicio web:

Código:
{
   "resultCode":0, 
   "resultText":"Operation successful", 
   "resultData": {
       "serviceType":4,
       "uplinkBW":1024,
   [...]
}
Aunque a veces tarda en responder o directamente no responde, supongo que será problema de mi red...

En fin, infinitas gracias, Goommer

En unos días subiré el grabber a GitHub.
 
Re: Obtener la Lista de Canales y Programación de Movistar T

Goommer dijo:
...
_WiLloW_ dijo:
...¿Movistar envía la guía de 7 días?...
No, manda información de 0xF días, es decir, 16 días. Normalmente hoy, 3 en futuro y lo demás en pasado....
Deberías asegurarte antes de comentar nada :p

Código:
$ grep '<DVBBINSTP' /var/local/mvtv/sds/BCGDiscovery.xml 
        <DVBBINSTP Source="EPG_0_BIN.imagenio.es" Port="3937" Address="239.0.2.130">
        <DVBBINSTP Source="EPG_1_BIN.imagenio.es" Port="3937" Address="239.0.2.131">
        <DVBBINSTP Source="EPG_2_BIN.imagenio.es" Port="3937" Address="239.0.2.132">
        <DVBBINSTP Source="EPG_3_BIN.imagenio.es" Port="3937" Address="239.0.2.133">
        <DVBBINSTP Source="EPG_4_BIN.imagenio.es" Port="3937" Address="239.0.2.134">
        <DVBBINSTP Source="EPG_5_BIN.imagenio.es" Port="3937" Address="239.0.2.135">
        <DVBBINSTP Source="EPG_6_BIN.imagenio.es" Port="3937" Address="239.0.2.136">
        <DVBBINSTP Source="EPG_7_BIN.imagenio.es" Port="3937" Address="239.0.2.137">
Otra cosa distinta es que lo envíe con identificación distinta y en ese caso sí es 0xF.

Un ejemplo con la epg del canal #0:
Código:
$ ll /var/local/mvtv/epg/srv_2803_*| cut -d ' ' -f 6-
may 14 14:04 /var/local/mvtv/epg/srv_2803_0x0af3.bin
may 15 14:04 /var/local/mvtv/epg/srv_2803_0x1af3.bin
may 16 14:04 /var/local/mvtv/epg/srv_2803_0x2af3.bin
may 17 14:06 /var/local/mvtv/epg/srv_2803_0x3af3.bin
may 18 14:05 /var/local/mvtv/epg/srv_2803_0x4af3.bin
may 19 14:04 /var/local/mvtv/epg/srv_2803_0x5af3.bin
may 20 14:06 /var/local/mvtv/epg/srv_2803_0x6af3.bin
may 21 14:05 /var/local/mvtv/epg/srv_2803_0x7af3.bin
may 22 14:04 /var/local/mvtv/epg/srv_2803_0x8af3.bin
may 22 14:04 /var/local/mvtv/epg/srv_2803_0x9af3.bin
may 22 14:04 /var/local/mvtv/epg/srv_2803_0xaaf3.bin
may 22 14:04 /var/local/mvtv/epg/srv_2803_0xbaf3.bin
may 22 14:04 /var/local/mvtv/epg/srv_2803_0xcaf3.bin
may 22 14:04 /var/local/mvtv/epg/srv_2803_0xdaf3.bin
may 22 14:04 /var/local/mvtv/epg/srv_2803_0xeaf3.bin
may 22 14:04 /var/local/mvtv/epg/srv_2803_0xfaf3.bin
 
Re: Obtener la Lista de Canales y Programación de Movistar T

Hola, estoy deseando de probar esto. Tenéis el código publicado en github?

Un saludo y gracias por el trabajo.
 
Re: Obtener la Lista de Canales y Programación de Movistar T

Hola jlazkano,

Aún no, intentaré terminarlo el fin de semana (el trabajo es lo primero)

Goommer... gracias por este último regalo, tenía dudas con los segments pero ya están aclaradas.

Un saludo.
 
Re: Obtener la Lista de Canales y Programación de Movistar T

_WiLloW_ dijo:
Hola jlazkano,

Aún no, intentaré terminarlo el fin de semana (el trabajo es lo primero)

Goommer... gracias por este último regalo, tenía dudas con los segments pero ya están aclaradas.

Un saludo.
Gracias!

No te preocupes, si necesitas ayuda para probar dimelo.

Esta forma de obtener la guia es comun en todos los IPTV? Si ed asi se podria integrar en tvheadend?

Un saludo.
 
Re: Obtener la Lista de Canales y Programación de Movistar T

jlazkano dijo:
Si ed asi se podria integrar en tvheadend?
Sí, el objetivo es volver a tener un grabber de Movistar TV para TVHeadend ;)

Un saludo.
 
Re: Obtener la Lista de Canales y Programación de Movistar T

Buenas Compañeros,

Por lo general, por no estar pendiente siempre de 10 sitios diferentes, suelo poner las cosas directamente en el foro de Movistar, pero en este caso creo que aquí irá mejor.

Aprovechando que he podido hacer algunas pruebas recientemente (el "aburrimiento"), y gracias a algunas actualizaciones por parte de Movistar en sus equipos, yo he optado por un modo... diferente, mas sencillo y directo.

Además os dejo una captura-sorpresa, de lo que posiblemente, venga pronto por parte de Movistar, en este caso para bien, y que hará por fin de mucha menos utilidad estos hilos.

Siento no poder extenderme ahora mismo mucho más en el asunto, en función tenga tiempo/ganas, sea por aquí o por el foro de M, desgranaré más info al respecto

first object (cfg.resources.url) packet: 1/1.
Object (cfg.resources.url) complete, total packets 1
Found address name: www-60.svc.imagenio.telefonica.net

first object (var.utctime) packet: 1/1.
Object (var.utctime) complete, total packets 1

downloading miviewtv client profile..
miviewtv client profile updated
channels client profile updated
downloading miviewtv platform profile..
miviewtv platform profile updated
channels platform profile updated
downloading channels..

downloading service provider discovery file...
parsing service provider discovery file...
saving ServiceProviderDiscovery.xml

loading service provider data..
downloading service discovery file...
parsing service discovery file...
saving ServiceDiscovery_PackageDiscovery.xml
saving ServiceDiscovery_BroadcastDiscovery.xml
saving ServiceDiscovery_BCGDiscovery.xml

channels list updated: 1496849521
...
playlist file updated.
No he tenido tiempo para el EPG aun, pero creo que no debería de ser un problema...

Y sobre la siguiente captura, sólo decir que 192.168.1.1 es el ASKEY,  lo único editado de la captura es la IP de la interfaz TV





 
Nuevo Grabber para TVHeadend

Ya está hecho.

Llevo unos días probándolo y parece que todo va bien.
Si encontráis algún problema podéis comentarlo aquí.

Ayer lo subí a un repositorio público en GitHub.

No me gusta que la guía de Kodi muestre la temporada y el episodio de las series en el título, el PVR de Kodi tiene campos específicos para eso. Incluso en otros PVR como ServerWMC antes era necesario que el grabber eliminara los típicos 'T3 Ep. 15' si querías poner un timer que grabara la serie entera. Este hace lo mismo, pero si alguien prefiere el título con todo se puede cambiar muy fácilmente.

Podéis configurar TVHeadend para que lo ejecute cada 3 días.

No sé si seguiré mucho más tiempo en Movistar, si alguien quiere coger el testigo puede hacer un fork...

El repositorio está en:
https://github.com/MovistarTV/tv_grab_es_movistartv

A continuación el README:

tv_grab_es_movistartv

Grabber XMLTV para el servicio de Televisión IPTV de Movistar España.Genera la guía EPG en formato XMLTV y la lista de canales en formato M3U a partir de los datossuministrados por el operador vía multicast.Se integra con TVHeadend.


Requisitos:
  • Servicio de Movistar TV correctamente configurado (DNS 172.26.23.3 y rutas correspondientes).
  • Conexión por cable.
Características:
  • Un solo archivo
  • No necesita configuración: la descarga del proveedor de servicios
  • Genera la guía y la lista sólo de los canales y paquetes contratados
  • Descarga la guía EPG multicast de varias IP simultáneamente para reducir el tiempo de ejecución
  • Descarta los programas finalizados para no sobrecargar los servidores del operador
  • Los títulos y subtítulos siguen los esquemas Título de la serie y 1x01 Título del episodio respectivamente(en caso de película el año se establece como subtítulo)
  • Guía EPG coloreada (Géneros adaptados a TVHeadend)
  • Mantiene una caché con todos los datos descargados (se autolimpia pasados unos días y se puede resetear)
  • Mantiene un registro configurable de los eventos que suceden durante la ejecución del script
  • En caso de fallo de conexión se usan parámetros por defecto que se pueden personalizar
  • Se utilizan todos los End Point disponibles y en caso de fallos reiteradoslos añade a una lista negra
  • En caso de fallo del conjunto de End Points se descarga una guía básica
  • Licencia GPL v3
Argumentos que acepta el programa:

Código:
usage: tv_grab_es_movistartv [-h] [--description] [--capabilities]
                        [--output FILENAME] [--m3u OUTPUT]
                        [--tvheadend CHANNELS] [--reset]

Grab Movistar TV EPG guide via Multicast from 10/06/2017 to 14/06/2017

optional arguments:
  -h, --help            show this help message and exit
  --description          Show 'Spain (MovistarTV)'
  --capabilities           Show xmltv capabilities
  --output FILENAME         Redirect the xmltv output to the specified file.
                     Otherwise output goes to stdout.
  --m3u OUTPUT           Dump channels in m3u format to the specified file.
  --tvheadend CHANNELS      Grab EPG and dump channels in m3u format to CHANNELS
                     file (use this argument in TVHeadend grabber's
                     configuration page to update both: the EPG guide and
                     the m3u channel list)
  --reset               Delete saved configuration, log file and caches.
Ejemplos:

Vuelca la guía EPG en un archivo XML:

$ tv_grab_es_movistartv --output /home/hts/guia.xml

Genera la lista de canales:

$ tv_grab_es_movistartv --m3u /home/hts/MovistarTV

Actualiza la EPG y la lista de canales en TVHeadend:

$ tv_grab_es_movistartv --tvheadend /home/hts/MovistarTV

Configuración:

Edita el programa con vi, nano, gedit, kedit... y cambia los parámetros de configuración según tus necesidades:
Código:
default_demarcation = demarcations['Asturias']app_dir = '/home/hts/.xmltv'
use_multithread = True
cache_exp = 3  # Días

log_file = 'tv_grab_es_movistartv.log'
log_level = logging.INFO
log_size = 5  # MB

cookie_file = 'tv_grab_es_movistartv.cookie'
end_points_file = 'tv_grab_es_movistartv.endpoints'
Los más importantes son default_demarcation y app_dir:

  • default_demarcation: cambia 'Asturias' por el nombre de tu provincia (ver diccionario demarcations)
  • app_dir: si cambias la ruta por defecto asegúrate de que TVHeadend tiene permisos de escritura en la nueva ruta

Integración en TVheadend

Cambia los permisos y crea un enlace simbólico en /usr/bin:

$ sudo chmod +x /home/hts/tv_grab_es_movistartv.py
$ sudo ln -s /home/hts/tv_grab_es_movistartv.py /usr/bin/tv_grab_es_movistartv


Reinicia y ve a la interfaz web de TVHeadend:


En Configuration -> Channel / EPG -> EPG Grabber Modules activa el grabber Internal XMLTV: Spain (MovistarTV) y pon como argumento --tvheadend /home/hts/.xmltv/MovistarTV

Ve a Configuration -> Channel / EPG -> EPG Grabber:


Sustituye el contenido de Cron multi-line por:

# Se ejecuta cada 3 días a las 22:30h
30 22 */3 * *


Y guarda los cambios.
 
Re: Obtener la Lista de Canales y Programación de Movistar T

Muchisimas gracias!!!

No te imaginas el tiempo que llevaba buscando esto!

La lista de canales me funciona perfecto:

Código:
python tv_grab_es_movistartv.py --m3u MovistarTV.m3u
Pero al descargar la guia me da este error:

Código:
python tv_grab_es_movistartv.py --output guia.xml
Traceback (most recent call last):
  File "tv_grab_es_movistartv.py", line 1201, in <module>
    print 'Excepción:\n\n\t %s\n\nTraceback:\n\n\t%s' % (e.message, traceback.format_exc())
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 7: ordinal not in range(128)

Gracias por todo, intentare aportar al codigo lo que pueda, un saludo!
 
Re: Obtener la Lista de Canales y Programación de Movistar T

Copia y pega el log, está en /home/hts/.xmltv/tv_grab_es_movistartv.log
Se me olvidó comentar que funciona con python versión 2.

Es un problema con la codificación de caracteres.
Prueba desde consola a ejecutarlo con:

$ sudo -u hts tv_grab_es_movistartv --output /home/hts/guia.xml

A ver si exporta la guía a un fichero sin errores...
 
@_WiLloW_

Muchas gracias por el código, muchas ganas de probarlo, gran aportación a la comunidad !!

Un saludo,
Luis
 
Re:

luispa dijo:
@_WiLloW_

Muchas gracias por el código, muchas ganas de probarlo, gran aportación a la comunidad !!

Un saludo,
Luis
Gracias a vosotros.

Aprovecho que te tengo por aquí... ¿te importa si utilizo los picons/iconos de canales de tu proyecto tvhstar? Los de Movistar dan pena y dolor. Los tuyos son los mejores y más grandes que he visto nunca :shock:

Un saludo.
 
Re: Obtener la Lista de Canales y Programación de Movistar T

jlazkano, he arreglado el bug con la codificación de caracteres. El problema es que esa excepción está enmascarando otra. He hecho cambios que evitan una serie de excepciones que no creía que se producirían.

Descarga otra vez el script, dale permisos de escritura e intenta ejecutarlo otra vez, a ser posible desde TVHeadend:



Ahí, en la configuración EPG Grabber pincha en Re-run Internal EPG Grabbers.

Y en consola:

$ tail -f /home/hts/.xmltv/tv_grab_es_movistartv.log

Para que veas lo que está pasando.
 
Eres un grande!

Ya funciona a la perfeccion. Lo he probado sin Tvheadened, a ver si saco tiempo este finde y lo integro.

Gracias!!!
 
Arriba