…esto no es un subtítulo…
2010-02-20
Actualización:
El sistema de distribución de vídeo de la página de RTVE
ha cambiado varias veces desde la escritura de este artículo y
el método aquí descrito está obsoleto. El método que funciona
en el momento de escribir esta actualización (septiembre de 2012) está
en un artículo más reciente. También hay una versión
al día del programita rtve-mediateca-dl que
implementa esté método.
Llega otra entrega de *nix en casos prácticos. Hoy veremos un modo conveniente de automatizar la descarga de vídeos de la Mediateca de Radio Televisión Española. Así podremos reunir cómodamente nuestros vídeos favoritos en nuestro propio espacio de almacenamiento para verlos una vez tras otra y conservarlos durante mucho tiempo sin tener que acceder una vez tras otra a los servidores de RTVE, de modo que incluso reduciremos los gastos de la corporación pública… ¡gracias a nuestro ingenio y nuestra destreza en el uso de nuestra poderosa estación de trabajo!
*nix en casos prácticos no es un curso para absolutos principiantes, sino que está pensado para estimular la curiosidad de quien ya tiene una mínima capacidad de autodefensa en la línea de órdenes y tiene la capacidad de comprender los ejemplos (¡aunque sea consultando un manual!) y, con un poquito de suerte, crear sus propias soluciones a problemas semejantes a los presentados.
La solución de este ejercicio está recogida en un pequeño script: rtve-mediateca-dl (versión 1.0). Sus únicas dependencias: un entorno POSIX y GNU Wget. También hay un tarball con un instalador y documentación (por el momento en inglés).
Ante todo, debo darle las gracias al autor de Pisando charcos, Carlos Jaime Puente Sánchez, quien publicó una solución a un problema muy similar al aquí resuelto y, al ver mi interés, me planteó éste.
Radio Televisión Española tiene en su página web un servicio de visionado de su programación mediante streaming.
Corría el mes de diciembre cuando encontré este curioso artículo en Pisando charcos: Descargar vídeos de TVE (GNU/Linux). El autor de la bitácora publicó un sencillo y eficaz programa informático para descargar los vídeos de la sección con la programación reciente de TVE de la página de RTVE, TVE a la Carta. El programa (que es software libre) aparece descrito con sus instrucciones de uso en el artículo. Al mirar en sus tripas (¡maravillas del software libre!) encontramos que hace los siguientes pasos:
http://www.rtve.es/alacarta/player/[XXXXXX].html
,
donde [XXXXXX]
es un número decimal de 6 cifras).
html
por xml
:
http://www.rtve.es/alacarta/player/[XXXXXX].xml
.
rtmp://stream.rtve.es/stream/resources/alacarta/flv/…
(los puntos suspensivos omiten el final de la dirección). Esta
dirección figura entre las secuencias <location>
y </location>
.
http://www.rtve.es/
, de modo que queda así:
http://www.rtve.es/stream/resources/alacarta/flv/…
.
Vemos, pues, que los vídeos están referenciados en unos
ficheros XML. Cada uno de estos ficheros XML contiene la dirección
del vídeo, pero el esquema es RTMP, un protocolo propietario que no
nos interesa. Afortunadamente, también podemos acceder al vídeo
por HTTP, así que basta con hacer unas pequeñas sustituciones.
Podemos construir una solución rápida con una tubería de la línea
de órdenes (mucho más espartana que la del artículo original) usa
las herramientas estándar de *nix y un programa de descargas (por
ejemplo, GNU Wget:
echo "$DIRECCION" | sed 's/html$/xml/' | wget -i - -O - \
| sed 's_^.*<location>__;s_</location>.*$__' \
| sed 's_rtmp://stream_http://www_' \
| wget -i -
Hemos supuesto que la dirección de la página con el vídeo incrustado
está en la variable DIRECCION. Vemos que los pasos son:
html
por
xml
en la dirección de la página que tiene el reproductor de
vídeo incrustado.
Es decir, lo mismo que hacía el programa original.
Todo ha sido muy sencillo hasta ahora.
El autor de Pisando charcos me animó a buscar el modo de descargar vídeos no de TVE a la carta, sino de la mediateca, otra sección que usa un sistema un poquito diferente al anterior:
.html
.
Ahora toca ensuciarse (virtualmente) las manos un poquito. La
solución del problema está dentro del código de la página con el
reproductor de vídeo incrustado. Si miramos su contenido, encontramos
material sospechoso. El reproductor de vídeo arranca desde un trocito
de código JavaScript:
var so[XXXXXX] = new SWFObject('/swf/v2/RTVEPlayer.swf',flashcontentId,ancho,alto,'9');
La secuencia [XXXXXX]
es un número de 6 cifras y cambia de
un vídeo a otro. Este número es bastante revelador y parece
identificar el vídeo que pretendemos descargar. En vez de sacar el
identificador del vídeo de ahí, vamos a hacerlo a partir del parámetro
flashcontentId, ya que con ese nombre no le queda más remedio
que ser el auténtico identificador del vídeo. En efecto, unas líneas
más arriba encontramos:
var flashcontentId = 'vidplayer[XXXXXX]';
Con este número construimos la dirección del recurso XML
correspondiente:
http://www.rtve.es/alacarta/player/[XXXXXX].xml
.
El proceso final es el mismo que el que usamos con TVE a la carta:
bajar el recurso XML, extraer la dirección del vídeo de su interior,
construir una dirección del vídeo válida y aceptable y, finalmente,
descargar el vídeo.
Vamos a ir paso por paso:
wget "$DIRECCION" -O -
| grep 'var flashcontentId ='
| sed 's/[^0-9]//g'
| xargs printf 'http://www.rtve.es/alacarta/player/%s.xml'
| wget -i - -O -
sed 's_^.*<location>__;s_</location>.*$__'
| sed 's_rtmp://stream_http://www_'
| wget -c -i -
El resultado final queda así:
wget "$DIRECCION" -O - \
| grep 'var flashcontentId =' \
| sed 's/[^0-9]//g' \
| xargs printf 'http://www.rtve.es/alacarta/player/%s.xml' \
| wget -i - -O - \
| sed 's_^.*<location>__;s_</location>.*$__' \
| sed 's_rtmp://stream_http://www_' \
| wget -c -i -
La lógica anterior (con algunas mejoras) está recogida en un pequeño script (distribuido bajo la licencia GNU GPL, versión 3 ó posterior): rtve-mediateca-dl. El uso es sencillo:
rtve-mediateca-dl DIRECCIÓN
Actualización:
El sistema de distribución de vídeo de la página de RTVE
ha cambiado varias veces desde la escritura de este artículo y
el método aquí descrito está obsoleto. El método que funciona
en el momento de escribir esta actualización (septiembre de 2012) está
en un artículo más reciente. También hay una versión
al día del programita rtve-mediateca-dl que
implementa esté método.
Categorías: Informática
Permalink: https://sgcg.es/articulos/2010/02/20/bajar-videos-de-la-mediateca-de-rtve/