Author |
Message |
fabrice_035

Joined: 28 Apr 2014 Posts: 768 Location: Bretagne / France
|
Posted: Sun 19 Apr 2020, 11:53 Post subject:
Lecteur Radio avec morceau joué et pochette de l'album |
|
#edit 22 Avril 2020#
Inutile d'utiliser ffprobe parce que MPV donne directement le titre... suffit de récupérer le résultat
Cette version utilise un slide pour régler le volume, le volume ne peut être changé en direct mais spécifie un volume du lecteur indépendamment du volume générale. Il faut stopper la lecture et relancer le titre pour prendre en compte un changement du volume.
Dans cette version j'utilise un fichier "art_def.jpg" pour une image par défaut si la pochette n'existe pas. A vous de mettre ce fichier image dans le dossier.
############
Hello
Il existe de nombreux programmes avec nos puppy's pour écouter des radios en ligne mais je n'en ai pas trouvé qui affichent le titre en cours de lecture et la pochette de l'album ou du disque. Alors après qq recherches je me suis demandé si je pouvais faire quelque chose par moi même.
Et en effet, les composants nécessaires sont présents, c'est à dire ffprobe pour extraire le titre joué et wget pour prendre la pochette sur le web (après une recherche automatisée) J'utilise MPV pour la lecture audio, vu qu'il est également dispo par défaut.
Alors voilà, si vous êtes curieux je partage mon petit programme, à améliorer mais il est tout à fait fonctionnel !
Une capture du résultat :
Le programme :
Code: |
#!/bin/sh
# Nice Radio Player v.03 / 27 AVRIL 2020 / Fabrice_035
#
# just trying to find the cover,
# add your favorites radio with this program or edit radio.txt file
#
# New version, no need ffprob, much simpler pipe with MPV
# Clean before start ##################
echo "" > pid.radio.txt
rm -f api.txt
echo "Select Radio and Play >" > bar.txt
##########################
cp -f art_def.jpg art.jpg
# play radio with mpv player
JOBCREATE(){
killpid=$(cat pid.radio.txt)
if [ "$killpid" != "" ] ; then
kill -9 "$killpid"
echo "" > pid.radio.txt
exit 0
fi
mpv --volume "$volume" "$BOX" > /dev/null 2>&1 >title.txt &
P1=$!
echo $P1 > pid.radio.txt
}
export -f JOBCREATE
# get icy-title with ffbrobe and download picture (wget)
getpicture(){
radio="$BOX"
titre=$(cat title.txt | grep -a "icy-title" | tail -1 | awk -F":" '{print $2}')
kr=$(cat pid.radio.txt)
if [ "$kr" != "" ] ; then
echo "[Play] $titre" > bar.txt
else
echo "[Stop] $titre" > bar.txt
fi
search=$(echo $titre | tr '"' ' ' | tr ' ' '+')
old=$(cat titre.txt)
verif=${#search}
echo "$verif"
min="3"
echo "$search" > titre.txt
if (("$verif" < "$min")) ; then
echo " trop petit "
cp -f art_def.jpg art.jpg
exit 0
fi
echo "$old $search"
if [ "$old" != "$search" ] ; then
echo "$old ? $search"
download
fi
exit 0
}
export -f getpicture
# search and download picture
download() {
search=`cat titre.txt`
rm -f api.txt
wget "https://api.discogs.com/artists/1?callback="$search -O api.txt > /dev/null 2>&1
rm -f out.txt
wget "https://www.discogs.com/fr/search/?q=$search&type=all" -O out.txt > /dev/null 2>&1
img=`grep /discogs-images/ out.txt | tail -n +1 |head -1`
lien=`echo $img | awk -F '"' '{print $2}'`
wget -q -O - $lien > art.jpg
return 0
}
export -f download
GTKDIALOG=gtkdialog
MAIN_DIALOG='
<window title="Nice Radio Player" icon_name="gtk-media-play">
<vbox>
<hbox>
<frame>
<pixmap>
<variable>PIXMAP</variable>
<input file>art.jpg</input>
<action>getpicture</action>
</pixmap>
</frame>
</hbox>
<hbox space-expand="true" space-fill="true">
<button>
<input file stock="gtk-delete" tooltip-text="delete entry"></input>
<action>removeselected:BOX</action>
<action>save:BOX</action>
<action>refresh:BOX</action>
</button>
<comboboxentry has-focus="true" tooltip-text="add favorite radio, press enter" >
<variable>BOX</variable>
<default>Select Radio</default>
<input file>radio.txt</input>
<output file>radio.txt</output>
<action signal="activate">save:BOX</action>
<action signal="activate">refresh:BOX</action>
<action>JOBCREATE</action>
</comboboxentry>
<button tooltip-text="Play/Stop">
<input file stock="gtk-media-next"></input>
<action>JOBCREATE</action>
<action>refresh:LOG</action>
<action>clear:SOURCE</action>
</button>
</hbox>
<hbox>
<hscale xalign="0" width="100" value-pos="1" space-expand="true" space-fill="true" height-request="30" range-value="50">
<variable>volume</variable>
<action>set_volume '"$VLMCH"' "$volume"</action>
</hscale>
</hbox>
<statusbar space-expand="true" space-fill="true" use-markup="true" has-resize-grip="false" auto-refresh="true">
<variable>stb0</variable>
<input file>bar.txt</input>
</statusbar>
</vbox>
<timer visible="true" interval="4">
<action>getpicture&</action>
<action>refresh:PIXMAP</action>
</timer>
</window>
'
export MAIN_DIALOG
case $1 in
-d | --dump) echo "$MAIN_DIALOG" ;;
*) $GTKDIALOG --program=MAIN_DIALOG ;;
esac
# kill mpv pid !
kr=$(cat pid.radio.txt)
if [ "$kr" != "" ] ; then
kill -9 "$kr"
fi
# clean and exit , force to wait last process
rm -f art.jpg
rm -f pid.radio.txt
rm -f titre.txt
rm -f bar.txt
rm -f out.txt
rm -f title.txt
|
_________________ Bionicpup64-8.0 _ Kernel 5.4.27-64oz _ Asus Rog GL752
Last edited by fabrice_035 on Mon 27 Apr 2020, 14:59; edited 10 times in total
|
Back to top
|
|
 |
musher0
Joined: 04 Jan 2009 Posts: 15041 Location: Gatineau (Qc), Canada
|
Posted: Sun 19 Apr 2020, 14:31 Post subject:
|
|
Salut, Fabrice.
Intéressant.
Tu devrais aussi annoncer ton script du côté anglo.
À+
_________________ musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)
|
Back to top
|
|
 |
fabrice_035

Joined: 28 Apr 2014 Posts: 768 Location: Bretagne / France
|
Posted: Sun 19 Apr 2020, 14:49 Post subject:
|
|
Merci musher de ton intérêt. Je vais réfléchir à ta proposition. Bonne soirée / journée / nuit à nos amis québécois.
_________________ Bionicpup64-8.0 _ Kernel 5.4.27-64oz _ Asus Rog GL752
|
Back to top
|
|
 |
Argolance

Joined: 06 Jan 2008 Posts: 3822 Location: PORT-BRILLET (Mayenne - France)
|
Posted: Mon 20 Apr 2020, 07:13 Post subject:
|
|
Bonjour,
Merci pour ce petit script.
Quel type d'adresse faut-il utiliser? Les adresses de radios du genre "http://direct.fipradio.fr/live/fip-midfi.mp3" ne semblent pas prévues pour fonctionner avec. Peux-tu en dire un peu plus et donner une adresse comme exemple, fonctionnelle et permettant de tester les images des pochettes?
Idée/propostion:
- une image sympa de substitution lorsque l'image n'est pas disponible (voir image jointe).
- pid.radio, bar, titre et working dans un dossier dédié dans /tmp/nrp?
Cordialement.
Description |
|
Filesize |
15.53 KB |
Viewed |
279 Time(s) |

|
_________________
Puppy Search
|
Back to top
|
|
 |
fabrice_035

Joined: 28 Apr 2014 Posts: 768 Location: Bretagne / France
|
Posted: Mon 20 Apr 2020, 10:37 Post subject:
|
|
Salut Argolance,
Elle est sympa ton image de substitution, ça pourrait être une amélioration à faire en effet.
L'adresse du stream audio que tu proposes ne renvoie pas de Metada avec le titre, c'est regrettable que FIP ne propose pas cela!
Code: |
# ffprobe http://icecast.radiofrance.fr/fip-midfi.mp3
Input #0, mp3, from 'http://icecast.radiofrance.fr/fip-midfi.mp3':
Metadata:
icy-br : 128
icy-name : fip-midfi.mp3
icy-pub : 1
Duration: N/A, start: 0.000000, bitrate: 128 kb/s
Stream #0:0: Audio: mp3, 48000 Hz, stereo, s16p, 128 kb/s
|
D'ailleurs le lien suivant pour fip * ne propose pas de titre dans la Metadata :
https://stream.radiofrance.fr/fip/fip_hifi.m3u8
En auscultant la page web de FIP je découvre que les titres joués s'affichent mais il y a une astuce, leur lecteur utilise un API qui va chercher le titre indépendamment
On le voit dans l'analyse réseau de l'outil d'un navigateur, ci-dessus Firefox.
Bref, si le stream ne propose pas de Metadata le titre ne s'affichera pas donc pas de pochette !
Cdt
_________________ Bionicpup64-8.0 _ Kernel 5.4.27-64oz _ Asus Rog GL752
|
Back to top
|
|
 |
Argolance

Joined: 06 Jan 2008 Posts: 3822 Location: PORT-BRILLET (Mayenne - France)
|
Posted: Mon 20 Apr 2020, 11:12 Post subject:
|
|
Merci pour les renseignements.
fabrice_035 wrote: | Elle est sympa ton image de substitution, ça pourrait être une amélioration à faire en effet. |
Au cas où, voici l'image ainsi qu'une icône, éventuellement...
Quote: | L'adresse du stream audio que tu proposes ne renvoie pas de Metada avec le titre, c'est regrettable que FIP ne propose pas cela! |
Peux-tu nous en donner une?
Description |
|
Filesize |
2.05 KB |
Viewed |
250 Time(s) |

|
Description |
|
Filesize |
6.11 KB |
Viewed |
251 Time(s) |

|
_________________
Puppy Search
|
Back to top
|
|
 |
fabrice_035

Joined: 28 Apr 2014 Posts: 768 Location: Bretagne / France
|
Posted: Mon 20 Apr 2020, 11:21 Post subject:
|
|
Voila deux stations, chacune renvoie bien le titre joué
http://stream.dar.fm/146304
http://stream.dar.fm/146304
https://abf.net-radio.fr/abfgold.mp3
https://abf.net-radio.fr/abfgold.mp3
edit, une autre pour vos essais, celle là :
http://stream.radio.co/s4360dbc20/listen
http://stream.radio.co/s4360dbc20/listen
_________________ Bionicpup64-8.0 _ Kernel 5.4.27-64oz _ Asus Rog GL752
|
Back to top
|
|
 |
Argolance

Joined: 06 Jan 2008 Posts: 3822 Location: PORT-BRILLET (Mayenne - France)
|
Posted: Mon 20 Apr 2020, 12:13 Post subject:
|
|
J'ai bien la musique, mais le titre ne s'affiche pas dans la status bar (je suppose que ça doit être normalement le cas?), et puis pas d'image de la pochette non plus... Y a t-il quelque chose que je pige pô?
Description |
|
Filesize |
55.55 KB |
Viewed |
239 Time(s) |

|
_________________
Puppy Search
Last edited by Argolance on Fri 24 Apr 2020, 14:08; edited 2 times in total
|
Back to top
|
|
 |
fabrice_035

Joined: 28 Apr 2014 Posts: 768 Location: Bretagne / France
|
Posted: Mon 20 Apr 2020, 12:22 Post subject:
|
|
Ta regardé si tu avais ffprobe ?
Code: |
ffprobe -v quiet -print_format json -show_format "http://stream.radio.co/s4360dbc20/listen" | grep "StreamTitle" | awk -F':' '{print $2}'
|
ça arrive parfois que cette station n'affiche pas le titre mais ça dure juste 1 seconde.
La commande ci-dessus va t'afficher le morceau en cours.
_________________ Bionicpup64-8.0 _ Kernel 5.4.27-64oz _ Asus Rog GL752
|
Back to top
|
|
 |
Argolance

Joined: 06 Jan 2008 Posts: 3822 Location: PORT-BRILLET (Mayenne - France)
|
Posted: Mon 20 Apr 2020, 12:27 Post subject:
|
|
Oui, j'ai:
Code: | root@puppypc9814 ~
# ffprobe
avprobe version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2007-2013 the Libav developers
built on Apr 2 2013 17:00:59 with gcc 4.6.3
Simple multimedia streams analyzer
usage: avprobe [OPTIONS] [INPUT_FILE] |
J'ai aussi réédité mon précédent message entre temps.
Le titre apparait bien dans la fenêtre de la console, mais pas dans celle de la GUI dans la barre de statut.
Code: | ffprobe -v quiet -print_format json -show_format "http://stream.radio.co/s4360dbc20/listen" | grep "StreamTitle" | awk -F':' '{print $2}' |
>>>>
Code: | root@puppypc9814 ~
# ffprobe -v quiet -print_format json -show_format "http://stream.radio.co/s4360dbc20/listen" | grep "StreamTitle" | awk -F':' '{print $2}'
root@puppypc9814 ~
# |
_________________
Puppy Search
Last edited by Argolance on Mon 20 Apr 2020, 12:30; edited 1 time in total
|
Back to top
|
|
 |
fabrice_035

Joined: 28 Apr 2014 Posts: 768 Location: Bretagne / France
|
Posted: Mon 20 Apr 2020, 12:29 Post subject:
|
|
oui mais le résultat de
Code: | ffprobe -v quiet -print_format json -show_format "http://stream.radio.co/s4360dbc20/listen" | grep "StreamTitle" | awk -F':' '{print $2}' |
C'est quelle version ta puppy ?
Code: |
root# ffprobe
ffprobe version 3.4.4-0ubuntu0.18.04.1 Copyright (c) 2007-2018 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
|
_________________ Bionicpup64-8.0 _ Kernel 5.4.27-64oz _ Asus Rog GL752
|
Back to top
|
|
 |
Argolance

Joined: 06 Jan 2008 Posts: 3822 Location: PORT-BRILLET (Mayenne - France)
|
Posted: Mon 20 Apr 2020, 12:35 Post subject:
|
|
J'ai répondu à ta question dans le même temps ci-dessus.
Je tourne avec EasyPup, mais suis plus ou moins contraint de continuer avec ToOpPy (Precise 5.7.3) car j'ai du matos (scanner Mustek A3) dont j'ai très souvent besoin et que je ne parviens pas à faire marcher ailleurs!!!
_________________
Puppy Search
|
Back to top
|
|
 |
fabrice_035

Joined: 28 Apr 2014 Posts: 768 Location: Bretagne / France
|
Posted: Mon 20 Apr 2020, 12:38 Post subject:
|
|
Ah oui, donc ta version de ffprobe est obsolète. Pas de solution donc. Dsl
Essaye pour voir
Code: | ffprobe -v quiet -print_format json -show_format "http://stream.radio.co/s4360dbc20/listen" |
_________________ Bionicpup64-8.0 _ Kernel 5.4.27-64oz _ Asus Rog GL752
|
Back to top
|
|
 |
Argolance

Joined: 06 Jan 2008 Posts: 3822 Location: PORT-BRILLET (Mayenne - France)
|
Posted: Mon 20 Apr 2020, 13:39 Post subject:
|
|
Du coup j'ai compilé la dernière version 4.2.2 de ffmpeg qui embarque ffprobe... et ça marche!
Merci.
Description |
|
Filesize |
71.6 KB |
Viewed |
218 Time(s) |

|
_________________
Puppy Search
|
Back to top
|
|
 |
fabrice_035

Joined: 28 Apr 2014 Posts: 768 Location: Bretagne / France
|
Posted: Mon 20 Apr 2020, 15:07 Post subject:
|
|
Félicitation! Je mettrais à jour demain le code du premier message pour prendre en compte ta remarque d'absence d'image et utilisation d'une image par défaut si la pochette n'est pas trouvée. Bonne soirée.
_________________ Bionicpup64-8.0 _ Kernel 5.4.27-64oz _ Asus Rog GL752
|
Back to top
|
|
 |
|