Skip to content

Instantly share code, notes, and snippets.

@bashtuner
Forked from hoodie/bashtuner.sh
Last active December 20, 2015 04:49
Show Gist options
  • Save bashtuner/6073807 to your computer and use it in GitHub Desktop.
Save bashtuner/6073807 to your computer and use it in GitHub Desktop.
#!/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
@bashtuner
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment