Mot-clé - JSON

Fil des billets

jeudi 14 juillet 2016

Voir et revoir les vidéos disponibles sur le site Arte.tv

Ces derniers temps, j'explore les capacités du site arte.tv afin de (re)voir certaines vidéos.

Je peux désormais récupérer la véritable URL d'une vidéo à partir de leur playlist (j'y reviendrais dans un futur billet). Mais cette fois-ci je me suis intéressé au cas, où l'on connaît déjà le lien.

j'ai donc écrit un script avec le langage Vala. Pour utiliser le programme il vous faut installer les bibliothèques suivantes [1] :

  • glib
  • libsoup
  • json-glib

Il faut ensuite le compiler :

valac --pkg=glib-2.0 --pkg=libsoup-2.4 --pkg=json-glib-1.0 artetv.vala

Si tout se passe bien, on peut le lancer de la manière suivante [2] :

./artetv http://www.arte.tv/guide/fr/057398-000-A/quand-l-amerique-sera-latine
http://arte.gl-systemhaus.de/am/tvguide/EUR_DE_FR/057398-000-A_EQ_2_VOF-STF_02421848_MP4-1500_AMM-Tvguide.mp4

Le script par défaut recherche les vidéos dont le conteneur est MP4 (il est tout a fait possible de voir les vidéos en streaming, grâce au protocole RTMP).

Je n'ai pas prévu de fonctionnalité pour télécharger le fichier (ce n'était pas le but premier, je voulais surtout m'intéresser aux données au format JSON). Cependant on peut utiliser un utilitaire prévu pour ça (par exemple avec wget) :

wget `./artetv http://www.arte.tv/guide/fr/057398-000-A/quand-l-amerique-sera-latine`

Ou tout simplement, visualiser directement la vidéo avec la bibliothèque GStreamer.

gst-launch-1.0 playbin uri=`./artetv http://www.arte.tv/guide/fr/048078-000-A/papouasie-expedition-au-coeur-d-un-monde-perdu`

(Cliquez sur l'image pour la voir au format original)

gst-launch-1.0.png

Notes

[1] Ainsi que les paquets de développement, généralement.

[2] Par exemple avec cette URL, http://www.arte.tv/guide/fr/057398-000-A/quand-l-amerique-sera-latine

vendredi 9 mai 2014

Déterminer l'origine d'une IP

Je viens de publier sur le wiki, un snippet, afin de déterminer l'origine d'une adresse IP écrit en Vala.

En testant ce programme avec différentes versions de ce langage, j'ai dû mettre en place des tests, qui sont évalués par le compilateur valac. On parle souvent de préprocesseur dans certains langages.

Si on dispose d'une version de Vala >= 0.22, il faut activer la directive VALA_0_22.

Si on dispose d'une version de libsoup >= 2.42, il faut activer la directive LIBSOUP_2_42.

Comment déterminer la version d'une bibliothèque ?

C'est très simple, on utilise l'exécutable pkg-config [1].

pkg-config --modversion libsoup-2.4
2.42.3.1

En fait pkg-config interroge les fichiers .pc, qui se trouve dans le dossier pkgconfig/. Pour savoir où il se trouve dans l'arborescence :

find /usr -type d -name 'pkgconfig' -print

Par exemple, sous Fedora, on le trouve dans les dossier /usr/share et /usr/lib. Sous FreeBSD, il est situé dans /usr/local/libdata.

Pour Vala :

valac --version
Vala 0.20.1

Maintenant nous avons toutes les informations, on peut compiler notre programme.

Compiler

Si Vala < 0.22.x

valac --target-glib=2.32 --pkg=glib-2.0 --pkg=libsoup-2.4 --pkg=json-glib-1.0 geoip.vala

Si Vala >= 0.22.x et libsoup >= 2.42.x

valac --define=VALA_0_22 --define=LIBSOUP_2_42 --pkg=glib-2.0 --pkg=libsoup-2.4 --pkg=json-glib-1.0 geoip.vala

Sous FreeBSD, on peut changer de compilateur, en utilisant par exemple clang.

valac --cc=clang --define=VALA_0_22 --pkg=glib-2.0 --pkg=libsoup-2.4 --pkg=json-glib-1.0 geoip.vala

Dans tout les cas, on obtient le même résultat :

./geoip
fr

Note

[1] Sous FreeBSD, on utilisera plutôt pkgconfig.