Puppy Linux Discussion Forum Forum Index Puppy Linux Discussion Forum
Puppy HOME page : puppylinux.com
"THE" alternative forum : puppylinux.info
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

The time now is Sun 31 May 2020, 16:20
All times are UTC - 4
 Forum index » House Training » Users ( For the regulars ) » Pour les francophones
Lecteur Radio avec morceau joué et pochette de l'album
Moderators: Béèm, darkerror05, linuxcbon
Post new topic   Reply to topic View previous topic :: View next topic
Page 1 of 2 [28 Posts]   Goto page: 1, 2 Next
Author Message
fabrice_035


Joined: 28 Apr 2014
Posts: 735
Location: Bretagne / France

PostPosted: 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 Smile
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
View user's profile Send private message 
musher0

Joined: 04 Jan 2009
Posts: 14953
Location: Gatineau (Qc), Canada

PostPosted: 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
View user's profile Send private message 
fabrice_035


Joined: 28 Apr 2014
Posts: 735
Location: Bretagne / France

PostPosted: 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
View user's profile Send private message 
Argolance


Joined: 06 Jan 2008
Posts: 3795
Location: PORT-BRILLET (Mayenne - France)

PostPosted: Mon 20 Apr 2020, 07:13    Post subject:  

Bonjour,
Merci pour ce petit script. Smile
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.
200420_124526_269x144_easyshot.png
 Description   
 Filesize   15.53 KB
 Viewed   172 Time(s)

200420_124526_269x144_easyshot.png


_________________

Puppy Search
Back to top
View user's profile Send private message Visit poster's website 
fabrice_035


Joined: 28 Apr 2014
Posts: 735
Location: Bretagne / France

PostPosted: 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
View user's profile Send private message 
Argolance


Joined: 06 Jan 2008
Posts: 3795
Location: PORT-BRILLET (Mayenne - France)

PostPosted: 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... Rolling Eyes
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?
nrp.png
 Description   
 Filesize   2.05 KB
 Viewed   143 Time(s)

nrp.png

art.jpg
 Description   
 Filesize   6.11 KB
 Viewed   144 Time(s)

art.jpg


_________________

Puppy Search
Back to top
View user's profile Send private message Visit poster's website 
fabrice_035


Joined: 28 Apr 2014
Posts: 735
Location: Bretagne / France

PostPosted: 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
View user's profile Send private message 
Argolance


Joined: 06 Jan 2008
Posts: 3795
Location: PORT-BRILLET (Mayenne - France)

PostPosted: 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ô? Embarassed
200420_180631_593x581_easyshot.jpg
 Description   
 Filesize   55.55 KB
 Viewed   132 Time(s)

200420_180631_593x581_easyshot.jpg


_________________

Puppy Search

Last edited by Argolance on Fri 24 Apr 2020, 14:08; edited 2 times in total
Back to top
View user's profile Send private message Visit poster's website 
fabrice_035


Joined: 28 Apr 2014
Posts: 735
Location: Bretagne / France

PostPosted: 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
View user's profile Send private message 
Argolance


Joined: 06 Jan 2008
Posts: 3795
Location: PORT-BRILLET (Mayenne - France)

PostPosted: 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
View user's profile Send private message Visit poster's website 
fabrice_035


Joined: 28 Apr 2014
Posts: 735
Location: Bretagne / France

PostPosted: 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
View user's profile Send private message 
Argolance


Joined: 06 Jan 2008
Posts: 3795
Location: PORT-BRILLET (Mayenne - France)

PostPosted: 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
View user's profile Send private message Visit poster's website 
fabrice_035


Joined: 28 Apr 2014
Posts: 735
Location: Bretagne / France

PostPosted: 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
View user's profile Send private message 
Argolance


Joined: 06 Jan 2008
Posts: 3795
Location: PORT-BRILLET (Mayenne - France)

PostPosted: 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! Smile
Merci.
200420_193458_316x397_easyshot.png
 Description   
 Filesize   71.6 KB
 Viewed   114 Time(s)

200420_193458_316x397_easyshot.png


_________________

Puppy Search
Back to top
View user's profile Send private message Visit poster's website 
fabrice_035


Joined: 28 Apr 2014
Posts: 735
Location: Bretagne / France

PostPosted: 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
View user's profile Send private message 
Display posts from previous:   Sort by:   
Page 1 of 2 [28 Posts]   Goto page: 1, 2 Next
Post new topic   Reply to topic View previous topic :: View next topic
 Forum index » House Training » Users ( For the regulars ) » Pour les francophones
Jump to:  

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group
[ Time: 0.0707s ][ Queries: 12 (0.0137s) ][ GZIP on ]