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

Tengo acceso a los controles de play, pausa, stop e inicio, los de avanzar y retroceder no aparecen, aunque funciona la barra de desplazamiento y los botones de izquierda y derecha. No he tocado nada en kodi.
Igual que yo... en mi caso Rewind y FastForward no aparecen porque la única manera de reproducir el stream (sin intermediarios) es pasar una URL del tipo udp:// y UDP no es RTSP, no hay controles de reproducción. Y menos mal... :D

Ya tengo solución. Llevaba estancado meses, peleándome con el skin hasta que me cansé... y para nada. Aunque hubiese funcionado bien sólo hubiese podido gestionar la reproducción desde el OSD, no directamente con los botones multimedia del mando a distancia.

La solución la tenía delante de la cara y no caí hasta el sábado pasado, mientras preparaba el código para subirlo a GitHub: una ventana de tipo diálogo, modal, sobre el reproductor, para que lo capture todo y así poder gestionar todas las acciones implementando el método doAction():



Y se pueden añadir controles (etiquetas, imágenes, etc) y gestionarlos implementando el método onControl(). O heredar de una ventana existente y expandirla (en mi caso con una barra de progreso tipo Timeshift y el tiempo total y el transcurrido, se actualiza cada segundo):



Pero todo ésto es desde un addon normal y corriente hecho en Python, no desde un cliente PVR escrito en C++. Seguro que tienes mil formas de hacer lo mismo y mejor.

El problema que aún no tengo claro cómo salvar es la reproducción de un canal en vivo y usar la pausa, ver desde el inicio o usar el retroceso. Aunque aún no he empezado con el avance y retroceso a mayor velocidad.
He implementado la reproducción en directo y grabaciones con OpenLiveStream, OpenRecordedStream y sus respectivas funciones de lectura, búsqueda y tiempos, pero creo que estas están obsoletas desde v18 y se debe implementar por inputstream, corrígeme si me equivoco.
Creía que sí, pero ya no lo sé... Desde luego, OpenLiveStream y OpenRecordedStream siguen ahí.

Además la única forma que he visto para reproduccir los últimos siete días es usando esa interfaz, por lo tanto también la he implementado.
Al tener el vídeo y la gestión separadas no veo cómo solventar ese problema puesto que necesito gestión para obtener la url de rtsp. He pensado en obtenerla en el momento de cambio de canal y pasarla al inputstream, pero creo que es mucho ruido sobre todo cuando cambias rápido de canal.
Aquí hablan del tema:
You would need to patch resp. alter the code of kodi and then Patch your entire kodi with it to get these features working with one particular PVR-Client (some developers do these hacks in german kodinerds forum already)

I too think that it could be very cool to have the option to write a VOD/catchup service for the PVR API and get a nice VOD presentation interface for them on the GUI instead of having to a python plugin/script for them. As a workaround PVR client developer could reuse recordings section to integrate 'replay' options [...]

https://forum.kodi.tv/showthread.php?tid=316999
Echa un ojo ;)
 
Última edición:
Por cierto, cuando termine el addon lo subiré y si alguien quiere usarlo pero le da por el :!: compilar TVHeadend, voy a meter un parámetro en el grabber que al activarlo añada a la descripción (si no encuentro un sitio mejor) los ID de canal y de programa y lea de ahí si no los encuentra en originalTitle. Es decir, que el addon será compatible con la versión estándar de TVHeadend.

Código:
[20/09/2018 16:32:00] [CRITICAL] UTXAT
[...]
KeyError: u'UTXAT'
Ese paquete, UTXAT, no existe.

Busca en el log esta línea:
Código:
tvPackages: UTX50|UTX6C|UTXA3
Y pégala aquí.

Mientras, edita el archivo /home/hts/.xmltv/cache/config.json, busca la línea tvPackages, elimina el paquete UTXAT (ojo, no puede haber barras verticales ni al principio ni al final), guarda y ejecuta el grabber otra vez.
 
Tocando el config. json y borrando el UTXAT si que funciona. No tengo logs más antiguos porque antes de postear aquí hice un reset pero no conseguí nada. También genere de nuevo el m3u.
 
Buenas,
Aquí sigo enredando con el script... De momento he conseguido que genere el m3u con una lista personalizada de iconos sacados de por ahi. Los de movistar tienen una resolución un poco triste. Tambien lo he modificado para que en lugar de cargar el canal por rtp lo haga por udpxy.
Ahora me estoy fijando en la categoria de los canales para que el usuario de mi hijo pequeño solo tenga acceso a los canales infantiles y en algun caso la categoria no concuerda, por ejemplo Energy con "toros", o beIn con "cine"...
El script asigna estas categorias de forma automatica al canal segun el criterio de movistar?

Saludos
 
Una pregunta chicos y si quiero recibir los canales que están en pruebas y que no aparecen normalmente en el deco al igual que se puede hacer con el deco virtual como lo hago? Que hay que modificar para poder obtenerlos directamente en la lista de canales?

Muchas gracias.
 
Una pregunta chicos y si quiero recibir los canales que están en pruebas y que no aparecen normalmente en el deco al igual que se puede hacer con el deco virtual como lo hago? Que hay que modificar para poder obtenerlos directamente en la lista de canales?
Edita el archivo /home/hts/.xmltv/cache/config.json, busca la línea tvPackages y cambia el valor por ALL. Borra todos los json excepto config.json y vuelve a lanzar el grabber.

Pero ten en cuenta que esto es un apaño temporal, el grabber está hecho para descargar sólo lo contratado, lo mismo que se ve en el deco...

EDIT: borra también la lista de canales antes de lanzar el grabber...

Buenas,
Aquí sigo enredando con el script... De momento he conseguido que genere el m3u con una lista personalizada de iconos sacados de por ahi. Los de movistar tienen una resolución un poco triste. Tambien lo he modificado para que en lugar de cargar el canal por rtp lo haga por udpxy.
(y)

Ahora me estoy fijando en la categoria de los canales para que el usuario de mi hijo pequeño solo tenga acceso a los canales infantiles y en algun caso la categoria no concuerda, por ejemplo Energy con "toros", o beIn con "cine"...
El script asigna estas categorias de forma automatica al canal segun el criterio de movistar?
Si hablamos de la etiqueta <category> (los géneros) sí y no... Los asigna Movistar, pero el grabber hace un mapeo para adaptarlos a los géneros que usan TVHeadend y Kodi.

Los géneros exactos de Movistar los tienes en la etiqueta <keyword>.
La matriz de mapeo está en el grabber (genre_map)
Y los géneros de TVHeadend y Kodi los tienes aquí, a partir de la línea 1732.

EDIT: releyendo tu post, creo que más bien te refieres a la lista de canales:
HTML:
#EXTINF:-1 [...] tvg-id="884.movistar.tv" tvh-tags="Movistar TV|SDTV|Toros" tvg-logo="http://[...]",Energy
rtp://@239.0.0.59:8208
Sí, ésto lo asigna Movistar y el grabber lo mete tal cual...

Un saludo.
 
Última edición:
Hola de nuevo, soy el "tio pupas" ;)

Ahora me pasa algo raro...
Me descargo la guía completa sin problemas. Me aparecen como 17000 programas. Pasan los días, y a pesar de que tengo marcada la tarea de actualización diaria de la guíaen TVH, no se actualiza, marcando 5000 programas más o menos.
Me conecto por ssh al servidor y ejecuto el script con el usuario de TVH (hts). Parece que hace algo pero no aumentan los programas y siguen en 5000.
Voy al log y veo el siguiente error:
Código:
......
[04/10/2018 16:25:43] [ERROR] Información extendida no encontrada: 47209445
[04/10/2018 16:25:44] [ERROR] Información extendida no encontrada: 47208851
[04/10/2018 16:25:44] [ERROR] No se puede escribir en disco
[04/10/2018 16:25:44] [INFO] Lista de canales exportada: /xxx/xxxx/xxxxxxx
[04/10/2018 16:25:46] [INFO] EPG de 203 canales y 8 días generada en 13 segundos
Miro los permisos de la carpeta donde se almacena la guía y son correctos. Pertenecen a hts:video, y corresponden al grupo y usuario que ejecutan TVH.

La única manera de hacer que funcione es haciendo un --reset y que la genere de nuevo TODA la guía.

Dónde puede estar el fallo???

Gracias por tu ayuda.

EDITO:
He probado a ejecutar TVH como root a ver si era cosa de permisos pero tampoco consigo nada.
 
Última edición:
Una de dos: o el grabber no tiene permisos o no queda espacio en el disco.

Mira a ver si tienes espacio:
Bash:
df -h
Un saludo.
Hay espacio mas que de sobra y los permisos estan bien.
He vuelto a intentarlo hace un rato desde TVH y por arte de magia ha funcionado solo pero el error sigue apareciendo.....
Código:
[06/10/2018 07:16:39] [INFO] Set-Cookie: JSESSIONID=56CC737BE9370E6F22D420E7AA25D27A-node1; Path=/appserver/; HttpOnly
[06/10/2018 07:16:39] [INFO] Set-Cookie: JSESSIONID=0E8DA4F7D4DD3FDBA25B327DEC7E3382-node6; Path=/appserver/; HttpOnly
[06/10/2018 07:16:39] [INFO] Set-Cookie: JSESSIONID=F3F9F6B8B0CAC49162BC39491E64DE5C-node4; Path=/appserver/; HttpOnly
[06/10/2018 07:16:39] [ERROR] No se puede escribir en disco
[06/10/2018 07:16:39] [INFO] Lista de canales exportada: /xxxx/xxxx/xxxxxx
[06/10/2018 07:16:42] [INFO] EPG de 203 canales y 8 días descargada en 16 minutos
Lo dejare hasta mañana a ver si el cron funciona...
 
Sigo enredando y ahora estoy intentando modificar el script para que genere la guia en XML y que, por canal, muestre el mismo icono que en la lista m3u.
Pero no se como hacerlo para que añada la linea
Código:
-<channel id="571435813805b4eb2f7451628f86061e">

<display-name>M.LCampeones 2 HD</display-name>

<icon src="https://xxxxxxxxxx/picons/M.LCampeones2HD.png"/>

</channel>
Esa URL la genera el script pero no consigo que la inserte en el xml por canal.

EDITO:

Esto ya lo tengo... Lo siguiente cambiar el channel id por el nº de canal que fijo es mas complicado.
Al final todo esto es para que se vea bonita la guia en Plex.... Me aburro mucho parece ser jajaja

EDITO:

Pues no ha sido tan complicado conseguir lo de los canales y su numerito.

plex.jpg


Si pudieses adaptar el script para que generase la guia xml con el formato que he tenido que modificar (cambiar channel_id por el nº de canal y añadir el icono del canal) seria la bomba. Todo esto unido a tvhProxy y Plex, te permite realizar grabaciones directamente en las bibliotecas, te completa los metadatos y te despreocupas de tener que andar moviendo archivos y renombrando (sobre todo para las series). Tienes la guia actualizada con los datos de movistar y no dependes del epg de plex que a veces tardan mil en actualizar los canales.

Lo "malo" es que tienes que tener Plex Pass para el DVR

En fin... yo de momento tengo el script adaptado y ahora mismo voy a hacer un backup.

Saludos.
 
Última edición:
Buenos días,
Un error nuevo:

Código:
[06/11/2018 08:52:13] [INFO] ---------------------------------------------------
[06/11/2018 08:52:13] [INFO] MovistarTV EPG Grabber
[06/11/2018 08:52:13] [INFO] Parámetros: ['--tvheadend', '/mnt/almacen/guiamovistar']
[06/11/2018 08:52:13] [INFO] ---------------------------------------------------
[06/11/2018 08:52:14] [INFO] Cookie: JSESSIONID=BA3D8004502864149066670EAD89A2E0-node9; Path=/appserver/; HttpOnly
[06/11/2018 08:52:14] [INFO] tvPackages: UTX6C|UTX82|UTXAT
[06/11/2018 08:52:14] [INFO] Demarcation: 36
[06/11/2018 08:52:14] [INFO] Buscando el Proveedor de Servicios de Pais Vasco
[06/11/2018 08:52:14] [INFO] Proveedor de Servicios de Pais Vasco: 239.0.2.168
[06/11/2018 08:52:14] [INFO] Descargando canales, paquetes e índices
[06/11/2018 08:54:58] [CRITICAL] child index out of range
Traceback (most recent call last):
File "/usr/bin/tv_grab_es_movistartv", line 1204, in
xdata = iptv.get_service_provider_data()
File "/usr/bin/tv_grab_es_movistartv", line 801, in get_service_provider_data
self.__get_epg_data(connection['mcast_grp'], connection['mcast_port'])
File "/usr/bin/tv_grab_es_movistartv", line 793, in __get_epg_data
'channels': self.__get_channels(xml['2_0']),
File "/usr/bin/tv_grab_es_movistartv", line 649, in __get_channels
'address': i[0][0].attrib['Address'],
IndexError: child index out of range
Me sucede desde ayer por la noche. He reiniciado el router y el servidor pero no cambia nada.
Saludos.
 
Hola,

Perdona por no haber respondido antes, ando muy liado estos días...

Excepto este último error, todos los problemas que estás teniendo no son por fallos del script, son problemas de red: conectividad, rutas, etc. Y ahí poco puedo hacer.

Esta vez lo que ha pasado es que han metido un canal que no tiene dirección (Netflix):
Markdown (GitHub flavored):
<SingleService>
    <ServiceLocation />
    <TextualIdentifier ServiceName="4717" logoURI="4717.jpg" />
    <SI ServiceType="178" ServiceInfo="33554432">
        <Name Language="ENG">Netflix</Name>
        <ShortName Language="ENG">Netflix</ShortName>
        <Description Language="ENG">Netflix</Description>
        <Genre href="urn:miviewtv:cs:GenreCS:2007:160">
            <urn:Name>ExternalPartner</urn:Name>
        </Genre>
        <ParentalGuidance>
            <mpeg7:ParentalRating href="urn:dvb:metadata:cs:ParentalGuidanceCS:2007:1">
                <mpeg7:Name>No rating available</mpeg7:Name>
            </mpeg7:ParentalRating>
        </ParentalGuidance>
    </SI>
</SingleService>
Y algo más han tocado porque también está habiendo problemas con los segments.

No sé si podré mirarlo a fondo antes del viernes...

Un saludo.
 
Buenas,

Primero... Ya solo te faltaba dar soporte 24/7... Las cosas cuando se pueda que para eso "te pagan".

Excepto este último error, todos los problemas que estás teniendo no son por fallos del script, son problemas de red: conectividad, rutas, etc. Y ahí poco puedo hacer.
Lo suponía.... Al final me deje de tonterías y configure rip pasivo en el router para que coja las rutas el solo y no me vuelva loco. También tenia un problema con el servicio dhcp que hacía lo que le salía de los mismisimos.

Estaré pendiente de las actualizaciones que hagas en el script.

Gracias!!
 
@yonoesio la modificación para udpxy la has hecho en plan "harcoded" o has añadido un flag de opciones ? quizá podrías hacer un pull request al proyecto en Github ? a mi me interesa ;) si no, cuando tenga un rato miraré de hacerlo :unsure:

A mi también me pasa lo del índice fuera de rango, pero entiendo que si es por lo del canal nuevo, nos pasa a todos los que estemos usando el grabber.

Aprovecho para felicitarte @_WiLloW_ una currada de cine ! En mi casa que todo va por Wifi con el deco original se corta todo el rato, tengo FireSticks por toda la casa con Kodi tirando de TVHeadend (a saber pq Movistar no publica todos los canales en la App oficial para Android TV) y va como un tiro ! mis hijos también te lo agradecen (y)
 
Arriba