Porneia delights, 14 août 2012, e20100633 — Il y a quelques années, illovæ avait écrit un script bash pour aisément lister et télécharger les émissions d'Arte+7, le fameux portail vidéo d'Arte qui permet d'en revoir certaines émissions gratuitement pendant 7 jours. Le temps passant et l'architecture du site de la chaîne ayant changé, le code n'avait plus été maintenu.
Il existe de nos jours des projets similaires et très évolués comme Qarte par exemple. Je ne l'ai jamais testé, c'est un outil graphique. En ligne de commande, il est possible d'arriver à télécharger ces émissions avec weboob — par l'intermédiaire d'un plugin je crois. C'est un programme très sympas qui permet de faire plein de choses, que l'on doit normalement faire depuis un navigateur internet, mais depuis son terminal (plus d'informations par ici). Mais en ce qui concerne le téléchargement (et surtout le listing en fait) des vidéos d'Arte+7 je n'avais pas été convaincu (je ne prétend pas masteriser cet outil, j'ai sûrement dû mal m'y prendre, mais le fait est que j'ai laissé tomber).
Bref, tout ça pour dire que je m'étais mis en tête de me faire mon propre script. Mes propres scripts devrais-je même plutôt dire. N'ayant pas les compétences pour faire quelques choses de très pointu avec des tas d'options comme c'était le cas pour le script d'illovæ, ma réalisation est très simple, probablement maladroite et pas forcément ergonomique. Je sais qu'on doit pouvoir faire dix fois mieux et en un seul script. Mais ça me convient comme ça (et je sais qu'elle convient à au moins une autre personne). Je ne pensais donc jamais la diffuser.
En parcourant tout à l'heure les archives du newsgroup
fcol.configuration
, je suis retombé sur un
vieux fil traitant justement de cette question de
capture de stream d'Arte+7 où j'avais partagé mes quelques lignes
de code. J'ai trouvé que c'était la bonne occasion pour mettre tout ça
dans une page html et de l'archiver sur le Porneia delights...
Lister les vidéos disponibles
Arte utilise un fichier xml pour les vidéos disponibles, nous utilisons donc xsltproc pour le travailler.
Le script arte-ls.sh
qui suit
requiert wget
, xsltproc
et lynx
(ou tout autre navigateur en CLI — éditez les dernières lignes
en fonction) :
#!/bin/sh
# arte-ls.sh 0.1 e20100633
# $ arte-ls.sh
TDATE=$(date "+%m%d-%H%M")
XMLLINK=$(wget -q -O - http://videos.arte.tv/fr/videos |grep XmlUrl |cut -d "\"" -f2)
wget -O /tmp/arte_$$_$TDATE.xml "http://videos.arte.tv$XMLLINK"
xsltproc /tmp/artexml.xsl /tmp/arte_$$_$TDATE.xml > /tmp/arte.html
# Pour utiliser lynx
lynx /tmp/arte.html
# Pour utiliser w3m via l'instance d'Emacs
#emacsclient --eval '(w3m-find-file "/tmp/arte.html")'
Le fichier artexml.xsl
(utilisé
par xsltproc
) à placer dans /tmp qui va servir au
formatage de la page html finale :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<body>
<dl>
<xsl:for-each select="coverflow/video">
<dt>
<xsl:value-of select="title"/>
</dt>
<dd>
<xsl:value-of select="startDate"/> - <xsl:value-of select="duration"/><br/>
[http://videos.arte.tv/<xsl:value-of select="targetUrl"/>]
<p>
<xsl:value-of select="teaserText"/>
</p>
</dd>
<hr/>
</xsl:for-each>
</dl>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Il suffit de lancer arte-ls.sh
et après
traitement lynx
s'ouvre avec les vidéos disponibles
(titre, url, synopsys, etc).
Enregistrer une vidéo
Si une des vidéos vous intéresse, récupérez le lien fourni sur la page
générée par arte-ls.sh
(du genre
http://videos.arte.tv/fr/videos/a_qui_profite_la_crise_-4204438.html
donc) et mettez le en argument à ce script, nommé chez
moi arte-dl.sh
:
#!/bin/bash
# arte-dl.sh 0.1 e20100633
# $ arte-dl.sh <lien>
XMLLINK=$(wget -q -O - $1 |grep "embed src" |cut -d"=" -f11 |sed 's/"//;s/%3A/:/;s/%2F/\//g')
XMLVIDEOLINK=$(wget -q -O - $XMLLINK |grep 'lang="fr"' |cut -d"\"" -f4)
RTMPLINK=$(wget -q -O - $XMLVIDEOLINK |grep hd |cut -d">" -f2 |sed 's/<\/url//')
echo "$RTMPLINK"
#rtmpdump -e -W "http://videos.arte.tv/videoplayer.swf" -r "$RTMPLINK" -o "$2"
Par défaut, le script renvoie simplement l'adresse rtmp de la vidéo dans votre terminal. Vous pouvez décommenter la dernière ligne si vous avez rtmpdump. Le script s'utilisera alors de cette manière :
$ arte-dl.sh [http://lien] [titre_voulu_video.flv]
Remarquez l'option -W
"http://videos.arte.tv/videoplayer.swf"
passée
à rtmpdump
. Sans elle votre téléchargement se coupera
aléatoirement sans en avoir terminé.