#!/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