Hallo liebe Ubuntuusers,
einigen von euch ist der Bashtuner vielleicht noch von früheren Versionen bekannt. Bashtuner ist ein Shellscript zum abspielen und aufnehmen von Radiosendern. Die Aufnahmen sind zeitgesteuert und werden über einen Planer angelegt. Das Prinzip von Bashtuner ist das gleiche geblieben der Programmablauf hat sich allerdings geändert. In den vorherigen Versionen musste man sich durch verschiedene Zenity Menüstrukturen klicken. Der jetzige Bashtuner wird mit Funktionen und Parametern aufgerufen und ist dadurch meiner Meinung nach flexibler.
Der Aufruf erfolgt in der Konsole oder wenn Bashtuner im /usr/local/bin gespeichert ist direkt über Ausführen (ALT+F2) mit den notwendigen Funktionen und Parametern.
Eine Hilfe erhält man mit der Funktion -h
Bei den Abspielfunktionen kann man als Parameter den gewünschten Player angeben. Wird kein Player angegeben ist VLC als Standard definiert. Radiosender kann man aus einer lokalen oder einer Online Liste abspielen. Die lokale Liste wird im $HOME/Musik angelegt. Wenn noch keine Liste vorhanden ist kann man aus der Onlineliste Sender übernehmen, dadurch wird die Liste automatisch erzeugt. Aktuell sind 43 Sender in der Onlineliste, diese wird aber noch erweitert. Über die Suchfunktion kann man nach Sendern in der Onlineliste suchen. Die Funktion -s zeigt einen Zenity Eingabedialog, bei der Funktion -sp wird das Suchwort direkt als Parameter übergeben.
Neu ist der Radiowecker der einen Sender zum gewünschten Zeitpunk abspielt.
Weitere Funktionen sind in Arbeit, dies ist erstmal eine (bei mir) funktionierende Testversion. Wer noch Anregungen oder Verbesserungsvorschläge hat und vielleicht Fehler findet, ich habe immer ein offenes Ohr und kann auch mit Kritik umgehen.
Das Script hat folgende Abhängigkeiten:
curl, vlc, zenity, streamripper
Das Script:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 | #!/bin/bash # Programm Bashtuner # Autor Karsten Weidenfeld # OS Linux Mint 14, Ubuntu 12.04 # Abhängigkeiten curl, vlc, zenity, streamripper # Bashtuner ist ein Radio Abspielprogramm das wahlweise Sender aus einer lokalen Favouritenliste # oder einer Onlineliste abspielt. Es können auch Sender aus der Onlineliste übernommen werden. # Das Programm bietet außerdem eine Suchfunktion für die Onlineliste. PAR2=$2 PAR3=$3 ONLINE="http://linuxfiles.bplaced.net/projekte/bashtuner/topsender.csv" SENDER="$HOME/Musik/sender.csv" RECORD="$HOME/Musik/" COUNTOL=$(curl -s http://linuxfiles.bplaced.net/projekte/bashtuner/topsender.csv|wc -l) function -n #Neuen Sender hinzufügen { echo "$PAR2;$PAR3">>$SENDER exit 0 } function -p #Sender aus Liste abspielen { if [ -z "$PAR2" ]; then PAR2=vlc fi AUSWAHL=$(awk -F ";" '{print $1"\n"$2}' $SENDER | zenity --list --hide-column=1 --column "Nummer" --column "Sender" --title="Bashtuner (powered by www.Linuxfiles.de)" --ok-label="Abspielen" --cancel-label="EXIT" --text="Radiosender einschalten" --width=600 --height=500 2>>.error) if [ $? = "1" ] ; then exit 1 ; fi if [ -z "$AUSWAHL" ]; then zenity --error --text="Sie müssen eine Auswahl treffen!" >&2 -p ; else $PAR2 $AUSWAHL 2>>.error &exit 0 fi } function -po #Sender aus Online Liste abspielen { if [ -z "$PAR2" ]; then PAR2=vlc fi AUSWAHL=$(curl -s $ONLINE|awk -F ";" '{print $1"\n"$2}'| zenity --list --hide-column=1 --column "Nummer" --column "$COUNTOL Sender" --title="Bashtuner (powered by www.Linuxfiles.de)" --ok-label="Abspielen" --cancel-label="EXIT" --text="Radiosender einschalten" --width=600 --height=500 2>>.error) if [ $? = "1" ] ; then exit 1 ; fi if [ -z "$AUSWAHL" ]; then zenity --error --text="Sie müssen eine Auswahl treffen!" >&2 PLAY ; else $PAR2 $AUSWAHL 2>>.error &exit 0 fi } function -sf #Sender aus Online Liste in Favouritenliste übernehmen { AUSWAHL=$(curl -s $ONLINE|awk -F ";" '{print $1"\n"$2}'| zenity --list --print-column=ALL --separator=";" --hide-column=1 --column "Nummer" --column "$COUNTOL Sender" --title="Bashtuner (powered by www.Linuxfiles.de)" --ok-label="AUSWAHL" --cancel-label="EXIT" --text="EXIT" --width=600 --height=500 2>>.error) if [ $? = "1" ] ; then exit 1 ; fi if [ -z "$AUSWAHL" ]; then zenity --error --text="Sie müssen eine Auswahl treffen!" >&2 -sf ; else echo "$AUSWAHL" >>$SENDER exit 0 fi } function -s { if [ -z "$PAR2" ]; then PAR2=vlc fi SUCHE=$(zenity --entry --text="Sendersuche:" --title="Bashtuner (powered by www.Linuxfiles.de)" --width=600 --height=100) if [ $? = "1" ] ; then exit 1 ; fi TEST=$(curl -s $ONLINE|grep -i -c "$SUCHE") if (( $TEST < 1 )); then zenity --error --text="Keinen passenden Sender gefunden" &exit 1 ; fi AUSWAHL=$(curl -s $ONLINE|grep -i "$SUCHE"|awk -F ";" '{print $1"\n"$2}'| zenity --list --hide-column=1 --column "Nummer" --column "$COUNTOL Sender" --title="Bashtuner (powered by www.Linuxfiles.de)" --ok-label="Abspielen" --cancel-label="EXIT" --text="Radiosender einschalten" --width=600 --height=500 2>>.error) if [ $? = "1" ] ; then exit 1 ; fi if [ -z "$AUSWAHL" ]; then zenity --error --text="Die Auswahl war leer!" exit 1 ; else $PAR2 $AUSWAHL 2>>.error &exit 0 fi } function -sp { if [ -z "$PAR3" ]; then PAR3=vlc fi TEST=$(curl -s $ONLINE|grep -i -c "$PAR2") if (( $TEST < 1 )); then zenity --error --text="Keinen passenden Sender gefunden" &exit 1 ; fi AUSWAHL=$(curl -s $ONLINE|grep -i "$PAR2"|awk -F ";" '{print $1"\n"$2}'| zenity --list --hide-column=1 --column "Nummer" --column "$COUNTOL Sender" --title="Bashtuner (powered by www.Linuxfiles.de)" --ok-label="Abspielen" --cancel-label="EXIT" --text="Radiosender einschalten" --width=600 --height=500 2>>.error) if [ $? = "1" ] ; then exit 1 ; fi if [ -z "$AUSWAHL" ]; then zenity --error --text="Die Auswahl war leer!" exit 1 ; else $PAR3 $AUSWAHL 2>>.error &exit 0 fi } function -a { AUFNAHME=$(zenity --forms --width=600 --height=300 --title="Bashtuner Classic (powered by www.Linuxfiles.de)" --text="Aufnahme planen" --add-calendar="Datum wählen" --forms-date-format="%m%d%Y" --add-entry="Uhrzeit (Bsp. 20:15)" --add-entry="Dauer der Aufnahme (in Minuten)" --separator=";") if [ $? = "1" ] ; then exit 1 ; fi DATUM=$(echo "$AUFNAHME"|cut -d";" -f1) ZEIT=$(echo "$AUFNAHME"|cut -d";" -f2) DAUER=$(echo "$AUFNAHME"|cut -d";" -f3) AUSWAHL=$(curl -s $ONLINE|awk -F ";" '{print $1"\n"$2}'| zenity --list --hide-column=1 --column "Nummer" --column "$COUNTOL Sender" --title="Bashtuner (powered by www.Linuxfiles.de)" --text="Sender auswählen" --width=600 --height=500 2>>.error) if [ $? = "1" ] ; then exit 1 ; fi AUFNAHMEDAUER=$(echo "$DAUER*60" | bc -l) echo "streamripper $AUSWAHL -l $AUFNAHMEDAUER --with-id3v1 -u "bashtuner" -d $RECORD -u '66gdfsgc'" | at "$ZEIT" "$DATUM" echo "notify-send --icon="/usr/share/icons/HighContrast/scalable/emblems/emblem-downloads.svg" Bashtuner:\ Aufnahme\ startet Die\ gewählte\ Sendung\ wird\ nun\ mitgeschnitten." | at "$ZEIT" "$DATUM" echo "sleep $AUFNAHMEDAUER ; notify-send --icon="/usr/share/icons/HighContrast/scalable/actions/document-new.svg" Bashtuner:\ Aufnahme\ beendet Die\ gewählte\ Sendung\ wurde\ im\ Ziel-Ordner\ gespeichert." | at "$ZEIT" "$DATUM" zenity --info --text="Aufnahme angelegt" exit 0 } function -af { AUFNAHME=$(zenity --forms --width=600 --height=300 --title="Bashtuner Classic (powered by www.Linuxfiles.de)" --text="Aufnahme planen" --add-calendar="Datum wählen" --forms-date-format="%m%d%Y" --add-entry="Uhrzeit (Bsp. 20:15)" --add-entry="Dauer der Aufnahme (in Minuten)" --separator=";") if [ $? = "1" ] ; then exit 1 ; fi DATUM=$(echo "$AUFNAHME"|cut -d";" -f1) ZEIT=$(echo "$AUFNAHME"|cut -d";" -f2) DAUER=$(echo "$AUFNAHME"|cut -d";" -f3) AUSWAHL=$(awk -F ";" '{print $1"\n"$2}' $SENDER | zenity --list --hide-column=1 --column "Nummer" --column "Sender" --title="Bashtuner (powered by www.Linuxfiles.de)" --text="Sender auswählen" --width=600 --height=500 2>>.error) if [ $? = "1" ] ; then exit 1 ; fi AUFNAHMEDAUER=$(echo "$DAUER*60" | bc -l) echo "streamripper $AUSWAHL -l $AUFNAHMEDAUER --with-id3v1 -u "bashtuner" -d $RECORD -u '66gdfsgc'" | at "$ZEIT" "$DATUM" echo "notify-send --icon="/usr/share/icons/HighContrast/scalable/emblems/emblem-downloads.svg" Bashtuner:\ Aufnahme\ startet Die\ gewählte\ Sendung\ wird\ nun\ mitgeschnitten." | at "$ZEIT" "$DATUM" echo "sleep $AUFNAHMEDAUER ; notify-send --icon="/usr/share/icons/HighContrast/scalable/actions/document-new.svg" Bashtuner:\ Aufnahme\ beendet Die\ gewählte\ Sendung\ wurde\ im\ Ziel-Ordner\ gespeichert." | at "$ZEIT" "$DATUM" zenity --info --text="Aufnahme angelegt" exit 0 } function -rw { AUFNAHME=$(zenity --forms --width=600 --height=300 --title="Bashtuner Classic (powered by www.Linuxfiles.de)" --text="Radiowecker" --add-calendar="Datum wählen" --forms-date-format="%m%d%Y" --add-entry="Weckzeit (Bsp. 20:15)" --separator=";") if [ $? = "1" ] ; then exit 1 ; fi DATUM=$(echo "$AUFNAHME"|cut -d";" -f1) ZEIT=$(echo "$AUFNAHME"|cut -d";" -f2) AUSWAHL=$(curl -s $ONLINE|awk -F ";" '{print $1"\n"$2}'| zenity --list --hide-column=1 --column "Nummer" --column "$COUNTOL Sender" --title="Bashtuner (powered by www.Linuxfiles.de)" --text="Sender auswählen" --width=600 --height=500 2>>.error) if [ $? = "1" ] ; then exit 1 ; fi echo "DISPLAY=$DISPLAY vlc $AUSWAHL" | at "$ZEIT" "$DATUM" notify-send --icon="/usr/share/icons/HighContrast/scalable/emblems/emblem-downloads.svg" "Bashtuner:Wecker aktiviert" exit 0 } function -h #Hilfe { cat <<EOF +++ Bashtuner +++ Usage: bashtuner [Funktion] [Parameter] [Optional:Player] Bei den Abspielfunktionen kann der Player otional angegeben werden. Wenn kein Player angegeben wird ist VLC Standardplayer. Funktion: -p Einen Sender aus der Favoritenliste auswählen und abspielen. -po Online Senderliste aufrufen und einen Sender abspielen. -n Neuen Sender in die Favoritenliste einfügen (bashtuner -n [URL] [Sendername]). -sf Einen Sender aus der Onlineliste in die Favoritenliste übernehmen. -s Einen Sender in der Onlineliste suchen -sp Sendersuche spezial (Suchwort wird als Parameter übergeben) Usage: bashtuner -sp [Suchbegriff] -a Neue zeitgesteuerte Aufnahme anlegen (Onlineliste) -af Zeitgesteuerte Aufnahme (lokale Favouritenliste) -rw Radiowecker -h Zeigt diese Hilfe an. Programm Autor: Karsten Weidenfeld Kontakt: karsten.weidenfeld@googlemail.com EOF exit 0 } if [ -z "$1" ]; then -h exit 0 else $1 2>>.error fi |