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/11/2017, à 13:04

kholo

[tuto bash] dossiers fichiers et listes ; lecture de web radios vlc

bonjour à tous,
aujourd'hui je joue avec des listes...
du code vaut mieux que de longs discours,

#!/bin/bash
# ----------------------------------------------
nomlogiciel="${0##*/}"
FONCTION="un logiciel de lecture de 'radios'
NB ces 'radios' sont des liens lancés par vlc"
VERSION="0.019"
# NOTES DE VERSIONS
# ----------------------------------------------
# 
# ----------------------------------------------
echo "lancement $nomlogiciel..."

# nautilus "$PWD" ; exit 0

# catch CTRL-C
trap "echo ''; echo 'sortie avec CTR-C. on quitte' ; sleep 2 ; exit 1" 2

# TODO : tester les dépendances
# check_dependances () {
# vlc nautilus trap sleep read cat
	# }

# compteur de temps pour le log 
START=$(date +%s.%N)

charger_radios_csv () {
	# local nom_tmp
	local tete="chargement des radios"
	NOM_RADIO=()
	FREQUENCE=()
	local ligne 

	local l=0
	while read ligne
	do
		IFS=';' read NOM_RADIO[$l] FREQUENCE[$l] <<<"$ligne"
		echo -en "\r$tete : ${NOM_RADIO[$l]}"
		sleep .01 # pour prendre le temps de voir le chargement
		((l++))
	done < "$1"
	nbre_radios=$(($l-2))
	nbre_page_radio=$(( 1+$nbre_radios/10 ))

	echo "$nbre_radios radio(s) chargée(s)..."
	}
remplir_radios_csv () {
echo "NOM_RADIO;FREQUENCE
432Hz Radio;http://100radio-albi.ice.infomaniak.ch/100radio-albi-128.mp3
4U Radios - All Funky Classics;http://streaming.radionomy.com/AxelAime432Hz
666;http://streaming.radionomy.com/4U-Funky-Classics
Addict Alternative;http://radio666.net:8000
Addict Lounge;http://stream1.addictradio.net/addictalternative.mp3
Addict Rock;http://stream1.addictradio.net/addictlounge.mp3
Addict Star;http://stream1.addictradio.net/addictrock.mp3
Ado FM;http://stream1.addictradio.net/addictstar.mp3
Aleo;http://start-adofm.ice.infomaniak.ch/start-adofm-high.mp3
Aligre FM (Paris. Aligre FM);http://vt-net.org:8056
Alouette;http://aligrefm.org/aligrefm.m3u
Alpes 1 Gap;http://alouette.ice.infomaniak.ch/alouette-high.mp3
Alpes 1 Grenoble;http://alpes1gap.ice.infomaniak.ch/alpes1gap-high.mp3 
Alta Canzona Corsa;http://alpes1grenoble.ice.infomaniak.ch/alpes1grenoble-high.mp3
Alta Frequenza;https://altacanzona.streamakaci.com/altacanzona.mp3
Aufilduson80s;https://altafrequenza.streamakaci.com/altafrequenza.mp3
Arvorig FM;http://diffusion.lafrap.fr/alternantes.ogg
Bayou Blue Radio;http://arvorig-fm.online.stalig.net/live.mp3
Beur FM;http://bayoublueradio.com:8000/live
BFM;http://broadcast.infomaniak.ch/beurfm-high.mp3
Bide et Musique;http://bfmbusiness.cdn.dvmr.fr/bfmbusiness
Booster FM;http://relay1.bide-et-musique.com:9100
C-Lab (Radio Campus Rennes);http://giss.tv:8000/booster-tlse.mp3
CanalB;http://stream.c-lab.fr:8001/c-lab
C9 Radio;http://stream.levillage.org/canalb.m3u
Canal Sud;http://stream.c9.fr/c9.mp3
Chante France;http://91.224.148.160:8000/canalsud-live
Chérie FM;http://stream1.evasionfm.com/Chante_France
Cristal FM;http://cdn.nrjaudio.fm/audio1/fr/30201/mp3_128.mp3?origine=playerweb
Collines;http://radiocristal.ice.infomaniak.ch/radiocristal-high.mp3
Contact;http://collineslaradio.ice.infomaniak.ch/collineslaradio-128.mp3 
Couleur3.fr;http://broadcast.infomaniak.ch/radio-contact-high.mp3
DHits;http://broadcast.infomaniak.ch/rsr-couleur3-high.mp3
Divergence Fm;http://go.dhits.net/live.mp3
Djamradio ;http://ridibundus.divergence-fm.org:8000/divergence.mp3
Dogmazic/Radio Libre;http://ledjamradio.ice.infomaniak.ch/ledjamradio.mp3
Dreyeckland;http://radio.dogmazic.net:8000/stream.mp3
Euronews Radio;http://radiodreyeckland.ice.infomaniak.ch/radiodreyeckland-128.mp3
Elium Club Dance;http://euronews-01.ice.infomaniak.ch/euronews-01.aac
Europe 1;http://streaming.radionomy.com/Elium-ClubDance
Evasion FM;http://mp3lg3.scdn.arkena.com/10489/europe1.mp3
FG (FM);http://stream1.evasionfm.com/Yvelines
FG Vlaanderen Belgium;http://radiofg.impek.com/fg
FG Chic;http://radiofg.impek.com/fga
FG Club;http://radiofg.impek.com:80/fgc
FG Dance by Hakimakli;http://radiofg.impek.com/fg6
FG Non Stop;http://radiofg.impek.com/fgd
FG Starter;http://radiofg.impek.com/fge
FG Maxximun 90's;http://radiofg.impek.com:80/fgv
FG Underground;http://mp3lg3.tdf-cdn.com/6289/air_122002.mp3
FIP National;http://radiofg.impek.com/ufg
FIP Bordeaux;http://direct.fipradio.fr/live/fip-midfi.mp3
FIP Strasbourg;http://direct.fipradio.fr/live/fipbordeaux-midfi.mp3
FIP Nantes;http://direct.fipradio.fr/live/fipstrasbourg-midfi.mp3
FIP Rock;http://direct.fipradio.fr/live/fipnantes-midfi.mp3
FIP Jazz;http://direct.fipradio.fr/live/fip-webradio1.mp3
FIP Groove;http://direct.fipradio.fr/live/fip-webradio2.mp3
FIP Monde;http://direct.fipradio.fr/live/fip-webradio3.mp3
FIP Nouveautés;http://direct.fipradio.fr/live/fip-webradio4.mp3
FIP Reggae;http://direct.fipradio.fr/live/fip-webradio5.mp3
Fox Radio;http://direct.fipradio.fr/live/fip-webradio6.mp3
France 24;http://195.154.11.131:8000/foxradio
France Bleu Alsace;mms://stream1.france24.yacast.net/f24_livefr
France Bleu Elsass ;http://direct.francebleu.fr/live/fbalsace-midfi.mp3
France Bleu Armorique ;http://direct.francebleu.fr/live/Fbelsass-midfi.mp3
France Bleu Auxerre ;http://direct.francebleu.fr/live/fbarmorique-midfi.mp3
France Bleu Azur ;http://direct.francebleu.fr/live/fbauxerre-midfi.mp3
France Bleu Béarn ;http://direct.francebleu.fr/live/fbazur-midfi.mp3
France Bleu Belfort-Montbéliard ;http://direct.francebleu.fr/live/fbbearn-midfi.mp3
France Bleu Berry ;http://direct.francebleu.fr/live/fbbelfort-midfi.mp3
France Bleu Besançon ;http://direct.francebleu.fr/live/fbberry-midfi.mp3
France Bleu Bourgogne ;http://direct.francebleu.fr/live/fbbesancon-midfi.mp3
France Bleu Breizh Izel ;http://direct.francebleu.fr/live/fbbourgogne-midfi.mp3
France Bleu Champagne Ardenne ;http://direct.francebleu.fr/live/fbbreizizel-midfi.mp3
France Bleu Cotentin ;http://direct.francebleu.fr/live/fbchampagne-midfi.mp3
France Bleu Creuse ;http://direct.francebleu.fr/live/fbcotentin-midfi.mp3
France Bleu Drome Ardèche ;http://direct.francebleu.fr/live/fbcreuse-midfi.mp3
France Bleu Gard Lozère ;http://direct.francebleu.fr/live/fbdromeardeche-midfi.mp3
France Bleu Gascogne ;http://direct.francebleu.fr/live/fbgardlozere-midfi.mp3
France Bleu Gironde ;http://direct.francebleu.fr/live/fbgascogne-midfi.mp3
France Bleu Hérault ;http://direct.francebleu.fr/live/fbgironde-midfi.mp3
France Bleu Isère ;http://direct.francebleu.fr/live/fbherault-midfi.mp3
France Bleu La Rochelle ;http://direct.francebleu.fr/live/fbisere-midfi.mp3
France Bleu Limousin ;http://direct.francebleu.fr/live/fblarochelle-midfi.mp3
France Bleu Loire Océan ;http://direct.francebleu.fr/live/fblimousin-midfi.mp3
France Bleu Lorraine Nord ;http://direct.francebleu.fr/live/fbloireocean-midfi.mp3
France Bleu Maine ;http://direct.francebleu.fr/live/fblorrainenord-midfi.mp3
France Bleu Mayenne ;http://direct.francebleu.fr/live/fbmaine-midfi.mp3
France Bleu Nord ;http://direct.francebleu.fr/live/fbmayenne-midfi.mp3
France Bleu Normandie (Calvados - Orne) ;http://direct.francebleu.fr/live/fbnord-midfi.mp3
France Bleu Normandie (Seine-Maritime - Eure) ;http://direct.francebleu.fr/live/fbbassenormandie-midfi.mp3
France Bleu Orléans ;http://direct.francebleu.fr/live/fbhautenormandie-midfi.mp3
France Bleu Paris ;http://direct.francebleu.fr/live/fborleans-midfi.mp3
France Bleu Pays Basque ;http://direct.francebleu.fr/live/fb1071-midfi.mp3
France Bleu Pays d'Auvergne ;http://direct.francebleu.fr/live/fbpaysbasque-midfi.mp3
France Bleu Pays de Savoie ;http://direct.francebleu.fr/live/fbpaysdauvergne-midfi.mp3
France Bleu Périgord ;http://direct.francebleu.fr/live/fbpaysdesavoie-midfi.mp3
France Bleu Picardie ;http://direct.francebleu.fr/live/fbperigord-midfi.mp3
France Bleu Poitou ;http://direct.francebleu.fr/live/fbpicardie-midfi.mp3
France Bleu Provence ;http://direct.francebleu.fr/live/fbpoitou-midfi.mp3
France Bleu RCFM Frequenza Mora ;http://direct.francebleu.fr/live/fbprovence-midfi.mp3
France Bleu Roussillon ;http://direct.francebleu.fr/live/fbfrequenzamora-midfi.mp3
France Bleu Saint-Etienne Loire ;http://direct.francebleu.fr/live/fbroussillon-midfi.mp3
France Bleu Sud Lorraine ;http://direct.francebleu.fr/live/fbstetienne-midfi.mp3
France Bleu Toulouse ;http://direct.francebleu.fr/live/fbsudlorraine-midfi.mp3
France Bleu Touraine ;http://direct.francebleu.fr/live/fbtoulouse-midfi.mp3
France Bleu Vaucluse ;http://direct.francebleu.fr/live/fbtouraine-midfi.mp3
France Culture ;http://direct.francebleu.fr/live/fbvaucluse-midfi.mp3
France Info;http://direct.franceculture.fr/live/franceculture-midfi.mp3
France Inter;http://direct.franceinfo.fr/live/franceinfo-midfi.mp3
France Musique;http://direct.franceinter.fr/live/franceinter-midfi.mp3
French Kiss FM;http://direct.francemusique.fr/live/francemusique-midfi.mp3
Fréquence Jazz;http://178.63.62.145/;stream.mp3
Frequence Luz;http://broadcast.infomaniak.ch/frequencejazz-high.mp3
Fréquence Paris Plurielle;http://www.frequenceluz.com:8000/mobile
Frequence Plus;http://radio.toile-libre.org:8000/fpp.mp3
Frequence3;http://freqplus.ice.infomaniak.ch/freqplus-high.mp3
Fun Radio France;http://hd.stream.frequence3.net/frequence3-128.mp3
Fuzzy & Groovy Rock Radio;http://streaming.radio.funradio.fr:80/fun-1-44-128
Galaxie FM 95.30;http://listen.radionomy.com/fuzzy-and-groovy.m3u
GENERATION SOUL DISCO FUNK - La Référence Soul;http://91.121.22.39:8010/listen.pls
Generations FM;http://www.generationdiscofunk.com/pls/hd.m3u
Radiogalere FM88.4 Marseille;http://generationfm.ice.infomaniak.ch/generationfm-high.mp3
Graffiti Urban-Radio 88.6 FM La Roche sur Yon;http://www.radiogalere.org:8080/galere.mp3
HAG FM;http://www.urban-radio.com/128.m3u?PHPSESSID=d56d81aa478734fed860444e4f83bbd1
Happy FM;http://213.246.51.78:9290/;stream.mp3
Hit West;http://happyfm.ice.infomaniak.ch/happyfm-128.mp3
Hotmix Radio;http://broadcast.infomaniak.ch/hitwest-high.mp3
Hotmix Radio 80's;http://streamingads.hotmixradio.fm/hotmixradio-dance-128.mp3
Hotmix Radio 90's;http://streamingads.hotmixradio.fm/hotmixradio-80-128.mp3
Hotmix Radio Funky;http://streamingads.hotmixradio.fm/hotmixradio-90-128.mp3
Ici & Maintenant !;http://streaming.hotmixradio.fm/hotmixradio-funky-128.mp3
idFM Radio Enghien;http://radio.rim952.fr:8000/stream.mp3
Intensité;http://live.idfm98.fr:8000/idfm.m3u
Jazz Radio;http://intensite.net:9010/listen.pls
JetFm (Nantes);http://jazzradio.ice.infomaniak.ch/jazzradio-high.mp3
K6 FM;http://80.82.229.202:8000/jetfm.mp3
Radio Kerne;http://k6fm.ice.infomaniak.ch/k6fm-64.aac
Kiss FM;http://kerne.online.stalig.net/live.mp3
kisswestcoast;http://kissfm2.ice.infomaniak.ch/kissfm2-128.mp3
La Clé des Ondes (Bordeaux. La Clé des Ondes);http://kisswestcoast.ice.infomaniak.ch/kisswestcoast-64.aac
Latina;http://radio.lacdo.org/stream
L'Eko des Garrigues (Montpellier. Eko des garrigues);http://broadcast.infomaniak.net/start-latina-high.mp3
Le Mouv' ;http://91.121.159.124:8000/eko-des-garrigues-256k.ogg
Le Mouv' Xtra;http://direct.mouv.fr/live/mouv-midfi.mp3
Let's Go Zik;http://direct.mouv.fr/live/mouvxtra-midfi.mp3
Radio Liberté;http://stream.letsgozik.com:8000/letsgozik
Libre à toi (pro logiciels libres);http://radiolibertes.ice.infomaniak.ch/radiolibertes-128.mp3
Lor'FM;http://audio.libre-a-toi.org:8000/voixdulat_ogg
Maxi France;http://lorfm.ice.infomaniak.ch/lorfm-128.mp3
MBS Classic Gold;http://stream.maxifrance.fr:8358/stream
Mediterraneo Smooth Jazz ;http://stream1.evasionfm.com/mbs
Morow - Rock Progressif;http://streaming.radionomy.com/Mediterraneo-SMOOTHJAZZ
MFM;http://stream.fr.morow.com:8080/morow_med.mp3
Mixx Radio;http://mfm.ice.infomaniak.ch/mfm-128.mp3
Monte Carlo Doualiya (Anciennement RMC Moyen Orient);http://mixxfmfr.ice.infomaniak.ch/mixxfmfr-192.mp3 
Musical Spa Radio;http://live02.mc-doualiya.com/mc-doualiya.mp3
Néoplanète;http://streaming.radionomy.com/MusicalSpaRadio
Nostalgie;http://streaming.radionomy.com/Neoplanete
NRJ;http://cdn.nrjaudio.fm/audio1/fr/30601/mp3_128.mp3?origine=playerweb
NEO;http://cdn.nrjaudio.fm/audio1/fr/30001/mp3_128.mp3?origine=playernrj
O2 Radio (Bordeaux);http://stream.radioneo.org:8000/
Océane Fm;http://91.121.176.26:7900/listen.pls
OÜI FM;http://oceanefm.ice.infomaniak.ch/oceanefm-128.mp3
OÜI FM Alternatif;http://stream.ouifm.fr/ouifm-high.mp3
OÜI FM Classic Rock;http://alternatif.stream.ouifm.fr/ouifm2.mp3
OÜI FM Blues'n'Rock;http://classicrock.stream.ouifm.fr/ouifm3.mp3
OÜI FM Rock indé;http://bluesnrock.stream.ouifm.fr/ouifmbluesnrock-128.mp3
OÜI FM Ganja;http://rockinde.stream.ouifm.fr/ouifm5.mp3
Guadeloupe 1ère;http://ganja.stream.ouifm.fr/ouifmganja-128.mp3
Guyane 1ère;http://radios.la1ere.fr/guadeloupe
Martinique 1ère;http://radios.la1ere.fr/guyane
Mayotte 1ère;http://radios.la1ere.fr/martinique
Nouvelle Calédonie 1ère;http://radios.la1ere.fr/mayotte
Polynésie 1ère;http://radios.la1ere.fr/nouvellecaledonie
Réunion 1ère;http://radios.la1ere.fr/polynesie
Saint-Pierre-et-Miquelon 1ère;http://radios.la1ere.fr/reunion
Wallis et Futuna 1ère;http://radios.la1ere.fr/saintpierremiquelon
Oxy.Radio/Radio Libre ;http://radios.la1ere.fr/wallisfutuna
Podradio;http://www.oxyradio.net:8000/test.mp3
Plum fm;http://radio.podradio.fr:8000/adsl
Prun'92Fm;http://plumfm.online.stalig.net/live.mp3
Radio Activ' (radio associative de St Brieuc qui a rejoint ferarock);http://80.82.229.202:8000/streamprun
Radio87;http://stream.radio-activ.com
Radio Arc-en-Ciel Strasbourg;http://live2.radio87.fr
Radio Campus Amiens;http://str0.creacast.com/arcencielweb
Radio Campus Angers;http://www.radiocampus.fr:8000/amiens
Radio Campus Bordeaux;http://80.82.229.202/rca
Radio Campus Clermont;http://www.radiocampus.fr:8000/campus-bordeaux
Radio Campus Grenoble;http://campus.abeille.com:8000/campus
Radio Campus Lille;http://live.campusgrenoble.org:9000/rcg112
Radio Campus Orléans;http://radiocampuslille.ice.infomaniak.ch:80/radiocampuslille-128 MP3
Radio Campus Toulouse;http://orleans.radiocampus.org:8000/stream_rco
Radio Campus Tours;http://live.radio-campus.org:8000/toulouse
R-One Radio :: Listen Hits !;http://37.59.38.203:8000/webradiocampustours
Radio Bienvenue Strasbourg;http://streaming.radionomy.com/R-One-Radio
Radio Canut;http://www4.radiorbs.com:8000/RBS
Radio Classique;http://live.francra.org:8000/radiocanut
Radio Courtoisie;http://radioclassique.ice.infomaniak.ch/radioclassique-high.mp3
Radio Cristal;http://www.tv-radio.com/cgi-bin/tagger.pl?tag=site&amp;metafile=courtoisie/courtoisie-20k.asx
Radio Dio;http://stream.inovacast.fr:8888/stream
Radio EFM;http://www.hosting-serv.com:9160
Radio Espace;http://efm.elliptic.fr:8030/
Radio Flemme;http://radioespace.ice.infomaniak.ch/radioespace-high.mp3
Radio Gerard;http://str45.streamakaci.com:8014/
Radio Grenouille;http://188.165.236.217:8000/
Radio Junior;http://live.radiogrenouille.com/live
Radio serenity;http://213.186.61.62:8080/listen.pls
Radio Kreiz Breizh;http://streaming.radionomy.com/wiccaradio
Radio Larzac;http://rkb.online.stalig.net/live.mp3
Radio Latitude Troyes;http://stream.radiolarzac.org:8000/radiolarzac
Radio Libertaire;http://latitude.ice.infomaniak.ch/latitude-128.mp3
Radio María - France;http://ecoutez.radio-libertaire.org/radiolib.m3u
Radio Maritima;http://heberg.radioludo.com:8003/stream
Radio Metropolys;http://radiomaritima.streamakaci.com/radiomaritima.mp3
Radio Meuh;http://str0.creacast.com/metropolys
Radio Mont Blanc;http://radiomeuh.ice.infomaniak.ch/radiomeuh-128.mp3
Radio Nova;http://radiomontblanc1.ice.infomaniak.ch/radiomontblanc1-128.mp3
Radio RVA;http://broadcast.infomaniak.net/radionova-high.mp3
Radio Salve Regina;http://rva.ice.infomaniak.ch/rva-high.mp3
Radio Scoop Bourg en Bresse;http://radiosalveregina.no-ip.org:8000/listen.pls
Radio Scoop Clermont-Ferrand;http://radioscoopbourg-en-bresse.ice.infomaniak.ch/radioscoop-bourg-128.mp3
Radio Scoop Lyon;http://radioscoopclermont-ferrand.ice.infomaniak.ch/radioscoop-clermont-128.mp3
Radio Scoop Saint Etienne;http://radioscooplyon.ice.infomaniak.ch/radioscoop-lyon-128.mp3
Radio Sensations;http://radioscoopsaintetienne.ice.infomaniak.ch/radioscoop-stetienne-128.mp3
Radio SoLatino;http://sensations.ice.infomaniak.ch/sensations.mp3
Radio Star;http://94.23.26.193:9367/stream/2/;
Radio TeenTaal;https://www.radioking.com/play/radio-star
Radio Zinzine;http://www.radioteentaal.com:8000
Radio Zinzine Aix;http://91.121.65.189:8000/3
Rancho FM;http://91.121.65.189:8000/zinzine-aix
Radio Dreyeckland Libre 68 (RDL68);http://streaming.radionomy.com/rancho
RFI Afrique;http://sv3.vestaradio.com:4060/;stream.mp3
RFI Monde;http://live02.rfi.fr/rfiafrique-96k.mp3
RFM;http://live02.rfi.fr/rfimonde-96k.mp3
RFM Night Fever;http://rfm-live-mp3-128.scdn.arkena.com/rfm.mp3
RFM Party 80;http://rfm-wr2-mp3-128.scdn.arkena.com/rfm.mp3
Rire et chansons;http://rfm-wr4-mp3-128.scdn.arkena.com/rfm.mp3
Rire et chansons 100% Sketches;http://cdn.nrjaudio.fm/audio1/fr/30401/mp3_128.mp3?origine=playerweb
RMC Info Talk Sport;http://185.52.127.157/fr/30407/mp3_128.mp3?origine=fluxradios
RMV;http://rmc.bfmtv.com/rmcinfo-mp3
RTL;http://91.121.7.61:8200/
RTL2;http://streaming.radio.rtl.fr/rtl-1-44-128
RTS FM;http://streaming.radio.rtl2.fr:80/rtl2-1-44-96
Radio Caroline;http://stream.rtsfm.com:8000/;stream/1
Radio-Bro-Gwened;http://195.154.113.150:8000/caroline.mp3
Revolution Sound Records (collectif d'artistes du mouvement libre);http://rbg.online.stalig.net/live.mp3
Sing Sing;http://195.154.156.183/radio/411/stream/1670
Skyrock;http://stream.sing-sing.org:8000/singsing128
SOL-FM 100.7;http://icecast.skyrock.net/s/natio_mp3_128k
Soleil de Ré;http://stric6.streamakaci.com/solfm64.mp3
SpuTnik France;http://91.121.144.141:8000/stream.mp3
Sud Radio;https://nfw.ria.ru/flv/audio.aspx?ID=6854085&amp;type=mp3
Sun FM Le son Unique (radio FM) www.lesonunique.com;https://start-sud.ice.infomaniak.ch/start-sud-high.mp3
Sweet FM;http://www.lesonunique.com/sunhd.m3u
Swing FM;http://dedibox-linux.sweetfm.fr:8000/lms
Tendance Ouest;http://swingfm.ice.infomaniak.ch:80/swingfm-128
Tonic Radio;http://streaming.tendanceouest.com/tomanche.mp3
Top Music;http://hit-sport.ice.infomaniak.ch/hit-sport-high.mp3
TSF Jazz;http://str0.creacast.com/topmusic1
Vibration;http://broadcast.infomaniak.net/tsfjazz-high.mp3
Virgin Radio;http://vibration.ice.infomaniak.ch/vibration-high.mp3
Vmix - Accent Mix;http://mp3lg4.tdf-cdn.com/9243/lag_164753.mp3
Vmix - Afternoon Mix;http://www.vmix.fr/live/acc.m3u
Vmix - Late Mix;http://www.vmix.fr/live/aft.m3u
Voce Nustrale;http://www.vmix.fr/live/lat.m3u
Voltage 96.9 FM;http://213.186.61.62:8000/;
Welsass;http://broadcast.infomaniak.net/start-voltage-high.mp3
Wit FM;http://www.welsass.fr/play.m3u
Ze Radio;http://broadcast.infomaniak.net/start-witfm-high.mp3
ZJM;http://91.121.174.141:8676/;stream
" > "$1"
}

# gestion des parametres
conf_path="$HOME/.config/kiradio"
if [ ! -d "$conf_path" ] ; then
	mkdir -p "$conf_path"
fi

# radios.m3u8
fichier_radios="$conf_path/radio.csv"

# echo "chargement ligne $LINENO"
splashScreen () {
echo -e "${enJaune}${enGras}
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMWo;,cKMMMMMWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMM:     Nx'.    .XMkOWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMO.   cK.      lMx   :XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMNdoo;  .;odxxMN.     lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMN.    .0MMMMMMMMWd    'Xo'.;OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMM:    ,WMMMMMMMMMMMX.  0;     XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMM.    0MMMMMMMMMMMMMo  c0'  .lMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMOOKXNWMMMMMMMMMMMMMc   .xMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMM0..   0MMMMMMMMMMMx     0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMM:     ;OWMMMMMNXWc    xMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMk.      .'''.  cNX;.0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMWxododo'       .KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMN'   .Ox';:lxKMMMMMMMMMMMMMMMMMMMMMMMNoOMMModMMMMMMMMMMMMMM
MMMd'  .oWMx.  :KK     dx:   ...;OMMMMMMMMMMMMMMMMMMMd. oMMX  NMMMMMMMMMMMMM
MMMMN  0MMMW..KMMMXocl0MMM. kMMx  oMMMMMMMMMMMMMMMMMMMo oMMMkkMMMMMMMMMMMMMM
MMMMM  KMMM:'NMMMMMMMMMMMM' kMMMo  NMMMMMMMMMMMMMMMMMMx oMMMMMMMMMMMMMMMMMMM
MMMMM  KMW;,WMMMMMMMMMMMMM' kMMMO  KMMMMMMMMMMMMMMMMMMx oMMMMMMMMMMMMMMMMMMM
MMMMM  KN';WMMMMMMMKc.MMMM' kMMMd  NMMMWl,;.:NMMMMd,;', oMM0:.MMMMK:;.'kMMMM
MMMMM  O.:WMMMMMMMKc  MMMM' kMMK. oMMMM, WMd cMMMc.XMX. oM0c  MMMO kMW; oMMM
MMMMM    ;WMMMMMMMMM  MMMM' ;l, 'kMMMMM..MMX 'MMO xMMMl oMMM  MMW.'MMMN  KMM
MMMMM  d  ,WMMMMMMMM. MMMM' oO  OMMMMMM0KMXl 'MM, NMMMx oMMM  MMk lMMMM: lMM
MMMMM  K0  'WMMMMMMM. MMMM' kMd .XMMMMMM0,:k 'MM. MMMMx oMMM  MMl lMMMMd ;MM
MMMMM  KMK. .NMMMMMM. MMMM' kMM: .WMMMMl 0MN 'MM  NMMMx oMMM  MMl :MMMMk :MM
MMMMM  KMMX. .NMMMMM. MMMM' kMMW. cMMM0 :MMN 'MM. xMMMx oMMM  MMk .MMMMd xMM
MMMMW  KMMMX. .KMMMM. MMMM. kMMMK  xMMk ,MMk .WKo .NMMo cMMM  MMW. xMMM;.WMM
MMMNd  cNMMW:   lKW0  OWNO  ;XWMMO  cKX  .'l  'XW,  c:.  oWO  0WMK. xKl.0MMM
MMMkkkkkkWMKkkkkkkKkkkkXOkkkkkNMMM0kkkWXooXMkoNMMMx::O0lXMXkkkkXMMWd::xWMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
$nomlogiciel v $VERSION"
# sleep 1.2
	}
# echo "chargement ligne $LINENO"
initialiser_variables () {
	# COULEURS

	fdNoir='\033[40m'
	fdRouge='\033[41m'
	fdVert='\033[42m'
	fdJaune='\033[43m'
	fdBleu='\033[44m'
	fdRose='\033[45m'
	fdCyan='\033[46m'
	fdGris='\033[47m'
	# fdDefaut='\033[49m'

	enNoir='\033[30m'
	enRouge='\033[31m'
	enVert='\033[32m'
	enJaune='\033[33m'
	enBleu='\033[34m'
	enRose='\033[35m'
	enCyan='\033[36m'
	enGris='\033[37m'
	# enDefaut='\033[39m'

	enGras='\033[1m'
	enSouligner='\033[4m'
	enClignotant='\033[5m'
	enSurligner='\033[7m'
	enCache='\033[8m'

	enDefaut='\033[0m'

	# GENERALES
	nbre_radios=0
	nbre_page_radio=0

	la_pageRadio=1
	# sous_recherche=" "
	fichier_log=""

	tete_de_page=""
	pied_de_page=""

	# affiche les fréquences ou non
	bool_show_freq=false # bool_show_freq=true

} # fin de initialiser_variables
# echo "chargement ligne $LINENO"
# JOURNAL 
initialiser_journal () {
	fichier_log="$conf_path/$nomlogiciel.log"
	# #[ ! -f "$fichier_log" ] && \#
	> "$fichier_log" 
	journal "*******************initialisation*******************"
	journal "chargement"
	}
journal () {
	local NOW=$(date +%s.%N)
	local DIFF=$(echo "${NOW} - ${START}" | bc)
	echo -e "[${DIFF}] ------------------\n${@}" >> "${fichier_log}"
	# echo -e "$@" >> "$fichier_log"
	}

# FONCTIONS
# echo "chargement ligne $LINENO"

string_to_int (){
	LANG=C
	printf %.0f ${1/,/.}
	}
# echo "chargement ligne $LINENO"
_quitter () {
	journal "appel de : ${FUNCNAME} ${@}"
	# mettre ici tout ce qui sera nescessaire à la bonne fermeture
	# ...
	exit 0
	}
# echo "chargement ligne $LINENO"
pause () {
echo -e "	${enVert}${enGras}
			\r****************************************************************
			\rAppuyer sur une touche pour continuer...
			\r****************************************************************"
read -s -n 1
	}
# echo "chargement ligne $LINENO"
on_clear_terminal () {
	echo "${enDefaut}"
	reset > /dev/null
	}
# echo "chargement ligne $LINENO"


afficherMenuRadio () {
	# journal "appel de : ${FUNCNAME} ${@}"

	multiRadio=$1

tete_de_page="${enRouge}${enGras}$nomlogiciel v $VERSION
${enJaune}${enGras}-------------------------------------------"
	echo -e "$tete_de_page"

	for (( i=$(string_to_int $(($multiRadio-1))0); i<=$(string_to_int $(($multiRadio-1))9); i++ ))
	do
		[[ -n "${NOM_RADIO[$i]}" ]] && [ $i -ne 0 ] && \
			echo -en "${enVert}${enGras}$i ${enJaune}${enGras}: ${NOM_RADIO[$i]##*/} ${enDefaut}"
			# echo -e "${FREQUENCE[$i]}"
			if $bool_show_freq ; then echo -e "${FREQUENCE[$i]}" ; else echo -e "" ; fi

	done
pied_de_page="${enJaune}${enGras}-------------------------------------------
${enVert}${enGras}p${enJaune}${enGras}récédent\tpage $multiRadio/$nbre_page_radio\t\
${enVert}${enGras}s${enJaune}${enGras}uivant
${enDefaut}
${enVert}r*${enDefaut}${enJaune} : rechercher (rfrance pour france)
${enVert}Px${enDefaut}${enJaune} : page (x de 0 à $nbre_page_radio)
${enVert}vx${enDefaut}${enJaune} : volume (x de 0 % à 200 %)
${enVert}h et H${enDefaut}${enJaune} : aides
${enVert}q${enDefaut}${enJaune} : quitter
${enVert}k${enDefaut}${enJaune} : arrêter la musique (tuer VLC)
${enJaune}-------------------------------------------
${enJaune}${enGras}votre choix : ${enDefaut}"
	echo -en "$pied_de_page"
	}
# echo "chargement ligne $LINENO"

page_suivanteRadio () {
	# journal "appel de : ${FUNCNAME} ${@}"
	if [ $la_pageRadio -lt $nbre_page_radio ] ; then let la_pageRadio++ ; fi
	}
# echo "chargement ligne $LINENO"
page_precedenteRadio () {
	# journal "appel de : ${FUNCNAME} ${@}"
	if [ $la_pageRadio -gt 1 ] ; then let la_pageRadio-- ; fi
	}
# echo "chargement ligne $LINENO"
aller_a_la_pageRadio () {
	# journal "appel de : ${FUNCNAME} ${@}"
	# if [ $1 -gt 1 ] && [ $1 -lt $(echo "$nbre_page_radio + 1 "| bc) ] ; then let la_pageRadio=$1 ; fi
	if [ $1 -gt 0 ] && [[ $nbre_page_radio -ge $1 ]] ; then let la_pageRadio=$1 ; fi
	}
# echo "chargement ligne $LINENO"

infos_vlc () {
	# { sleep .3 ; echo "0000" ; sleep .3 ; echo "info" ; sleep .3 ; echo "stats" ; sleep .3 ; echo "get_title" ; } | telnet localhost 9999 ;
local out
	out=$({ sleep .3 ; echo "0000" ; sleep .3 ; echo "get_title" ;  sleep .3 ;} | telnet localhost 9999 ; 2> /dev/null)
	IFS=$'\n' out=( $out )
	on_clear_terminal

local le_lien="${out[6]##*> }"
# echo "le_lien=$le_lien"
local ok=0
local n=0

# IFS=$'\n' 
if [[ -n ${le_lien} ]] ; then
	local i
	for i in ${FREQUENCE[@]} ; do
		if [ $(echo $i | grep "${le_lien}") ] ; then 
			((ok++))
			# lien joué : 
			echo -e "radio en cours d'écoute :"
			echo -e "${enVert}${enGras}${le_lien}"
			echo -e "num $n : ${NOM_RADIO[$n]}${enDefaut}"
			# sleep 0.5
		fi
		((n++))
	done 
else
	echo -e "${enRouge}${enGras}erreurs : "
	echo -e "${enDefaut}${enGras}pas de lien retourné :\n"
	local temp ;for temp in ${out[@]} ; do echo $temp ; done
fi 
	}
# echo "chargement ligne $LINENO"
rechercher_radio () {
	echo "on recherche : $@"
	IFS=$'\n'

	local n=0
	local out
	local trouve=0
	# local i
	for i in ${NOM_RADIO[*]}
	do
		# [ -n "$out" ] && ((trouve++)) && echo -e "$n : $out"
		out=$(echo "$i" | grep -i "$@")
		[ $? -eq 0 ] && {
			((trouve++)) 
			echo -e "$n : $out"
			}
		((n++))
	done

	echo "$trouve radio(s) trouvée(s)"
	pause
	}
# echo "chargement ligne $LINENO"
ajouter_radio () {
local ajout
local nom
local freq
echo -en "${enJaune}${enGras}Ajouter une radio
${enVert}1 ${enJaune}- nom : 		$1
${enVert}2 ${enJaune}- adresse : 	$2
${enVert}3 ${enJaune}- valider
${enVert}autre - ${enJaune}Annuler
${enDefaut}choix : "
read -r -n 1 ajout
echo ""
case "$ajout" in
	# 0)		;;
	1)
		echo "Entrez un nom"
		read -r nom
		clear
		ajouter_radio "$nom" "$2"
		;;
	2)
		echo "Entrez une fréquence"
		read -r freq
		clear
		ajouter_radio "$1" "$freq"
		;;
	3)
		[ -n "$1" ] && [ -n "$2" ] && {
			echo "$1;$2" >> "$fichier_radios"
			charger_radios_csv "$fichier_radios"
			} || ajouter_radio
		;;
	*)	echo "Ajout - action annulée"	; pause ;;
esac

}
# echo "chargement ligne $LINENO"
voirFrequence () { if $bool_show_freq ; then bool_show_freq=false ; else bool_show_freq=true ; fi ; }
# echo "chargement ligne $LINENO"

charger_radios () {
if [ -f "$fichier_radios" ]
then
	charger_radios_csv "$fichier_radios"
else
	> "$fichier_radios" 
	echo -e "nom;frequence\n"
	remplir_radios_csv "$fichier_radios"
	# sleep .1
	charger_radios_csv "$fichier_radios"
fi
	}
# echo "chargement ligne $LINENO"
charger_radios_m3u8 () {
IFS=$'\n' list_radios=( $( < "$fichier_radios" ) )

n=0
for (( i=0; i<=((${#list_radios[@]}-1)); i++ )) ; do
	case "${list_radios[$i]}" in
		"#EXTINF:"*)
			nom_temp="$(echo "${list_radios[$i]}" | cut -d, -f2)"
			NOM_RADIO[$n]="${nom_temp}"
			((n++))
			;;

		"http:"*|"https:"*|"mms:"*)
			FREQUENCE[$n]="${list_radios[$i]}"
			;;

		*)	;;
	esac
done

nbre_radios=${#NOM_RADIO[@]}
nbre_page_radio=$(( 1+$nbre_radios/10 ))
}
# echo "chargement ligne $LINENO"
JouerRadio () {
	tuer_vlc
	sleep .5
	cvlc -I telnet --telnet-password=0000 --telnet-port=9999 ${FREQUENCE[$1]}  2> /dev/null &
	}
# echo "chargement ligne $LINENO"
volume () {
	{ sleep .3 ; echo "0000" ; sleep .3 ; echo "volume $1" ; } | telnet localhost 9999 ;
	}
# echo "chargement ligne $LINENO"
tuer_vlc () { killall vlc 2> /dev/null ; }
# echo "chargement ligne $LINENO"

parser_choix_radio () {
	# journal "appel de : ${FUNCNAME} ${@}"
	case "$choixRadio" in
		0) 
			journal "choixRadio=${choixRadio}\nTODO : choisir une radio" ; 
			echo "# rien à faire encore avec les 0 des radios ;°)"
			sleep 2
			# pause ; 
			;;

		[1-9]|[0-9][0-9]|[0-9][0-9][0-9]) 
			journal "choixRadio=${choixRadio}\n${NOM_RADIO[$choixRadio]}"
			la_radio="${NOM_RADIO[$choixRadio]}"
			JouerRadio "$choixRadio" 
			# pause
			;;

		h|a|aide)
				_aide ; pause ;;
		H)		_aide2 ; pause ;;
		f)		voirFrequence ;;

		s)		page_suivanteRadio ;;
		p)		page_precedenteRadio ;;
		P*)		aller_a_la_pageRadio "${choixRadio#*P}" ;;

		v*)		volume "${choixRadio#*v}" ;;
		i)		infos_vlc ; pause ;;
		k)		tuer_vlc ;;

		z)		charger_radios_csv "$fichier_radios" ;;
		E)		gedit "$fichier_radios" & ;;

		A)		ajouter_radio ;;
		r*)		rechercher_radio "${choixRadio#*r}" ;;

		q)		_quitter ;;
		# Q)		gedit "$fichier_radios" & ;;
		
		*)		;;
	esac
	
	}
# echo "chargement ligne $LINENO"
mainRadio () {
	# journal "appel de : ${FUNCNAME} ${@}"
	on_clear_terminal
	afficherMenuRadio $la_pageRadio

	# #saisie du choixRadio
	read -r choixRadio 

	on_clear_terminal
	parser_choix_radio
	mainRadio
	}
# echo "chargement ligne $LINENO"

_aide2 () {
echo -e "${enJaune}${enGras}"
cat << FIN 
je cherche à faire des choses simples, 
communes, lisible par un synthétiseur vocal, 
... et qui tiennent dans le temps.
... donc exit les interfaces graphiques :
des menus en texte et de la couleur pour attirer l'oeil sur l'essentiel
le moins de fonctions possible, une seule façon d'y accéder
et comme rien n'est compilé, facile à adapter.

ici c'est un joueur de liens avec VLC (un web radio player).

A partir d'un fichier radio.m3u8, 
on obtient automatiquement une liste de radios.
cette liste est par 10 lignes, on passe d'une page à une autre avec p ou s
pour précédent ou suivant, on accède à une page avec Px...

si on ferme le script, la musique continue.
pour l'arrêter, il suffit de relancer le script et d'utiliser k
ou tuer vlc (donc il est possible d'utiliser ce script à travers un tunnel ssh)
quelques touches et explications
[OPTIONS] : attention à la casse
h)	_aide ; pause	
H)	_aide2 ; pause	
f)	voirFrequence	 affiche les frequences à côté du nom dans la liste

s)	page_suivanteRadio	
p)	page_precedenteRadio	
P*)	aller_a_la_pageRadio "${choixRadio#*P}"	
aller directement à la page * [pe : P12]

v*)	volume	modifier le volume de vlc en % [pe : v80]
i)	infos_vlc	donne la station jouée par vlc
k)	tuer_vlc	ferme vlc

z)	charger_radios_csv "$fichier_radios" 	recharge le fichier radio
E)	gedit "$fichier_radios" &	éditer le fichier radio

A)	ajouter_radio	module d'ajout d'une radio
r*)	rechercher_radio "${choixRadio#*r}"	 [pe : rfrance pour france]

q)	_quitter

FIN
	}
_aide () {
echo -e "${enJaune}${enGras}"
cat << FIN 
[OPTIONS] :
h)	_aide ; pause	
H)	_aide2 ; pause	
f)	voirFrequence	

s)	page_suivanteRadio	
p)	page_precedenteRadio	
P*)	aller_a_la_pageRadio "${choixRadio#*P}"	

v*)	volume "${choixRadio#*v}"	
i)	infos_vlc ; pause	
k)	tuer_vlc	

z)	charger_radios_csv "$fichier_radios"	
E)	gedit "$fichier_radios" &	

A)	ajouter_radio	
r*)	rechercher_radio "${choixRadio#*r}"	

q)	_quitter
FIN
	}

# echo "chargement ligne $LINENO"

initialiser_variables
splashScreen
initialiser_journal
charger_radios

mainRadio

exit 0

ça reste un peu brouillon et j'ai mélangé les données et le code (qui seront séparés dans une prochaine version), l'idée étant de tout faire tenir dans un seul fichier.
NB : la liste des radios est prise depuis la doc

pour tester :
créer le dossier bin personnel :

mkdir $HOME/bin

créer le fichier :

> $HOME/bin/kiradio

l'éditer et mettre le code précédent dedans

gedit $HOME/bin/kiradio

le rendre exécutable

chmod +x $HOME/bin/kiradio

lancer le script :

kiradio

les prochaines améliorations utiliseront screen pour enfermer le script comme un service et pouvoir y accéder depuis la machine locale ou d'autres machines en réseau via ssh...
je n'ai pas encore potasser cette partie
vos commentaires sont les bienvenus
à suivre...

Dernière modification par kholo (Le 15/11/2017, à 18:52)

Hors ligne

#2 Le 15/11/2017, à 13:45

Watael

Re : [tuto bash] dossiers fichiers et listes ; lecture de web radios vlc

salut,

$ ligne='432Hz Radio;http://100radio-albi.ice.infomaniak.ch/100radio-albi-128.mp3'
$ l=0
$ nom[$l]="${ligne%;*}"
$ echo ${nom[0]}
432Hz Radio
$ freq[$l]="${ligne#*;}"
$ echo ${freq[0]}
http://100radio-albi.ice.infomaniak.ch/100radio-albi-128.mp3

ou

IFS=';' read n f r <<<"$ligne"
nom[$l]="$n"
freq[$l]="$f"

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 15/11/2017, à 18:33

kholo

Re : [tuto bash] dossiers fichiers et listes ; lecture de web radios vlc

oui bien sûr... encore une fois merci watael !
ça va rentrer, je te le dis moi qu'ça va rentrer !!!
donc en une passe sans les variables

IFS=';' read NOM_RADIO[$l] FREQUENCE[$l] <<<"$ligne"

fonction corrigée :

charger_radios_csv () {
	local tete="chargement des radios"
	NOM_RADIO=()
	FREQUENCE=()
	local ligne 

	local l=0
	while read ligne
	do
		IFS=';' read NOM_RADIO[$l] FREQUENCE[$l] <<<"$ligne"
		echo -en "\r$tete : ${NOM_RADIO[$l]}"
		sleep .01 # pour prendre le temps de voir le chargement
		((l++))
	done < "$1"
	nbre_radios=$(($l-2))
	nbre_page_radio=$(( 1+$nbre_radios/10 ))

	echo "$nbre_radios radio(s) chargée(s)..."
	}

je passe en 0.019 !

Dernière modification par kholo (Le 15/11/2017, à 18:52)

Hors ligne

#4 Le 15/11/2017, à 19:36

Watael

Re : [tuto bash] dossiers fichiers et listes ; lecture de web radios vlc

et je vais radoter : les noms des variables utilisateurs ne doivent pas être tout en majuscules, même les tableaux.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#5 Le 15/11/2017, à 19:56

grandtoubab

Re : [tuto bash] dossiers fichiers et listes ; lecture de web radios vlc

Salut
Je me contente de ça

:~/Musique$ cat Radios.xspf
<?xml version="1.0" encoding="UTF-8"?>
<playlist xmlns="http://xspf.org/ns/0/" xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/" version="1">
	<title>Liste de Radio</title>
	<trackList>
		<track>
			<location>http://direct.franceinter.fr/live/franceinter-midfi.mp3</location>
			<title>France-Inter</title>
			<image>https://www.franceinter.fr/img/logo-france-inter-reseaux.jpg</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>0</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
		<track>
			<location>http://african1paris.ice.infomaniak.ch/african1paris-128.mp3</location>
			<title>Africa N°1 Paris</title>
			<image>http://www.africa1.com/squelettes/images/logo_africa.jpg</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>1</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
		<track>
			<location>http://e1-live-mp3-128.scdn.arkena.com/europe1.mp3</location>
			<title>Europe 1</title>
			<image>http://cdn1-europe1.new2.ladmedia.fr/bundles/europe1front/images/logo_europe1.png</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>2</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
		<track>
			<location>http://direct.francebleu.fr/live/fb1071-midfi.mp3</location>
			<title>France-Bleue-107.1</title>
			<image>https://www.francebleu.fr/img/logo_francebleu.png</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>3</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
		<track>
			<location>http://radioclassique.ice.infomaniak.ch/radioclassique-high.mp3</location>
			<title>Radio Classique</title>
			<image>https://www.radioclassique.fr/wp-content/themes/radioclassique/favicons/apple-touch-icon.png</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>4</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
		<track>
			<location>http://listen.radionomy.com/radio-wassoulou-internationale?d=YWQ9cmFkaW9ubzUmcmVmZXJlcj1odHRwJTNBJTJGJTJGcmFkaW8td2Fzc291bG91LWludGVybmF0aW9uYWxlLnBsYXl0aGVyYWRpby5jb20lMkY=</location>
			<image>http://static.radio.fr/images/broadcasts/8d/1d/8205/c175.png</image>
			<title>Radio Wassoulou Internationale</title>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>5</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
		<track>
			<location>http://live02.rfi.fr/rfimonde-64.mp3</location>
			<title>RFI Monde</title>
			<image>http://www.rfi.fr/bundles/aefhermesrfi/img/rfi-logo.png</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>6</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
		<track>
			<location>http://direct.fipradio.fr/live/fip-midfi.mp3</location>
			<title>FIP</title>
			<image>http://www.fipradio.fr/sites/default/files/fip-quadri-filet.png</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>7</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
		<track>
			<location>http://jazzradio.ice.infomaniak.ch/jazzradio-high.mp3</location>
			<title>Jazz</title>
			<image>http://www.jazzradio.fr/media/pochette.jpg</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>8</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
		<track>
			<location>HTTP://icepe3.infomaniak.ch:80/voltagelounge-128.mp3</location>
			<title>Voltage Lounge</title>
			<image>http://static.radio.fr/images/broadcasts/e1/7f/38886/3/c175.png</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>9</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
		<track>
			<location>http://zenorad.io:10210/;214238468346843stream.nsv</location>
			<title>Radio Badenya Mali</title>
			<image>http://static.radio.fr/images/broadcasts/2d/a8/30927/c175.png</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>10</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
		<track>
			<location>http://213.136.96.14:8000/nostalgie.mp3</location>
			<title>Nostalgie Côte d'Ivoire</title>
			<image>http://www.nostalgie.ci/sites/all/themes/Nostalgietheme/logo.png</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>11</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
		<track>
			<location>http://streaming.radio.rtl.fr/rtl-1-44-96</location>
			<title>RTL</title>
			<image>http://static.rtl.fr/versions/www/6.0.180/img/apple-touch-icon-300x300-precomposed.png</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>12</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
		<track>
			<location>http://direct.fipradio.fr/live/fip-webradio5.mp3</location>
			<title>FIP Nouveauté</title>
			<image>http://www.fipradio.fr/sites/default/files/asset/images/2016/06/webradio-nouveau-small.png</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>13</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
		<track>
			<location>http://direct.fipradio.fr/live/fip-webradio2.mp3</location>
			<title>FIP Jazz</title>
			<image>http://www.fipradio.fr/sites/default/files/asset/images/2016/06/webradio-jazz-small.png</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>14</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
		<track>
			<location>http://direct.fipradio.fr/live/fip-webradio4.mp3</location>
			<title>FIP Monde</title>
			<image>http://www.fipradio.fr/sites/default/files/asset/images/2016/06/webradio-monde-small.png</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>15</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
		<track>
			<location>http://direct.franceculture.fr/live/franceculture-midfi.mp3</location>
			<title>France Culture</title>
			<image>https://www.franceculture.fr/favicons/android-icon-192x192.png</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>16</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
		<track>
			<location>http://stream.srg-ssr.ch/m/rsc_fr/aacp_96</location>
			<title>Radio Suisse Classique</title>
			<image>http://www.radioswissclassic.ch/social-media/rsc-web.png</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>17</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
		<track>
			<location>http://sc6.shoutcaststreaming.us:8016</location>
			<title>Nippon Blue Heron Radio</title>
			<image>https://pbs.twimg.com/profile_images/1314050416/AOSAGIGUNLOGO512_normal.png</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>18</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
		<track>
			<location>http://radio2.chinesemusicworld.com/</location>
			<title>Chinese Classical Music</title>
			<image>http://chinesemusicworld.com/wp-content/uploads/2012/03/logo.png</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>19</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
		<track>
			<location>http://live02.rfi.fr/rfiafrique-64.mp3</location>
			<title>RFI Afrique</title>
			<image>https://s14-eu5.ixquick.com/cgi-bin/serveimage?url=http%3A%2F%2Ft2.gstatic.com%2Fimages%3Fq%3Dtbn%3AANd9GcRPGBeRVxzedNrxAzl-1Fcvt7LttIPExpTs-Y7PertiO_zLSElA&amp;sp=9f5562fff0596efd5a1d173314c4db78</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>20</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
		<track>
			<location>http://jazzladiescrooners.ice.infomaniak.ch/jazzladiescrooners-high.mp3</location>
			<title>Jazz Ladies-Crooners</title>
			<image>http://www.jazzradio.fr/media/radio/thumb/90x90_ladies-and-crooners.png</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>21</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
<track>
			<location>http://rcf.streamakaci.com/rcf.mp3</location>
			<title>Radio Chrétienne Francophone</title>
			<image>https://rcf.fr/sites/all/themes/rcf_main/tpl/img/logo.png</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>22</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
<track>
			<location>http://chai5she.cdn.dvmr.fr/rmcinfo</location>
			<title>RMC</title>
			<image>http://static.radio.fr/images/broadcasts/8d/55/1935/c175.png</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>23</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
<track>
			<location>http://pulsarouagadougou.ice.infomaniak.ch/pulsarouagadougou-64.mp3</location>
			<title>Pulsar Burkina</title>
			<image>https://cdn-radiotime-logos.tunein.com/s16115q.png</image>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>24</vlc:id>
				<vlc:option>network-caching=30000</vlc:option>
			</extension>
		</track>
</trackList>
	<extension application="http://www.videolan.org/vlc/playlist/0">
			<vlc:item tid="0"/>
			<vlc:item tid="1"/>
			<vlc:item tid="2"/>
			<vlc:item tid="3"/>
			<vlc:item tid="4"/>
			<vlc:item tid="5"/>
			<vlc:item tid="6"/>
			<vlc:item tid="7"/>
			<vlc:item tid="8"/>
			<vlc:item tid="9"/>
			<vlc:item tid="10"/>
			<vlc:item tid="11"/>
			<vlc:item tid="12"/>
			<vlc:item tid="13"/>
			<vlc:item tid="14"/>
			<vlc:item tid="15"/>
			<vlc:item tid="16"/>
			<vlc:item tid="17"/>
			<vlc:item tid="18"/>
			<vlc:item tid="19"/>
			<vlc:item tid="20"/>
			<vlc:item tid="21"/>
			<vlc:item tid="22"/>
			<vlc:item tid="23"/>
                        <vlc:item tid="24"/>
	</extension>
</playlist>

Linux tout seul sur HP Pavilion DV7 et Acer Aspire T650, Canon MG3650 en wifi
Debian 11 Bullseye Gnome/Xorg, Gnome/Wayland avec SDDM
https://bidouilledebian.wordpress.com/
ON M'A VU DANS LE VERCORS, SAUTER A L'ELASTIQUE..... J'AI DANS LES BOTTES DES MONTAGNES DE QUESTIONS....

Hors ligne

#6 Le 16/11/2017, à 08:50

kholo

Re : [tuto bash] dossiers fichiers et listes ; lecture de web radios vlc

oui j'ai vu toutes les autres solutions...

avoir toutes ses radios sous la main c'est bien, mais j'ai voulu aller plus loin...

j'ai commencé par faire un parseur de fichiers m3u... ça fonctionne mais ça m'a pris la tête... je le réimplanterai certainement plus tard.

mon idée est d'avoir une liste simple, un lanceur et de mettre ça dans des variables pour le faire annoncer par un synthé vocal par exemple ou faire de la commande à distance... le script lance cvlc avec telnet en local.

vlc -I telnet --telnet-password=0000 --telnet-port=9999 ${FREQUENCE[$1]}  2> /dev/null &

ça permet de piloter vlc depuis la ligne de commande et éventuellement à travers ssh...

ou des infos (commenté dans le code)

# { sleep .3 ; echo "0000" ; sleep .3 ; echo "info" ; sleep .3 ; echo "stats" ; sleep .3 ; echo "get_title" ; } | telnet localhost 9999 ;

ici pour récupérer les infos de ce que lit vlc

{ sleep .3 ; echo "0000" ; sleep .3 ; echo "get_title" ;  sleep .3 ;} | telnet localhost 9999

piloter le volume :

volume () {
	{ sleep .3 ; echo "0000" ; sleep .3 ; echo "volume $1" ; } | telnet localhost 9999 ;
	}

... et je dois avoir un script pour enregistrer qui traîne quelque part...

... en fait toutes mes prises de tête en bash n'ont comme but que de finir par faire un interfaçage pour ajouter ensuite simplement de la commande vocale... et peut être une IA (faible)

Hors ligne

#7 Le 16/11/2017, à 17:54

kholo

Re : [tuto bash] dossiers fichiers et listes ; lecture de web radios vlc

j'ajoute le module d'enregistrement :

record_log () {
	xterm -e "while [ -f $virtOUT.pid ] ; do tail -4 $virtOUT ; sleep 1 ; clear ; done" &
}
# echo "chargement ligne $LINENO"
record_radio () {
echo "# module d'enregistrement"
if [ -z $1 ] ; then 
	# killall wget
	# killall curl
	
	# $(ps ax | grep matrix | grep -v grep | sed "s/^ *//" | cut -d " " -f1)
	kill -9 $(< $virtOUT.pid)
	rm $virtOUT.pid
else

	# To save stream:
	# curl --output ~/Downloads/Radio/CostaDelMar.mp3 http://sc-costadelmar.1.fm:10156
	# Useful options are --max-time <seconds> and --max-filesize <bytes>. 

	curl --output $HOME/Musique/stream.mp3 "${FREQUENCE[$1]}" >>$virtOUT 2>&1 &
	echo $! > $virtOUT.pid 
	record_log
fi
	}

record_log affiche le log du téléchargement

possibilité de faire du time shift en enregistrant une diffusion tout en lisant le fichier enregistré (pas encore codé mais il suffit d'écouter le mp3 dans un lecteur !)

Dernière modification par kholo (Le 16/11/2017, à 18:09)

Hors ligne