Outils pour utilisateurs

Outils du site


bash:playlist_de_webradios_anime

Ceci est une ancienne révision du document !


Playlist de webradios anime

Le répertoire Xiph, résultats pour « anime »: et si on se faisait une compil’ de ces webradios, tout dans une liste de lecture, 1 seul stream par radio ? J’ai un peu tâtonné jusqu’à obtenir exactement ce que je voulais. Mais voilà: Une fois exécuté, ce script sort un fichier “Anime_mix.xspf” contenant 1 stream par webradio, à ouvrir dans un lecteur comme VLC :) Au moment où j'écris ça, c'est une playlist de 25 streams qu'on obtient.

  1. on récupère les 2 pages de résultats avec wget (on peut ajouter le téléchargement de 3, 4… autant de pages de résultats qu'il faut)
  2. on fusionne ces pages en 1 seule, et on enlève les 2 pages individuelles
  3. on “attrape” le lien vers les listes de lecture dans la page, et on le transforme en lien absolu
  4. on crée un dossier et on y récupère avec wget toutes les listes de lecture trouvées
  5. pour chaque liste de lecture dans le dossier, on extrait uniquement la première référence de piste (track) car beaucoup de radios ont plusieurs pistes sur des serveurs différents
  6. on “reconstruit” une liste de lecture avec toutes les références de pistes
  7. et on nettoie les fichiers de travail

Le fichier de sortie est un peu barbare (pas de retour à la ligne entre les pistes, pas de titre ni info,..) mais VLC le traite sans problème ;) Adaptez selon vos besoins (mot clé de la page de résultats, nombres de pages à scanner, type de playlist à sortir…).

playlist.run
#!/bin/bash
wget -O page1 "http://dir.xiph.org/search?search=anime"
wget -O page2 "http://dir.xiph.org/search?search=anime&page=1"
cat page1 page2 > page
rm page1 page2
grep -o /listen/[^[:space:]]*/listen.xspf page | sed -e "s/\/listen/http:\/\/dir.xiph.org\/listen/" > radios
mkdir temp
while read line; do wget -O "temp/`date +%s%N`" "$line" ; done < radios
for file in temp/*; do grep -m 1 -o "<track><location>[^[:space:]]*</location></track>" $file >> track  ; done
streams=`cat track`
echo '<?xml version="1.0" encoding="UTF-8"?><playlist version="1" xmlns="http://xspf.org/ns/0/"><title>Mix</title><info></info><trackList>'$streams'</trackList></playlist>' > Anime_mix.xspf
rm track radios page
rm -rf temp
bash/playlist_de_webradios_anime.1338236146.txt.gz · Dernière modification : 2013-02-19 20:28 (modification externe)