-
-
Save bashtuner/6073807 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Programm Bashtuner | |
# Autor Karsten Weidenfeld | |
# OS Linux Mint 14, Ubuntu 12.04 | |
# Abhängigkeiten curl, vlc, zenity, streamripper, at | |
# 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: [email protected] | |
EOF | |
exit 0 | |
} | |
if [ -z "$1" ]; then -h | |
exit 0 | |
else | |
$1 2>>.error | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Wichtig:
Damit die zeitgesteuerte Aufnahme funktioniert muss "at" installiert sein, dies ist aber nicht in jeder Ubuntu Distri der Fall. Installation über die Konsole:
sudo apt-get install at