#!/bin/bash
###
## Scriptli, um über die Konsole Internetradio zu hören
#
#
################################################################################
#
# Einige Variabeln, konfigurierbar mit 'radio.sh -s',
# können aber auch hier von Hand geändert werden...
#
# Das Verzeichnis, in welchem die Konfigurationen zu speichern sind (absolute Pfade!):
DAS_VERZEICHNIS=""
# Der fürs Radio-Streamen zu vewendende Player:
DER_PLAYER=""
# zugehörige Optionen (zB "-msglevel all=-1" fürn mplayer):
DIE_OPTIONEN=""
# 1, wenn das Progrämmle ins Systray verschoben werden soll, sonst 0
SYSTRAYLICH="0"
# Daran besser nichts ändern (Speicherort des vorliegenden Programms)...
DER_BINARIUS=`which radio.sh`
#
################################################################################
#
# Ein kleiner Hilfedialog
#
function help
{
if [ "$HELFERCHEN" = "1" ] ; then
cat < /tmp/sendernamen.tmp
sed -n '1,'$HalbSenderZahl'p' /tmp/sendernamen.tmp > /tmp/sender1.tmp
sed -n ''`expr $HalbSenderZahl + 1`',$p' /tmp/sendernamen.tmp > /tmp/sender2.tmp
paste /tmp/sender1.tmp /tmp/sender2.tmp > $DAS_VERZEICHNIS/senderwahl.dialog
rm /tmp/sendernamen.tmp /tmp/sender1.tmp /tmp/sender2.tmp
cat $DAS_VERZEICHNIS/senderwahl.dialog
}
#
################################################################################
#
# Spezialstart fürs Gnome-Menu
#
function Nohupper
{
HUPPER=nohup
Sendestart
}
#
################################################################################
#
# Auswahl und Start eines bereits eingetragenen Senders als Hintergrundprozess
#
function Sendestart
{
if [ -z "$DAS_VERZEICHNIS" ] ; then
Konfiguriereins
else
if [ -f /tmp/radios.tmp ] ; then
rm /tmp/radios.tmp
killall $DER_PLAYER
else
if [ ! -s $DAS_VERZEICHNIS/sendernamen.liste ] ; then Neusender ; fi
echo -e "\n *** Internet-Radio in Konsole streamen ***\n Für Infos: radio.sh -h\n"
Sendestartzwo
echo -e "\nRadio läuft (oder wird's in Kürze tun...)"
touch /tmp/radios.tmp
if [ $SYSTRAYLICH = 1 ] ; then
echo "Programm kann nun über das Icon im SysTray gesteuert werden."
else
echo "Programm kann mit erneutem Aufruf von 'radio.sh' beendet werden."
fi
sleep 3
fi
fi
exit 0
}
##
function Sendestartzwo
{
echo -e "Folgende Radio-Sender stehen zur Wahl:\n"
Senderdialog
echo && read -p "Bitte gewünschte Sender-Nummer eingeben (Abbruch mit Ctrl+c): " B
DER_SENDER=`sed -n ''$B'p' $DAS_VERZEICHNIS/senderadressen.liste`
if [ $SYSTRAYLICH = 1 ] ; then
$HUPPER alltray -na -i $DAS_VERZEICHNIS/radio.png \
-m "Radio-Sender wechseln:nohup gnome-terminal -e 'radio.sh -w'" \
-m "Radio-Stream beenden:radio.sh" \
-m "-------------------------------:clear" \
-m "Sender hinzufügen:gnome-terminal -e 'radio.sh -n'" \
-m "Sender konfigurieren:gnome-terminal -e 'radio.sh -c'" \
-m "Sender löschen:gnome-terminal -e 'radio.sh -r'" \
-m "-------------------------------:clear" \
-m "Einstellungen:gnome-terminal -e 'radio.sh -s'" \
" $TERM -e '$DER_PLAYER $DIE_OPTIONEN $DER_SENDER '" & # -nm = no-minimize on close
else
$HUPPER $DER_PLAYER $DIE_OPTIONEN $DER_SENDER &
fi
echo -e "\nVerbindung zu '`sed -n ''$B'p' $DAS_VERZEICHNIS/sendernamen.liste`' wird aufgebaut.\nDas kann u.U. etwas Zeit in Anspruch nehmen..."
sleep 2
}
#
################################################################################
#
# Senderwechsel bei laufendem Programm
#
function Wechselsender
{
killall $DER_PLAYER
HUPPER=nohup
Sendestartzwo
exit 0
}
#
################################################################################
#
# Einfügen eines neuen Senders
#
function Neusender
{
echo -e "\n *** Internet-Radio in Konsole streamen ***\n\n -n: Einen neuen Sender speichern\n"
read -p "Name des Senders: " SENDERNAME
read -p "Adresse des Online-Streams: " SENDERADRESSE
read -p "gewünschte Position in der Senderliste (kann leer gelassen werden): " LISTPOS
echo -e "\nDer Sender wird folgendermassen an "`if [ -z "$LISTPOS" ]; then echo "letzter"; else echo "$LISTPOS."; fi`" Stelle gespeichert:\n
- Name: $SENDERNAME
- Stream-Adresse: $SENDERADRESSE\n"
read -n 1 -p "weiterfahren (Y/n)? " WEITERF
if [ "$WEITERF" = "n" ] ; then echo "Speichern vom Benutzer abgebrochen" && exit ; fi
clear
echo "Sender wird eingefügt..."
if [ ! -s $DAS_VERZEICHNIS/sendernamen.liste ] ; then
echo $SENDERNAME > $DAS_VERZEICHNIS/sendernamen.liste
echo $SENDERADRESSE > $DAS_VERZEICHNIS/senderadressen.liste
else
if [ -z "$LISTPOS" ] ; then
sed '$ a '"$SENDERNAME"'' $DAS_VERZEICHNIS/sendernamen.liste > /tmp/sendernamen.liste
sed '$ a '"$SENDERADRESSE"'' $DAS_VERZEICHNIS/senderadressen.liste > /tmp/senderadressen.liste
else
sed ''"$LISTPOS"' i '"$SENDERNAME"'' $DAS_VERZEICHNIS/sendernamen.liste > /tmp/sendernamen.liste
sed ''"$LISTPOS"' i '"$SENDERADRESSE"'' $DAS_VERZEICHNIS/senderadressen.liste > /tmp/senderadressen.liste
fi
mv /tmp/sendernamen.liste $DAS_VERZEICHNIS/sendernamen.liste
mv /tmp/senderadressen.liste $DAS_VERZEICHNIS/senderadressen.liste
fi
echo -e "\nSo sieht die neue Senderliste aus:\n"
Senderdialog
echo && exit 0
}
#
################################################################################
#
# Verändern eines gespeicherten Senders
#
function Changesender
{
echo -e "\n *** Internet-Radio in Konsole streamen ***\n\n -c: Einen Sender verändern\n\nAktuelle Senderliste:\n"
Senderdialog
echo && read -p "Nummer des zu ändernden Senders: " CHANGESENDER
ALTNAME=`sed -n ''$CHANGESENDER'p' $DAS_VERZEICHNIS/sendernamen.liste`
ALTADRESSE=`sed -n ''$CHANGESENDER'p' $DAS_VERZEICHNIS/senderadressen.liste`
echo -e "\nÄndern von \"$ALTNAME\" unter $ALTADRESSE auf Position $CHANGESENDER:\n"
read -p "Neuer Name (leerlassen, um den alten beizubehalten): " NEUNAME
if [ -z "$NEUNAME" ] ; then NEUNAME=$ALTNAME ; fi
read -p "Neue Stream-Adresse (leerlassen, um die alte beizubehalten): " NEUADRESSE
if [ -z "$NEUADRESSE" ] ; then NEUADRESSE=$ALTADRESSE ; fi
read -p "Neue Position in der Senderliste (oder leerlassen): " NEUPOSITION
if [ -z "$NEUPOSITION" ] ; then NEUPOSITION=$CHANGESENDER ; fi
echo -e "\nDer Sender wird folgendermassen an ${NEUPOSITION}. Stelle gespeichert:\n
- aus \"$ALTNAME\" wird \"$NEUNAME\"
- aus: $ALTADRESSE
wird: $NEUADRESSE\n"
read -n 1 -p "weiterfahren (Y/n)?" WEITERF
if [ "$WEITERF" = "n" ] ; then echo "Ändern vom Benutzer abgebrochen" && exit ; fi
if [ "$CHANGESENDER" = "$NEUPOSITION" ]; then
sed ''$CHANGESENDER'c '"$NEUNAME"'' $DAS_VERZEICHNIS/sendernamen.liste > /tmp/sendernamen.tmp
sed ''$CHANGESENDER'c '"$NEUADRESSE"'' $DAS_VERZEICHNIS/senderadressen.liste > /tmp/senderadressen.tmp
else
if [ $CHANGESENDER -lt $NEUPOSITION ] ; then NEUPOSITION=$[NEUPOSITION + 1] ; fi
sed ''$CHANGESENDER'd ; '"$NEUPOSITION"' i '"$NEUNAME"'' $DAS_VERZEICHNIS/sendernamen.liste > /tmp/sendernamen.tmp
sed -e ''$CHANGESENDER'd' -e ''"$NEUPOSITION"' i '"$NEUADRESSE"'' $DAS_VERZEICHNIS/senderadressen.liste > /tmp/senderadressen.tmp
fi
mv /tmp/sendernamen.tmp $DAS_VERZEICHNIS/sendernamen.liste
mv /tmp/senderadressen.tmp $DAS_VERZEICHNIS/senderadressen.liste
echo -e "\nDie neue Senderliste:\n"
Senderdialog
echo && exit 0
}
#
################################################################################
#
# Löschen eines gespeicherten Senders
#
function Loeschsender
{
echo -e "\n *** Internet-Radio in Konsole streamen ***\n\n -c: Einen Sender löschen\n\nAktuelle Senderliste:\n"
Senderdialog
echo && read -p "Nummer des zu löschenden Senders: " DELSENDER
DELNAME=`sed -n ''$DELSENDER'p' $DAS_VERZEICHNIS/sendernamen.liste`
DELADRESSE=`sed -n ''$DELSENDER'p' $DAS_VERZEICHNIS/senderadressen.liste`
echo -e "\nLöschen von \"$DELNAME\" unter $DELADRESSE auf Position $DELSENDER?"
read -p "(y/N): " DELLEN
if [ "$DELLEN" = "y" ] || [ "$DELLEN" = "j" ] ; then
sed ''$DELSENDER'd' $DAS_VERZEICHNIS/sendernamen.liste > /tmp/delsendernamen.tmp
sed ''$DELSENDER'd' $DAS_VERZEICHNIS/senderadressen.liste > /tmp/delsenderadressen.tmp
else
echo "Löschvorgang abgebrochen"
exit
fi
mv /tmp/delsendernamen.tmp $DAS_VERZEICHNIS/sendernamen.liste
mv /tmp/delsenderadressen.tmp $DAS_VERZEICHNIS/senderadressen.liste
echo -e "\nSender gelöscht. Aktuelle Senderliste:\n"
Senderdialog
echo && exit 0
}
#
################################################################################
#
# Programmeinstellungen vornehmen
#
function Konfiguriereins
{
clear
cat < /dev/null ; then
read -n 1 -p " $NEUPLAYER ist kein installierter Player. Soll er installiert werden (y/n)? " EINSETZ1
if [ "$EINSETZ1" = "y" ] || [ "$EINSETZ1" = "j" ] ; then
sudo apt-get install $NEUPLAYER
fi
fi
##
read -n 1 -p " Sollen dem Player weitere Optionen übergeben werden (Y/n)? " RESP2
if [ "$RESP2" = n ] ; then
NEUOPTIONEN=""
else
read -p " Welche? [$DIE_OPTIONEN]: " NEUOPTIONEN
if [ -z $NEUOPTIONEN ] ; then
NEUOPTIONEN=$DIE_OPTIONEN
fi
fi
##
echo && read -n 1 -p "3. Soll ein Icon im Benachrichtigungsfeld angezeigt werden (Y/n)? " BENAFELD
if [ "$BENAFELD" = "n" ] ; then
SYSTER=0
else
if ! which alltray > /dev/null ; then
echo -e -n " Diese Funktion greift auf das Programm 'alltray' zurück, das mo-\n mentan nicht installiert ist. Soll es installiert werden (y/N)? "
read -n 1 EINSETZ2
if [ "$EINSETZ2" = "y" ] || [ "$EINSETZ2" = "j" ] ; then
sudo apt-get install alltray
SYSTER=1
else
SYSTER=0
fi
else
SYSTER=1
fi
fi
##
sed -e '/^DAS_VERZEICHNIS=/ c DAS_VERZEICHNIS="'$NEUVERZEICHNIS'"' -e '/^DER_PLAYER=/ c DER_PLAYER="'$NEUPLAYER'"' -e '/^DIE_OPTIONEN=/ c DIE_OPTIONEN="'"$NEUOPTIONEN"'"' -e '/^SYSTRAYLICH=/ c SYSTRAYLICH="'$SYSTER'"' $DER_BINARIUS > /tmp/radiollo.tmp
echo -e "\nVoilà les Unterschiede:\n"
diff $DER_BINARIUS /tmp/radiollo.tmp
echo && read -n 1 -p "Soll das übernommen werden (y/N)? " DIE_UEBERNAHME
if [ "$DIE_UEBERNAHME" = "y" ] || [ "$DIE_UEBERNAHME" = "j" ] ; then
cp $DER_BINARIUS ${DER_BINARIUS}.bak
mv /tmp/radiollo.tmp $DER_BINARIUS
chmod +x $DER_BINARIUS
touch $NEUVERZEICHNIS/sendernamen.liste
touch $NEUVERZEICHNIS/senderadressen.liste
touch $NEUVERZEICHNIS/senderwahl.dialog
echo -e "\nÄnderungen übernommen!"
else
rm /tmp/radiollo.tmp
echo -e "\nAbbruch..."
fi
if [ ! -s $NEUVERZEICHNIS/sendernamen.liste ] ; then
echo -e "\nJetzt müssen noch ein paar Sender eingetragen werden..."
Neusender
fi
echo
}
#
################################################################################
#
# Letzte Einstellungen wiederherstellen
#
function Resetter
{
echo "geht noch grad nicht"
exit 0
}
#
################################################################################
#
# Festlegung und Auswahl der Optionen
#
test ! -z "$1" || Sendestart
while [ ! -z "$1" ]; do
case $1 in
-h) clear && HELFERCHEN=1 && help
;;
-w) Wechselsender
;;
-na) if [ $SYSTRAYLICH = 0 ] ; then SYSTRAYLICH=1 ; else SYSTRAYLICH=0 ; fi
Sendestart
;;
-n) Neusender
;;
-c) Changesender
;;
-r) Loeschsender
;;
-s) Konfiguriereins
;;
-z) Resetter
;;
-nh) Nohupper
;;
*) clear && echo "radio.sh: unbekannte Option '$1'" && help
esac
done
exit 0