- Modifié
[center]Cracobox[/center]
Merci à AnsuzPeorth, ®om , n3o51 et demonipuch, Metalux et HUSH pour leurs contributions !
Médias disponibles (des webradios cools pour la plupart) :Ce script permet de visualiser/enregistrer facilement divers médias sans utiliser son navigateur internet.
Participez à son évolution en proposant d'autres fonctions, radios, podcasts, webtv, replays... !
Le but étant d'en faire un script cool et relax.
- L'écho des gnous
Émission consacrée au logiciel Libre et à la culture libriste- Podcast de Laurent Gerra sur RTL (8h45)
- Super Oldies, 50's 60's, US
- MusicRadio Airchecks," 50's 60's
- Audio Noir, drama & crime (améliorez votre anglais et régalez vous de ces voix)
- Valhalla Radio, heavy metal, voulez vous rejoindre Ragnaar au Valhalla ?
- Medieval Radio
- Vikland Radio
- StreamingSoundTracks
- UK Bass Radio
- ModFM
- RadioSEGA.net # Video Game Music
- SLAY Radio # c64 remixes
- MASCHINENGEIST.ORG # RADIO Deep Field Transmissions
- LSD-25 . live . radio # Ambient, Dance, Electronic, House, Psychadelic, Trance, FullOn, DarkPsy, Goa
- Elfm Radio # La radio web Folk - Pagan-Folk - Folk Nordique - Folk Celtique - Folk Slave - Rock Médiéval - Folk Méditerranéen
- Radio-rock-vintage , comme son nom l'indique
- Metalheart, webradio accès métal
- Metallica-station, pas besoin de décrire
- Pedro Broadcasting, la radio de Laurent Garnier
- Bide-et-musique, la webradio de l'improbable et de l'inouï
- Wildcountry
#!/bin/bash
# 0.54
# dépendance : xterm
# conseillé : mimms
# Auteur : cracolinux
# copyleft 2012 - 2020
# Voici la liste des spécificités actuelles:
# - Enregistrement des préférences dans ~/.config/cracobox/cracobox.conf
# - Utilisation d'un dossier temporaire : /tmp/cracobox pour toutes les taches de traitement de fichiers
# - Detection des players du système parmi une liste (non exhaustive, rajoutez-en!)
#Changelog:
# - EDG : Obtention des liens pour l'emission (écho de gnous) via le flux de Ludovic Grossard + 0.51
# - EDG : Parametrage du nombre d'émissions + 0.51
# - Gerra : ajout de la fonction pour les podcasts de Gerra sur RTL
# LICENCE:
#
# LICENCE PUBLIQUE RIEN À BRANLER
# Version 1, Mars 2009
# Copyright (C) 2009 Sam Hocevar
# 14 rue de Plaisance, 75014 Paris, France
#
# La copie et la distribution de copies exactes de cette licence sont
# autorisées, et toute modification est permise à condition de changer
# le nom de la licence.
#
# CONDITIONS DE COPIE, DISTRIBUTION ET MODIFICATION
# DE LA LICENCE PUBLIQUE RIEN À BRANLER
#
# 0. Faites ce que vous voulez, j’en ai RIEN À BRANLER.
# fonctions diverses
## compatibilité avec bsd
if ! which seq > /dev/null 2>&1 ; then
seq () {
if [ $1 = 1 ] ; then
jot $2
else
jot $((1+$2-$1)) $1
fi
}
fi
##
f_fichtemp () {
for a in $@ ; do
eval ${a}=$(mktemp --tmpdir=/tmp/cracobox)
done
}
f_quit () {
rm -r /tmp/cracobox
exit 0
}
f_detection_player () {
player_possible=("vlc" "mplayer" "xine" "totem" "gnome-mplayer" "gst123" "cvlc" "mpv")
for a in ${player_possible[@]}
do
which $a > /dev/null && player_choix=(${player_choix[@]} ${a})
done
}
f_presser_une_touche () {
echo
read -s -n 1 -p " -appuyer sur une touche pour continuer-"
}
f_efface_et_presente () {
clear
echo "⇖⇘ ${1:-Cracobox} ⇙⇗"
echo
}
f_faire_un_choix () {
result="$1"
shift
for a in $(seq 1 $#) ; do
echo " $a ⇒ ${!a}"
done
echo
if (( $# <= 9 )) ; then
read -s -n 1 num # sans validation par entrée
else
read num
fi
eval $result='${!num}' # a modifier
}
# LES REPLAYS & PODCASTS
# l'echo des gnous
f_echos_gnous () {
# lecture ou écriture du nombre d'émission par défaut dans le fichier utilisateur ~/.config/cracobox/cracobox.conf
if [[ -w ~/.config/cracobox/cracobox.conf ]] ; then
if [[ -n $(grep 'nbemission=' ~/.config/cracobox/cracobox.conf) ]] ; then
nbemission=$(grep 'nbemission=' ~/.config/cracobox/cracobox.conf | cut -d '=' -f 2)
[[ -z $nbemission ]] && echo "Fichier ~/.config/cracobox/cracobox.conf invalide" && exit 1
else
f_efface_et_presente "Paramétrage"
read -p "Nombre d'emissions par défaut:" nbemission
echo "nbemission="$nbemission"" >> ~/.config/cracobox/cracobox.conf
fi
else
f_efface_et_presente "Paramétrage"
read -p "Nombre d'emissions par défaut:" nbemission
echo "nbemission="$nbemission"" >> ~/.config/cracobox/cracobox.conf
fi
# Variables
declare -a title
#declare -a description
declare -a lien
declare -a duration
declare -a all
f_fichtemp echo_last # va créer un fichier temporaire dans le variable $echo_last
# parsage n°1 avec les n dernières émissions : titre, description, lien et durée
#wget -O- http://www.chtinux.org/podcast/feed.xml | grep -m ${nbemission} -A 2 -B 5 "<enclosure\ url\=" | grep -v "<guid" | grep -v "<link" | grep -v "subtitle" | grep -v "summary" | tr -d '\t' > ${echo_last}
wget -O- "https://podcast.grossard.fr/feed.xml" | grep -m ${nbemission} -A 3 "<enclosure\ url=" | grep -v "itunes:block" | grep -v "itunes:explicit"| tr -d '\t' > ${echo_last}
# remplissage des 5 tableaux : titre, description, lien, durée et all (utilisé pour la présentation via f_faire_un_choix)
# sed -n 1p : affichage de la ligne 1
# sed -n 2p : affcihage de la ligne 2, etc.
for (( a=1 ; a<=${nbemission} ; a++ )) ; do
echo "---- ${nbemission} ------ "
#title[${a}]=$(grep "<titl" ${echo_last} | cut -d '>' -f 2 | cut -d '<' -f 1 | sed -n ${a}p)
#description[${a}]=$(grep "<descr" ${echo_last} | cut -d '>' -f 2 | cut -d '<' -f 1 | sed -n ${a}p)
lien[${a}]=$(grep "<enclosure" ${echo_last} | cut -d '"' -f 2 | sed -n ${a}p)
duration[${a}]=$(grep "duration" ${echo_last} | cut -d '>' -f 2 | cut -d '<' -f 1 | sed -n ${a}p)
title[${a}]=${lien[${a}]##*/}
all[$a]="${title[$a]} ${duration[$a]}"
done
# affichage des choix :
f_efface_et_presente "${nbemission} dernières émissions"
f_faire_un_choix emission "${all[@]}"
for (( a=1 ; a<=${nbemission} ; a++ )) ; do # lecture de title[]
if [ "${emission}" = "${title[${a}]} ${duration[${a}]}" ] ;then
urlfinale=${lien[${a}]}
fi
done
}
f_gerra ()
{
# Variables
declare -a gerra
declare -a title
declare -a lien
f_fichtemp gerra_stuff # va créer un fichier temporaire
wget --output-document=$gerra_stuff "https://www.rtl.fr/podcast/laurent-gerra.xml"
while read line
do
gerra+=("$line")
done < $gerra_stuff
# depuis la table gerra, on garnit les liens et title :
tutu=0
for (( i=0 ; i < ${#gerra[@]} ; i++)); do
if ( grep mp3 <<< ${gerra[$i]} >/dev/null ) ; then
((tutu++))
bingo=$(grep --only-matching -E "https://rtl.proxycast.org.*mp3" <<< ${gerra[$i]})
lien[$tutu]="$bingo"
for b in {1..10} ; do
if [[ "${gerra[$i-$b]}" =~ \<title\> ]] ; then
title[$tutu]="${gerra[$i-$b]}"
fi
done
fi
done
# raffinage des titles
for (( z=0 ; z < ${#title[@]} ; z++ )); do
title[$z]=${title[$z]/<title>/}
title[$z]=${title[$z]/<\/title>/}
done
# affichage des choix :
f_efface_et_presente "Podcast Gerra sur RTL"
f_faire_un_choix emission "${title[@]}"
# on determine urlfinale
for (( z=0 ; z < ${#title[@]} ; z++ )); do
if [ "$emission" = "${title[$z]}" ] ; then
urlfinale="${lien[$z]}"
fi
done
}
# LES DIRECTS Radio & TV
f_directs () {
f_efface_et_presente "Les WEBRADIOs"
f_faire_un_choix laradio "Bide & Musique" "Libre antenne" "Valhalla Radio" "Radio-rock-vintage" "UK Bass Radio" "Super Oldies" "StreamingSoundTracks" "Elfm Radio" "Vikland Radio" "Audio Noir" "MusicRadio Airchecks" "ModFM" "Medieval Radio" "Metalheart" "RadioSEGA.net" "SLAY Radio" "MASCHINENGEIST.ORG" "LSD-25 . live . radio" "Metallica-station" "Pedro Broadcast" "Countryclub" " Retour"
case $laradio in
##http://www.streamfinder.com/internet-radio-station/44379/gold247/#_
"Libre antenne" )
urlfinale="http://stream.libreantenne.org/listen.ogg";;
"Super Oldies" )
urlfinale="http://uk2-vn.mixstream.net/8064.pls";;
"MusicRadio Airchecks" ) # 50's 60's
urlfinale="http://173.236.59.83:8190"
;;
"Audio Noir" )#, drama & crime
urlfinale="http://50.7.16.114:8000"
;;
"Valhalla Radio" ) # heavy metal
urlfinale="http://cp.usa5.fastcast4u.com:5744/stream"
;;
"Medieval Radio" )
urlfinale="http://5.159.233.66:9920/listen.pls"
;;
"Vikland Radio" )
urlfinale="http://vikland.c-prod.com/vikland.m3u"
;;
"StreamingSoundTracks" )
urlfinale="http://hi1.streamingsoundtracks.com:8000"
;;
"UK Bass Radio" )
urlfinale="http://uk3-vn.mixstream.net:8002"
;;
"ModFM" ) # →→ ModFM tracked amiga c64 chiptune electronic oldschool demoscene
urlfinale="http://modfm.radio.de:8500"
;;
"RadioSEGA.net" ) # Video Game Music
urlfinale="http://content.radiosega.net:8006/live"
;;
"SLAY Radio" ) # c64 remixes
urlfinale="http://95.140.182.197:8100"
;;
"MASCHINENGEIST.ORG" ) # RADIO Deep Field Transmissions
urlfinale="http://radio.maschinengeist.org/stream_ultra.m3u"
;;
"LSD-25 . live . radio" ) # Ambient, Dance, Electronic, House, Psychadelic, Trance, FullOn, DarkPsy, Goa
urlfinale="http://a1.lsd-25.ru:8000/new"
;;
"Elfm Radio" ) # La radio web Folk - Pagan-Folk - Folk Nordique - Folk Celtique - Folk Slave - Rock Médiéval - Folk Méditerranéen
urlfinale="http://serveur-webradio.com:9030"
;;
"Radio-rock-vintage" )
urlfinale="http://listen.radionomy.com/radio-rock-vintage" # comme son nom l'indique
;;
"Metalheart" )
urlfinale="http://listen.radionomy.com/metalheart" # →→ radio métal
;;
"Metallica-station" )
urlfinale="http://listen.radionomy.com/metallica-station" # →→ radio métal(lica)
;;
"Pedro Broadcast" )
urlfinale="http://pbb.laurentgarnier.com:8000/pbb.ogg"
extension=".ogg"
;;
"Bide & Musique" )
urlfinale="http://relay1.bide-et-musique.com:9100"
;;
"Wildcountry" )
urlfinale="http://listen.radionomy.com/wild-country.m3u"
;;
" Retour")
unset urlfinale
break
;;
esac
nompourenregistrement="${laradio}"$(date +%d-%m-%Hh%M)"${extension}"
}
# Fonction gérant l'écoute/visionnage d'une url
f_voir () {
if [[ -w ~/.config/cracobox/cracobox.conf ]] ; then
if [[ -n $(grep 'player=' ~/.config/cracobox/cracobox.conf) ]] ; then
player=$(grep 'player=' ~/.config/cracobox/cracobox.conf | cut -d '=' -f 2)
[[ -z $player ]] && echo "Fichier ~/.config/cracobox/cracobox.conf invalide" && exit 1
else
f_efface_et_presente "Choix du lecteur par défaut"
f_detection_player
f_faire_un_choix player ${player_choix[*]}
echo "player="$player"" >> ~/.config/cracobox/cracobox.conf
fi
else
f_efface_et_presente "Choix du lecteur par défaut"
f_detection_player
f_faire_un_choix player ${player_choix[*]}
echo "player="$player"" >> ~/.config/cracobox/cracobox.conf
fi
echo "${urlfinale}"
${player} "${urlfinale}"
}
# Fonction gérant l'enregistrement d'une url
f_enregistrer() {
#cas d'un téléchargement régulier
if ${telechargementregulier} ; then
telechargementregulier=false
export urlfinale
xterm -T "Cracobox -enregistrement- dans $PWD"\
-e 'echo -e "Téléchargement de ${urlfinale##*/} dans ${PWD} \n note: un téléchargement interrompue peut etre repris plus tard..." ; \
wget -c ${urlfinale}' &
unset urlfinale
break
fi
# lecture ou écriture de l'enregistreur par défaut dans le fichier utilisateur ~/.config/cracobox/cracobox.conf
if [[ -w ~/.config/cracobox/cracobox.conf ]] ; then
if [[ -n $(grep 'enregistreur=' ~/.config/cracobox/cracobox.conf) ]] ; then
enregistreur=$(grep 'enregistreur=' ~/.config/cracobox/cracobox.conf | cut -d '=' -f 2)
[[ -z $enregistreur ]] && echo "Fichier ~/.config/cracobox/cracobox.conf invalide" && exit 1
else
f_efface_et_presente "Choix enregistreur:" ; echo
f_faire_un_choix enregistreur mimms mplayer
echo "enregistreur="$enregistreur"" >> ~/.config/cracobox/cracobox.conf
fi
else
f_efface_et_presente "Choix enregistreur" ; echo
f_faire_un_choix enregistreur mimms mplayer
echo "enregistreur="$enregistreur"" >> ~/.config/cracobox/cracobox.conf
fi
# nom de l'enregistrement
echo -e "Le nom par défaut pour l'enregistrement en préparation est : ${nompourenregistrement} \n"
read -s -n 1 -p "Voulez-vous le changer ? (o/n)" ouinon && ouinon=$(tr [:upper:] [:lower:] <<< ${ouinon})
[ ${ouinon} == "o" ] && read -p "Nouveau nom:" nompourenregistrement
export urlfinale
export nompourenregistrement
# empecher mimms pour les directs, mimms s'utilise pour le protocole mms
[[ $enregistreur == "mimms" ]] && [[ $choixinitial == "DIRECTS Radio/Tv" ]] && enregistreur="mplayer"
if [[ $enregistreur == "mimms" ]] ; then
xterm -T "ctrl + c pour stopper l'enregistrement dans $PWD"\
-e 'echo -e "\t\tctrl+c pour annuler (un téléchargement peut etre relancé et finalisé)" ; \
mimms -r -c "${urlfinale}" "${nompourenregistrement}"' &
fi
if [[ $enregistreur == "mplayer" ]] ; then
xterm -T "ctrl + c pour stopper l'enregistrement dans $PWD"\
-e 'echo -e "\t\tctrl+c pour annuler" ; \
mplayer -quiet "$urlfinale" -dumpstream -dumpfile "${nompourenregistrement}"' &
fi
unset urlfinale
unset nompourenregistrement
}
# Fonction gérant les actions sur ${urlfinale}
f_action () {
# Questionnement sur l'action à mener :
f_efface_et_presente "Que faire ?"
f_faire_un_choix action "Visionner/Ecouter" "Enregistrer" "Voir URL" " Retour" " Quitter"
case $action in
"Visionner/Ecouter")
f_voir ;;
"Voir URL")
echo -e "$urlfinale\n" && read -s -n 1 -p " -appuyer sur une touche pour continuer-" && f_action ;;
"Enregistrer")
f_enregistrer ;;
" Quitter")
f_quit ;;
" Retour")
continue ;;
*)
echo "Incorrect..."
sleep 1
continue ;;
esac
}
#======================
#LE CORPS DU SCRIPT (!)
#======================
# création du répertoire de fichiers temporaires
mkdir -p /tmp/cracobox
# variables
telechargementregulier=false
extension=".mp3"
nbemission=5
# GO!
while true
do
f_efface_et_presente
f_faire_un_choix choixinitial "REPLAYS & PODCASTS" "Webradios" " Supprimer les préférences" " Quitter"
case ${choixinitial} in
"Webradios")
while true
do
f_efface_et_presente "Webradios"
f_directs
f_action
done
;;
"REPLAYS & PODCASTS")
while true
do
f_efface_et_presente "Replays & Podcasts"
f_faire_un_choix startchoice "L'échos des gnous (${nbemission} dernières)" "Gerra podcast de RTL" " Retour"
case ${startchoice} in
"L'échos des gnous (${nbemission} dernières)")
f_echos_gnous
telechargementregulier=true
;;
"Gerra podcast de RTL")
f_gerra
telechargementregulier=true
;;
" Retour")
break ;;
esac
f_action
done
;;
" Supprimer les préférences")
[[ -w ~/.config/cracobox/cracobox.conf ]] && rm ~/.config/cracobox/cracobox.conf && echo "Préférences effacées!" && sleep 1
continue
;;
" Quitter")
f_quit
;;
*)
echo "Incorrect..."
sleep 1
continue ;;
esac
done
exit 0
Merci à AnsuzPeorth, ®om , n3o51 et demonipuch, Metalux et HUSH pour leurs contributions !