Obtener EPG

Sep 20, 2016 at 8:10 PM
Hola,

Me parece super interesante este proyecto.

Me interesa saber como se obtiene la informacion de EPG.

¿Se descarga desde alguna web de Movistar? ¿Me podeis indicar como lo obteneis?

Un saludo.
Coordinator
Sep 21, 2016 at 10:35 PM
Edited Sep 21, 2016 at 10:43 PM
La información de la EPG no se descarga de ninguna web de Movistar (ojalá fuera tan fácil).

El programa obtiene la información de la misma manera que el decodificador de movistar+: de los paquetes de información que se envían por multicast a todos los decos.

La forma de envío de la información sigue el estándar DVB-IPTV y, en particular, DVBSTP como protocolo de envío de datos.

Conocida la 'dirección mágica' de inicio 239.0.2.129:3937, el programa obtiene la información de ProviderDiscovery, y del stream DVBSTP indicado por el proveedor adecuado a nuestra demarcación, se obtiene la información de ContentGuideDiscovery, junto con la información de BroadcastDiscovery y de PackageDiscovery.

Hasta ahí es relativamente fácil. La información del CGD nos proporciona nuevas direcciones de stream DVBSTP en la que se encuentra contenida la información de la EPG, de dos clases: programación en curso y programación de la semana.
La programación en curso es bastante fácil de obtener, ya que está en un formato legible, y que además sigue el estándar TV-Anytime para datos EPG, aunque con algunas extensiones propietarias de Movistar.

La programación de la semana ya es harina de otro costal, ya que está "comprimida" para hacer que su transmisión sea más rápido y para evitar su "pirateo", dada la proliferación de scripts que se descargaban la guía entera (y de manera incorrecta).

Estoy trabajando en el formato "comprimido", y aún suponiendo que lo consiga "descifrar" no haré pública ni la información ni el código fuente, salvo que esta información ya sea de 'dominio público'

No quiero contribuir a que vuelvan a proliferar scripts que saturen los servidores de movistar+ con la consiguiente degradación de servicio para todos los usuarios y que puede llegar a provocar que Movistar tome medidas drásticas que impidan por completo el acceso al servicio de movistar+, salvo a los decos oficiales.
Esto haría a éste y muchos otros programas inútiles y nos dejaría completamente "colgados de la brocha" y sin alternativas para ver la TV.
Marked as answer by AlphaCentaury on 9/21/2016 at 3:43 PM
Sep 22, 2016 at 1:22 PM
Muchas gracias por la info.

La verdad que nos vendria de perlas para poder integrarlo con el Tvheadened.

Para poder tener la informacion actual, como puedo descargarlo desde "239.0.2.129:3937"? ¿Que comnados puedo utilizar?

Cuando dices lo de saturar los servidores de Movistar+, no lo entiendo, si es trafico multicast, no debe de saturarse, ¿no?

Muchas gracias por todo.

Saludos.
Coordinator
Sep 22, 2016 at 6:34 PM
El problema no es la información bruta de la EPG, pues como bien dices llega por multicast.
El problema viene cuando se accede tanto a la foto de cada programa como a su información extendida (la información que se recibe vía multicast sólo incluye el nombre, calificación de edad, género y hora de comienzo en sí).

Para acceder a la foto y a la info completa hay que llamar a un servicio web de Movistar. Es ahí donde se puede producir una saturación si no se llama correctamente al servicio web, pues si no se hace bien cada llamada al servicio Movistar trata la petición como si viniera de un decodificador diferente cada vez.

Si se empieza a pedir información de forma incorrecta para cada programa, para Movistar es como si se encendieron cientos de decodificadores a la vez. Movistar tiene cuidadosamente planificados la disponibilidad de su servicio web en función del número de descodificadores que ha instalado.

Es ahí donde se produce la saturación, pues un solo usuario se convierte de golpe, a efectos de Movistar, en cientos de usuarios diferentes. Multiplica sólo 100 usuarios descargando incorrectamente la información de la EPG por unas 500 peticiones y acabas con 50.000 decodificadores "fantasma".

También hay que decir que su servicio web es un poco una chapuza en lo que se refiere a servir peticiones de información que es esencialmente estática.
Sep 22, 2016 at 7:58 PM
Muchas gracias por la informacion.

Un saludo.
Oct 23, 2016 at 11:10 PM
Hola,
yo estoy trabajando en una serie de scripts para extraer esa información, precisamente para usar con tvheadend y/o MythTV.

Por ahora entiendo lo suficiente el DVBBINSTP como para empezar a construir la guía, e intento evitar ese martilleo innecesario del appserver de Movistar. Mi idea es cachear bastante y dosificar las peticiones, ¿Alguna sugerencia sobre a qué ritmo debería hacer las peticiones?

Un saludo.
Coordinator
Oct 24, 2016 at 8:25 AM
Yo también he conseguido "descifrar" el formato de los datos de DVBBINSTP (o eso creo), solo que no he tenido tiempo de incorporarlo al código. Y, contrariamente a mi filosofía general, no voy a hacer público el código por las razones ya expuestas.

En cualquier caso:
  1. El problema principal no es hacer muchas llamadas al appserver. El problema real es hacer las llamadas sin las cookies que se devuelven en la primera petición.
    Entre estas cookies, está la cookie de sesión. Si no se envía, fuerza al appserver a crear una nueva sesión con cada petición. Y es ésto, precisamente, lo que sobrecarga los servidores. Y hay que guardar estas cookies para la siguiente llamada (aunque sea al día siguiente); que sea el servidor el que decida si le valen o no.
  2. Yo haría la caché bajo demanda; es decir, no precargar toda la información. ¿De verdad necesitas la EPG entera? No creo que sea necesario. SI no te queda "más remedio" que hacer una precarga, hazla como mucho de dos días y sólo de los canales "principales"; ¡hay más de 120 canales!. En cuanto al ritmo, yo haría una petición cada dos segundos, como mucho, o esperar, al menos, el doble del tiempo que ha tardado el appserver en responder.
  3. Mucho ojo si haces público el script. Nos arriesgamos a que haya gente que lo use de manera incorrecta (o que coja el trozo que le interesa) y volvamos a la situación que forzó a movistar+ a crear DVBBINSTP (también fue por eficiencia en el envío de la información). Solo que esta vez, nos lo pongan aún más difícil descifrar el nuevo protocolo. Intentando beneficiar a la comunidad puedes acabar fastidiando a todo el mundo y hacer inservibles los pocos programas o addons que han sido capaces de descifrar la EPG.
  4. Si mi tiempo me lo permite, podría estar dispuesto a liberar un 'script' en .NET Core (correría en Linux, Windows y Mac, pero sin proporcionar el código fuente) que descargara la EPG básica (sin los detalles y en formato XML compatible con el que se recibe mediante DVBSTP de la EPG 'p_f') y que descargara bajo demanda la información extendida de un programa concreto, respetando las cookies recibidas del appserver.
Podemos seguir hablando, de todos modos.

Saludos,
Alpha
Oct 25, 2016 at 3:20 PM
Cuando te pongas a ello, si quieres comparar notas sobre los campos del DVBBINSTP, no dudes en darme un toque.

Te respondo a los puntos de tu post:
  1. Cookie: Tras tu explicación sobre el número de descodificadores que Movistar "ve" ya había imaginado que respetar la cookie de sesión era importante, y en vista de lo que dices voy a asegurarme de hacerlo.
  2. No precargar: Precisamente esa es mi idea. De hecho el plan es funcionar como un servidor local intermediario, si un grabber se dedica a machacar un servidor que sea el que levanto yo.
    Mi objetivo es generar XMLTV, como con ese formato por lo que sé no puedo cargar el detalle de un programa a petición, lo que pretendo hacer es cargar (sin prisa y cacheando en disco) la programación en detalle de, por ejemplo, ese par de días que dices, y limitar el resto del EPG a la información básica difundida por multicast, que es más que suficiente para montar la rejilla de programación; además sólo cargaría las imágenes cuando se pidan explícitamente.
    Funcionando así sólo habría que pedir el detalle de cada programa una vez, como mucho, y podría hacerlo de forma serializada y controlada.
  3. Código público o no: Igual que tú, mi filosofía también habría sido la de publicar el código, pero después de leer tu preocupación y la de vmjuidiaz (el autor del add-on para Kodi) le dí un par de vueltas, y la idea que barajo es la de publicar esa parte en concreto compilada a bytecode (el código está en Python) y quizás ofuscada; parto de la base de que quien sea capaz de descompilar y entender el código tendría conocimientos suficientes para desentrañar el DVBBINSTP por su cuenta. De todos modos aún falta para tenerlo listo y ver cómo lo planteo.
  4. Script .NET Core: Personalmente no creo que vaya a sacar provecho de tener el EPG en formato TV Anytime pero sin duda más de uno se beneficiaría de algo así.
Un saludo, y felicidades por la aplicación :)