Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/12/2013, à 11:17

le-peyo

Flux FIP et infos des titres diffusés

Holà,

J'aime bien écouter Fip avec Radiotray ou Clémentine mais aucun des deux n'affiche les titres.

Après pas mal de recherches je n'ai pas trouvé comment faire pour afficher les titres des morceaux diffusés par le site http://www.fipradio.fr/ dans un conky ou un notify.

Plusieurs posts en parlent mais sont trop anciens et les solutions apportées ne donnent rien.

Fip ne diffusant pas les titres en tant que métadonnées incluses dans le flux, il faut aller sur http://www.fipradio.fr/ (ou mieux http://www.fipradio.fr/?first=0%2520%253E%2520$file1) ou encore http://www.fipradio.fr/player pour récupérer ces infos (avec un coup de firebug pour trouver le bon endroit ?) et ensuite les envoyer soit dans un conky, soit dans un notify, mais là, ça me dépasse... je ne sais pas faire...

Il y a sûrement des trucs à faire à partir de http://cargoculte.be/radio2xspf/radio2x … ?radio=fip mais là, pareil, ne sachant quasiment pas faire de scripts je ne vois pas quoi faire (il y a du wget ou du curl à utiliser je suppose...).

Si le cœur vous en dit, un petit coup de main serait super (c'est pénible d'ouvrir firefox à chaque fois que j'entends un morceau qui me plaît pour savoir ce que c'est).

D' avance merci.


Sous Linux depuis 2009 | Xubuntu 22.04 LTS | Lenovo Thinkpad W540
Windows... ? J'connais pas...
Petits scripts vidéos bien pratiques =>
C'est le moment : OMS et Institut Pasteur !

Hors ligne

#2 Le 15/12/2013, à 12:15

Grünt

Re : Flux FIP et infos des titres diffusés

Je peux t'aider à faire un script bash qui récupère les données, oui.

Par exemple, un coup de :

wget http://www.fipradio.fr/player -O - 2>/dev/null | grep "album\|desc" | grep -v metas

Ceci dit, le résultat est une sortie shell, je ne sais pas comment intégrer ça à conky.


Red flashing lights. I bet they mean something.

Hors ligne

#3 Le 19/12/2013, à 16:53

le-peyo

Re : Flux FIP et infos des titres diffusés

Holà, merci,

Désolé de répondre en retard, ça marche mais, hélas, le retour n'est pas toujours juste; voici ce que me donne la commande trois fois de suite en l'espace de trois secondes :

┌─( peyo ) - ( 3.2.0-57-generic ) - ( ~ )
└─> wget http://www.fipradio.fr/player -O - 2>/dev/null | grep "album\|desc" | grep -v metas
      <h1 class="title album"><span class="roll_overflow">PYRAMID SONG</span></h1>
      <p class="desc">TRIBUTE TO RADIOHEAD / VOL.2 ( 2013 )</p>
┌─( peyo ) - ( 3.2.0-57-generic ) - ( ~ )
└─> wget http://www.fipradio.fr/player -O - 2>/dev/null | grep "album\|desc" | grep -v metas
      <h1 class="title album"><span class="roll_overflow">A FOREST</span></h1>
      <p class="desc">NOUVELLE VAGUE ( 2004 )</p>
┌─( peyo ) - ( 3.2.0-57-generic ) - ( ~ )
└─> wget http://www.fipradio.fr/player -O - 2>/dev/null | grep "album\|desc" | grep -v metas
      <h1 class="title album"><span class="roll_overflow">FLYING EASY</span></h1>
      <p class="desc">EXTENSION OF A MAN ( 1973 )</p>

Je continue le test...

À plus.


Sous Linux depuis 2009 | Xubuntu 22.04 LTS | Lenovo Thinkpad W540
Windows... ? J'connais pas...
Petits scripts vidéos bien pratiques =>
C'est le moment : OMS et Institut Pasteur !

Hors ligne

#4 Le 20/12/2013, à 09:45

le-peyo

Re : Flux FIP et infos des titres diffusés

Grünt a écrit :

Ceci dit, le résultat est une sortie shell, je ne sais pas comment intégrer ça à conky.

Je ne connais pas la commande mais je pense qu'en lui disant d'écrire la réponse dans un fichier temporaire et de dire à conky d'aller lire dans ce fichier on est sur la bonne voie...

À plus

Dernière modification par le-peyo (Le 20/12/2013, à 11:52)


Sous Linux depuis 2009 | Xubuntu 22.04 LTS | Lenovo Thinkpad W540
Windows... ? J'connais pas...
Petits scripts vidéos bien pratiques =>
C'est le moment : OMS et Institut Pasteur !

Hors ligne

#5 Le 03/01/2014, à 11:13

chrisemail

Re : Flux FIP et infos des titres diffusés

Salut tous smile

Vous avez pu trouver une solution fiable pour récupérer les informations sur FIP ?

(je voudrais les récupérer pour les envoyer à un afficheur LCD)

Merci pour votre retour !!

Hors ligne

#6 Le 06/01/2014, à 09:51

joko

Re : Flux FIP et infos des titres diffusés

bonjour le-peyo, j'avais exactement le même souci mais avec radio-meuh,
j'ai eu besoin de créer 5 fichiers

1- conky start (dans /usr/bin)
il contient différents scripts de lancement conky dont meuh_start

...
sleep 20 && bash ~/scripts/meuh/meuh_start.sh
...

2- meuh_start.sh

#!/bin/bash
#recup_meuh_index_init.sh
cd ~/scripts/meuh
bash recup_meuh_index_init.sh
sleep 5 && conky -c conky-meuh &
#on récupère l'index dès l'allumage de l'ordi

le script bash recup_meuh_index_init.sh sert à "initialiser les fichiers au niveau de l'heure et du temps restant

3- recup_meuh_index_init.sh

#!/bin/bash
#on nettoie les fichiers index (pour éviter l'incrémentation)
cd /home/user/scripts/meuh
rm index*
rm play_list.html
#on récupère le fichier index.php de radio meuh
wget http://www.radiomeuh.com/meuh/playlist/index.php
cp index.php play_list.html
#on récupère ce qui est dansla balise bold (<B>)
#champ artiste + album
artiste_alb=$(grep -o -P "(?<=<B).*(?=\/B>)" index.php | cut -d\< -f2) #champ 2 -f2 (f pour field) délimiteur "<" (précédé de \ sinon erreur)
heure_diff=$(grep -o -P "(?<=<B).*(?=\/B>)" index.php | cut -d\< -f1)
heure_diff=${heure_diff:1}
duree_diff=$(grep -o -P "(?<=<B).*(?=\/B>)" index.php | cut -d\< -f5)


#duree_diff=${duree_diff:32}

#nettoyage

duree_diff=$(echo $duree_diff | cut -d\: -f3)
duree_min=$(echo $duree_diff | cut -d"m" -f1) #on prend le nombre de min 
duree_sec=$(echo $duree_diff | cut -d" " -f2)"ec"
duree_sec2=$(echo $duree_diff | cut -d" " -f2)



#cas 0 minute restant
#comme on sait pas verifier s'il y des min
#on regarde si le contenu des min et sec sont egale
#si oui duree_min="0min"


if  [ "$duree_min" == "$duree_sec2" ]
then
duree_min="0"


fi
artiste_alb=$(grep -o -P "(?<=<B).*(?=\/B>)" index.php | cut -d\< -f2) #champ 2 -f2 (f pour field) délimiteur "<" (précédé de \ sinon erreur)
artiste_alb=${artiste_alb:3}
#echo $artiste_alb
#heure_diff_proch=$(date --date="+ $duree_min")
#heure_diff_proch=$(date --date="+ $duree_sec")

#champ titre
titre=$(grep -o -P "(?<=<B).*(?=\/B>)" index.php | cut -d\< -f3) 
titre=${titre:4} #4ème car. du champ3 (-f3)
echo $heure_diff > meuh_info
echo $duree_min >> meuh_info
echo $duree_sec2 >> meuh_info #ne contient que le s de seconde utile pour sleep
echo $artiste_alb >> meuh_info
echo $titre >> meuh_info
echo "init"
echo $artiste_alb - $titre

après on déclenche le conky par lui même

4-conky-meuh

TEXT
${color white}meuh :${color yellow} ${execi 30 /home/user/scripts/meuh/meuh-conky.sh}

ce conky appelle toutes 30sec le script meuh-conky.sh mais les mises à jour ne se font réellement qu'au changement de titre, ce qui évite d'aller faire un wget toutes les 30 sec (j'ai pensé à la planète)

5- meuh-conky.sh

#!/bin/bash
#----------------------import meuh_info---------------------------------------
cd /home/user/scripts/meuh
##---- !!! important il s'agit du temps restant
heure_diff=$(sed -n '1p' meuh_info) 
duree_min=$(sed -n '2p' meuh_info) 
duree_sec=$(sed -n '3p' meuh_info) 

#on va nettoyer les variables de temps
sec0=`echo $duree_sec | sed "s/s//g"` #on enlève le "s" de seconde 16s --> 16 'sans le s

#conversion des minutes en secondes
sec1=$((duree_min*60))
sec2=$((sec1+sec0))

#on attend le temps restant avant de lancer le wget
sleep $sec2
#-------------------------wget------export---meuh_info--------------------------------
##on nettoie les fichiers index (pour éviter l'incrémentation)
cd /home/user/scripts/meuh
rm index*
rm play_list.html
#on récupère le fichier index.php de radio meuh
wget http://www.radiomeuh.com/meuh/playlist/index.php

#on force le fichier en utf8
iconv -f ISO-8859-1 -t UTF-8 index.php -o index2.php

#on récupère ce qui est dans la balise bold (<B>)
#champ artiste + album
artiste_alb=$(grep -o -P "(?<=<B).*(?=\/B>)" index2.php | cut -d\< -f2) #champ 2 -f2 (f pour field) délimiteur "<" (précédé de \ sinon erreur)
heure_diff=$(grep -o -P "(?<=<B).*(?=\/B>)" index2.php | cut -d\< -f1)
heure_diff=${heure_diff:1}
duree_diff=$(grep -o -P "(?<=<B).*(?=\/B>)" index2.php | cut -d\< -f5)

#nettoyage
duree_diff=$(echo $duree_diff | cut -d\: -f3)
duree_min=$(echo $duree_diff | cut -d"m" -f1) #on prend le nombre de min 
duree_sec=$(echo $duree_diff | cut -d" " -f2)"ec"
duree_sec2=$(echo $duree_diff | cut -d" " -f2)
#cas 0 minute restant
#comme on sait pas verifier s'il y des min
#on regarde si le contenu des min et sec sont egale
#si oui duree_min="0min"
if  [ "$duree_min" == "$duree_sec2" ]
then
duree_min="0"
fi

#champ atiste_alb
artiste_alb=$(grep -o -P "(?<=<B).*(?=\/B>)" index2.php | cut -d\< -f2) #champ 2 -f2 (f pour field) délimiteur "<" (précédé de \ sinon erreur)
#artiste_alb=`echo $artiste_alb | sed "s/&/&amp;/g"` #probleme ampersand pour zenity
artiste_alb=${artiste_alb:3} #on enlève les 3 premiers car

#champ titre
titre=$(grep -o -P "(?<=<B).*(?=\/B>)" index2.php | cut -d\< -f3) 
titre=${titre:4} #4ème car. du champ3 (-f3)
#titre=`echo $titre | sed "s/&/&amp;/g"` #probleme ampersand pour zenity
echo $heure_diff > meuh_info
echo $duree_min >> meuh_info
echo $duree_sec2 >> meuh_info #ne contient que le s de seconde utile pour sleep
echo $artiste_alb >> meuh_info
echo $titre >> meuh_info

#--------------------------------------------envoi à conky---------------------------

#on n'affiche que les n premiers car voir test
chaine="$artiste_alb - $titre"
long_chaine=${#chaine} # taille de la chaine
coupe=90 # 
if [ $long_chaine -gt $coupe ]
then
#on affichige que les n premiers car n=coupe
chaine=${chaine:0:coupe}
echo "$chaine(...)" #on affiche des points de suspension directement derrière chaine pb police chasse variable
else
echo $artiste_alb -  $titre
fi

heure1=$(echo $heure_diff | cut -d\: -f1) #heure seule
min1=$(echo $heure_diff | cut -d\: -f2) #min seule
min1=`echo $min1 | sed "s/\ //g"`
heure_diff_court="$heure1:$min1"
echo "$heure_diff_court ($duree_diff)"

exit 0

voilà, en espérant que ça puisse aider, le code n'est pas forcément des plus propres, un coup de main en nettoyage et en simplification serait bien accueilli


Je suis un homme, quoi de plus naturel en somme ?
linux on the rocks

Hors ligne