KarstenW.
Anmeldungsdatum: 27. Juni 2011
Beiträge: 208
|
Habe gerade aus Langeweile mal ein kleines Script unter Ubuntu 10.04 geschrieben, vielleicht mag es mal jemand testen und ein kleines Feedback abgeben. Da ich gerne Radio beim arbeiten höre, ungerne zig Webseiten anklicke und den Flashplayer im Browser eh nicht mag kam mir die Idee. Funktioniert prima und läuft im Hintergrund. Info zum Script: Mit diesem Shellscript empfangen Sie Radiostreams aus dem Internet. Durch Eingabe einer angezeigten Sendernummer wählt man den gewünschten Sender an. Das Script kann beliebig erweitert werden und an die Wünsche des Nutzers angepasst werden. Voraussetzung ist der mplayer. Das Script wird einfach in einen gewünschten Ordner entpackt und mit einem Doppelklick auf die Datei bash-tuner.sh “Ausführen im Terminal” gestartet. Sollte das Script nicht starten bzw. sich eine Textdatei öffnen muss es ausführbar gemacht werden. Mehr Infos auf meiner Webseite: http://www.bitdome.de/
- bash-tuner.sh.tar.gz (815 Bytes)
- Download bash-tuner.sh.tar.gz
|
tahr09
Anmeldungsdatum: 5. Januar 2011
Beiträge: 946
|
Hey, etwas ähnliches habe ich vor kurzen auch gebastelt. Die Idee ist echt gut ☺ Eleganter fände ich es noch, wenn die Senderauswahl grafisch erfolgt. Ich würde das so machen: | #! /bin/bash
#Senderwahl grafisch erfragen
sender=$(zenity --list --width=600 --height=400 --text "Wähle einen Sender:" --column " " 'Radio Vorarlberg' 'Antenne Vorarlberg - HD ' 'ANTENNE VORARLBERG - Partymix ' 'ANTENNE VORARLBERG - Die 80er' 'ANTENNE VORARLBERG - Schlagerkult' 'ANTENNE VORARLBERG - Lounge' 'ANTENNE VORARLBERG - Classic Rock' 'ANTENNE VORARLBERG - Hit' 'ANTENNE VORARLBERG - Lovesongs' 'ANTENNE VORARLBERG - Die 90er' 'ANTENNE VORARLBERG - Die 70er' --separator=":" --title="Senderwahl" );
|
Jetzt ist die Auswahl des Users in der Variable $sender gespeichert. Diese kannst du dann auswerten: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | #Wenn der User 'Radio Voralberg' wählt, dann starte mplayer mit Stream
if [ $sender = 'Radio Voralberg' ]
then
mplayer -playlist http://yp.shoutcast.com/sbin/tunein-station.pls?id=1568257
exit 1
#Wenn der User 'Antenne Vorarlberg - HD ' wählt, dann starte mplayer mit Stream
elif [ "$sender" = 'Antenne Vorarlberg - HD ' ]
then
mplayer -playlist http://yp.shoutcast.com/sbin/tunein-station.pls?id=2301871
exit 1
..
..
..
..
# If-Schleife beenden
fi
# Script beenden
exit 1
|
So irgendwie.. Weißt du wie ich meine? Nur die Abfrage findet dann also grafisch statt. Wenn du allerdings auf sowas verzichten möchtest, dann vergiss alles ganz schnell wieder 👍 Soweit zu meinen Ideen zur Verbesserung. PS: Vergesse nicht den exit Befehl am Ende eines Scriptes. Anbei ein Screenshot der Ausgabe meiner Abfrage. lg
- Bilder
|
KarstenW.
(Themenstarter)
Anmeldungsdatum: 27. Juni 2011
Beiträge: 208
|
Hey, danke für das Feedback. Die Idee mit Zenity ist gut und das werde ich auch bestimmt umsetzen um das ganze ein bisschen grafischer zu gestalten. Mit dem mplayer lassen sich viele Ideen richtig gut realisieren. Ähnliches wie mit dem Radio habe ich schon mit Vodcasts (mp4) von Podcast.de umgesetzt. Im lokalen Netzwerk nutze ich ein ähnliches Script zum streamen von Musik und Videos. Momentan bastel ich noch daran einen Stream auf die Platte zu speichern, auch das macht der mplayer hervorragend. Was mir noch fehlt ist eine Möglichkeit Youtube Videos mit dem mplayer abzuspielen. Vielleicht hat der ein oder andere noch eine Idee die man umsetzen kann. Denkbar wäre auch alles in einem Script zu verpacken um ein Multifunktionsprogramm daraus zu machen. lg
|
berndd
Anmeldungsdatum: 24. März 2007
Beiträge: 944
|
Hallo, habe das Skript auf Funktion überprüft- soweit ich sehe funktionieren alle Funktionen. Da ich solche Skripte am liebsten per Tastenkombination aufrufe, habe ich das Skript in einem Verzeichnis abgespeichert und unter System/Einstellungen/Tastenkombinationen eine neu Kombination angelegt. Damit sich beim Start per Kombination auch ein Terminal öffnet starte ich das Skript mit dem Befehl: | gnome-terminal -e /home/bernd/ubuntu/bash-tuner.sh
|
Finde das Skript auch in dieser Fassung für meine Ansprüche genügend - muss nur noch ein paar Sender hinzufügen. Gruß Bernd
|
KarstenW.
(Themenstarter)
Anmeldungsdatum: 27. Juni 2011
Beiträge: 208
|
Hallo Bernd, danke für das Feedback freut mich das Dir das Script gefällt. lg
|
berndd
Anmeldungsdatum: 24. März 2007
Beiträge: 944
|
Hallo, noch ein kleiner Nachtrag: Das Skript in meinem Homeverzeichnis auszuführen hat mit dem Aufruf über die Tastenkombination zu starten hat nicht geklappt. Nach drücken der q Taste ist die Konsole geschlossen worden. Habe das Skript unter /usr/local/bin abgespeichert. Jetzt funktioniert es. Vielen Dank für das Skript. Gruß
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17576
Wohnort: Berlin
|
Wenn Du hier ein wenig gelesen hättest, bevor Du schreibst, hättest Du merken können, dass Du ein Skript, das komprimiert 800 Bytes groß ist, einfach in einem Codeblock einfügst und fertig. Im Netz ist jeder Klick ein Hemmnis, eine Schranke, eine Hürde. Ich muß, auch wenn ich nur mal einen Blick drauf werfen will, runterladen, entzippen, und dann in einen Editor laden, sehr viel Gelegenheit zu sagen: ach ne! Und wenn ich dann was kritisiere weiß keiner, wovon ich spreche, oder muss es selbst runterladen, und wenn die Diskussion weitergeht, nochmal runterladen - oder es liegt irgendwo rum, und vermüllt das System. Hier ist es:
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 | #!/bin/bash
# Bash-Tuner
# Ein Script von Karsten Weidenfeld (2011)
clear
echo ====================================
echo Antenne Vorarlberg @ Bash-Tuner @
echo http"://www.Bitdome.de"
echo ====================================
echo
echo " 1. Radio Vorarlberg
2. Antenne Vorarlberg - HD
3. ANTENNE VORARLBERG - Partymix
4. ANTENNE VORARLBERG - Die 80er
5. ANTENNE VORARLBERG - Schlagerkult
6. ANTENNE VORARLBERG - Lounge
7. ANTENNE VORARLBERG - Classic Rock
8. ANTENNE VORARLBERG - Hit
9. ANTENNE VORARLBERG - Lovesongs
10.ANTENNE VORARLBERG - Die 90er
11.ANTENNE VORARLBERG - Die 70er"
echo
echo "Playersteuerung: [9] Leiser [0] Lauter [Q) Sender beenden [url] Streamadresse abspielen"
echo
echo "Bitte geben Sie die Programmnummer ein
Programm beenden mit [x]:"
read sendernummer
case "$sendernummer" in
1)
clear
#1.Radio Vorarlberg
mplayer -playlist http://yp.shoutcast.com/sbin/tunein-station.pls?id=1568257
;;
2)
clear
#2.Antenne Vorarlberg HD
mplayer -playlist http://yp.shoutcast.com/sbin/tunein-station.pls?id=2301871
;;
3)
clear
#3.ANTENNE VORARLBERG - Partymix
mplayer -playlist http://yp.shoutcast.com/sbin/tunein-station.pls?id=1271847
;;
4)
clear
#4.ANTENNE VORARLBERG - Die 80er
mplayer -playlist http://yp.shoutcast.com/sbin/tunein-station.pls?id=1280075
;;
5)
clear
#5.ANTENNE VORARLBERG - Schlagerkult
mplayer -playlist http://yp.shoutcast.com/sbin/tunein-station.pls?id=1270547
;;
6)
clear
#6.ANTENNE VORARLBERG - Lounge
mplayer -playlist http://yp.shoutcast.com/sbin/tunein-station.pls?id=1268946
;;
7)
clear
#7.ANTENNE VORARLBERG - Classic Rock
mplayer -playlist http://yp.shoutcast.com/sbin/tunein-station.pls?id=927112
;;
8)
clear
#8.ANTENNE VORARLBERG - Hit
mplayer -playlist http://yp.shoutcast.com/sbin/tunein-station.pls?id=1275817
;;
9)
clear
#9.ANTENNE VORARLBERG - Lovesongs
mplayer -playlist http://yp.shoutcast.com/sbin/tunein-station.pls?id=1268893
;;
10)
clear
#10.ANTENNE VORARLBERG - Die 90er
mplayer -playlist http://yp.shoutcast.com/sbin/tunein-station.pls?id=1266169
;;
11)
clear
#11.ANTENNE VORARLBERG - Die 70er
mplayer -playlist http://yp.shoutcast.com/sbin/tunein-station.pls?id=2166816
;;
url)
echo "Bitte geben Sie die Streamadresse ein die abgespielt werden soll:"
read streamurl
clear
mplayer -playlist $streamurl
;;
x)
exit
;;
*)
bash bash-tuner.sh
;;
esac
bash bash-tuner.sh
|
Auf die schnelle sehe ich 3 Kritikpunkte: clear löscht den Bildschirm, und das macht man unter Unix nicht. Vielleicht steht da was, was der User noch braucht.
2. Durchgehende Großschreibung wie "ANTENNE VORARLBERG" gilt als Brüllen, und liest sich schlecht, weil es keine Variation in der Zeichengröße gibt. 3. Für die Sender gibt es ja ein Mapping Name=>id. Würde man die Senderliste in einer Datei im Userverzeichnis pflegen, dann könnten mehrere User das Programm mit unterschiedlichen Sendern pflegen. Man hätte Programm und Daten getrennt.
|
tahr09
Anmeldungsdatum: 5. Januar 2011
Beiträge: 946
|
clear löscht den Bildschirm, und das macht man unter Unix nicht. Vielleicht steht da was, was der User noch braucht.
Das hatte ich zu Beginn auch gedacht. Allerdings ist das so nicht ganz richtig, zumindest in all meinen bisherigen Scripten. Clear verschiebt im Bash-Script alles bisherige aus dem Blickfeld. Mit der Scrollbar kann man nach oben fahren und die vorherigen Ereignisse einsehen. Es täuscht also im Prinzip nur ein frisches Fenster vor.
|
KarstenW.
(Themenstarter)
Anmeldungsdatum: 27. Juni 2011
Beiträge: 208
|
Hallo, ich bedanke mich erstmal für euer Feedback. Sicher ich hätte das Script einfach in einen Codeblock einbauen können, sorry daran habe ich nicht gedacht. Die Sendernamen habe ich so aus dem Shoutcast.com Verzeichnis übernommen. Die Idee mit der Mapping ID finde ich gut, allerdings weiß ich nicht genau wie man das realisiert. Das ich clear eingesetzt habe hat genau den Grund den Julian92 genannt hat. @Bernd - Danke für den Hinweis.
|
tahr09
Anmeldungsdatum: 5. Januar 2011
Beiträge: 946
|
allerdings weiß ich nicht genau wie man das realisiert.
Eventuell irgendwie so: Datei mit den Sendern: (Man nenne sie Sender, und lege sie in /$HOME ab 1. Radio Vorarlberg
2. Antenne Vorarlberg - HD
3. Antenne Vorarlberg - Partymix
4. Antenne Vorarlberg - Die 80er
5. Antenne Vorarlberg - Schlagerkult
6. Antenne Vorarlberg - Lounge
7. Antenne Vorarlberg - Classic Rock
8. Antenne Vorarlberg - Hit
9. Antenne Vorarlberg - Lovesongs
10.Antenne Vorarlberg - Die 90er
11.Antenne Vorarlberg - Die 70er Und im Script selbst, dann: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 | #!/bin/bash
# Bash-Tuner
# Ein Script von Karsten Weidenfeld (2011)
echo ====================================
echo Antenne Vorarlberg @ Bash-Tuner @
echo http"://www.Bitdome.de"
echo ====================================
# Senderliste importieren und in Variable schreiben
senderliste=`cat $HOME/Sender`
# Senderliste anzeigen
echo "$senderliste"
echo "Playersteuerung: [9] Leiser [0] Lauter [Q) Sender beenden [url] Streamadresse abspielen"
echo
echo "Bitte geben Sie die Programmnummer ein
Programm beenden mit [x]:"
read sendernummer
..und
..so
..weiter
|
Jetzt hast du ja bald genug Stoff für eine Version 2. War jetzt nur auf die schnelle, und ohne groß darüber nachzudenken. Müsste aber eigentlich so in der Art machbar sein. Wenn du meine erste Idee mit Zenity realisieren willst, sieht die Geschichte aber etwas anders aus. btw: Das Clear in Zeile 4 hat keinen Nutzen 😉
|
KarstenW.
(Themenstarter)
Anmeldungsdatum: 27. Juni 2011
Beiträge: 208
|
Mit Zenity tu ich mich ehrlich gesagt ein bisschen schwer und wenn ich mich an der grafischen Senderauswahl versuche bekomme ich immer den Fehler "Zu viele Argumente". Bisher habe ich den Fehler noch nicht verstanden. Die Idee die Sender in einer eigenen Datei zu speichern ist gut. Allerdings erkenne ich noch nicht richtig wie das Script meine Eingabe auswertet und dann die entsprechende URL aus der Datei holen will um sie an den mplayer zu übergeben. Dafür müsste das Script entsprechend einer Eingabe die Sender URL aus Zeile ... der Datei Beispiel "Senderliste" holen. Wäre sicherlich interessant wenn man das realisieren könnte.
|
busfahrer
Anmeldungsdatum: 9. April 2007
Beiträge: 3052
|
KarstenW. schrieb: Mit Zenity tu ich mich ehrlich gesagt ein bisschen schwer
Das könnte mit Zenity vielleicht ungefähr so aussehen(in gekürzter Form) 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 | #!/bin/bash
# Bash-Tuner
# Ein Script von Karsten Weidenfeld (2011)
clear
echo ====================================
echo Antenne Vorarlberg @ Bash-Tuner @
echo http"://www.Bitdome.de"
echo ====================================
echo
echo "Playersteuerung: [9] Leiser [0] Lauter [Q) Sender beenden [url] Streamadresse abspielen"
echo
sendernummer=$(zenity --list --radiolist --width=500 --height=500 --text "Senderauswahl"\
--title "Senderliste" --column " " --column Sender-Nr. --column Sender " " 1 "Radio Vorarlberg"\
" " 2 "Antenne Vorarlberg - HD" " " "x" "exit")
case "$sendernummer" in
1)
clear
#1.Radio Vorarlberg
mplayer -playlist http://yp.shoutcast.com/sbin/tunein-station.pls?id=1568257
;;
2)
clear
#2.Antenne Vorarlberg HD
mplayer -playlist http://yp.shoutcast.com/sbin/tunein-station.pls?id=2301871
;;
x)
exit
;;
*)
bash bash-tuner.sh
;;
esac
bash bash-tuner.sh
|
Das ist aber auf jeden Fall noch verbesserungswürdig, da das Beenden des Programms nicht ganz reibungslos funktioniert. Gruß...busfahrer €dit: Das Beenden funktioniert so auch problemlos, hatte eben wohl nur einen Furz quer sitzen ☺
|
KarstenW.
(Themenstarter)
Anmeldungsdatum: 27. Juni 2011
Beiträge: 208
|
Hallo Busfahrer, ja so ähnlich habe ich das auch schon, der Fehler von Julian war die IF Anweisung die funktioniert nicht man muss das mit CASE lösen. Das ganze mit Zenity grafisch aufzuwerten ist ansich nicht schwer, allerdings versuche ich momentan die URL aus einer seperaten Datei zu holen und mit dem Script an mplayer zu übergeben. Das nächste Problem ist, wenn ich das Script mit Zenity direkt ausführe, also ohne Terminal sieht das gut aus weil man das Terminalfenster nicht mehr sieht. Allerdings kann man dann den Stream nicht mehr beenden ☺ Zwar lässt der sich in einem neuen Terminalfenster per killall mplayer abwürgen, aber das ist nicht so die feine Art. Überlege gerade wie ich einen Button realisiere um das Radio zu stoppen und wieder in die Senderauswahl gelangen kann. Gruß
Karsten
|
KarstenW.
(Themenstarter)
Anmeldungsdatum: 27. Juni 2011
Beiträge: 208
|
Hallo, Dank Julian92 konnte ich den Bash-Tuner durch Einsatz von Zenity nun etwas eleganter gestalten. Gemeinsam mit Julian92 arbeite ich derzeit an einem Projekt das wir nach Fertigstellung hier bei Ubuntuusers.de veröffentlichen. An dieser Stelle möchte ich nun den Bash-Tuner in der Zenity Version vorstellen. Das Ausführen muss jetzt nicht mehr zwingend im Terminal erfolgen. Das Script einfach in eine Textdatei kopieren, unter gewünschten Namen .sh abspeichern und ausführbar machen. Mit einem Doppelklick und der Auswahl "ausführen" wird das Script gestartet. Sender doppelt anklicken oder mit Ok auswählen und das Radio öffnet sich im VLC Player. Tipp:
In dieser Version schließt sich das Script nachdem der VLC Player startet, allerdings kann man das ändern in dem man "& exec /[Pfad]/[Scriptname].sh hinter jedem Aufruf des VLC Players an das Ende der Stream URL setzt. Danach würde das Auswahlmenü nach Senderstart immer wieder neu starten bis man es mit abbrechen beendet. Die Senderliste kann kinderleicht beliebig erweitert werden. Oben in der Zeile wo die zenity Liste erstellt wird 'Sendername'hinzufügen und dann am Ende des Scripts die Schleife erweitern. Am Ende muss natürlich immer fi stehen um die Schleife zu beenden. Wie das gemacht werden muss sollte beim ansehen des Scriptes klar sein. Jetzt zum Script: Voraussetzung ist zenity und der VLC Player, beides ist in den offiziellen Quellen vorhanden. Zur Installation dieser Programme erfährt man im Wiki mehr. Hier nun 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 | #!/bin/bash
#Bash-Tuner (Zenity)
#Autor: Karsten Weidenfeld
#www.Bitdome.de
auswahl=$(zenity --list --width=280 --height=230 --text "Sender auswählen:" --column " " 'Hellweg Radio' 'Radio FFH' 'Radio FFH Top40' 'Radio FFH Die 80er' 'Radio FFH Rock' 'Radio FFH Beats' 'Radio FFH Eurodance' 'Radio FFH Deutsch Pur' 'Radio FFH Soundtrack' 'Radio FFH Hits für Kids' 'Radio FFH Schlagerkult' --title="Bash-Tuner (Zenity)" );
if [ "$auswahl" = 'Hellweg Radio' ]
then
#Hellweg
killall vlc
vlc http://yp.shoutcast.com/sbin/tunein-station.pls?id=465578
exit 1
elif [ "$auswahl" = 'Radio FFH' ]
then
#Radio FFH
killall vlc
vlc http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u
exit 1
elif [ "$auswahl" = 'Radio FFH Top40' ]
then
#Radio FFH Top40
killall vlc
vlc http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u
exit 1
elif [ "$auswahl" = 'Radio FFH Die 80er' ]
then
#Radio FFH Die 80er
killall vlc
vlc http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u
exit 1
elif [ "$auswahl" = 'Radio FFH Rock' ]
then
#Radio FFH Rock
killall vlc
vlc http://streams.ffh.de/ffhchannels/mp3/hqrock.m3u
exit 1
elif [ "$auswahl" = 'Radio FFH Beats' ]
then
#Radio FFH Beats
killall vlc
vlc http://streams.ffh.de/ffhchannels/mp3/hqelectrobeatz.m3u
exit 1
elif [ "$auswahl" = 'Radio FFH Eurodance' ]
then
#Radio FFH Eurodance
killall vlc
vlc http://streams.ffh.de/ffhchannels/mp3/hqeurodance.m3u
exit 1
elif [ "$auswahl" = 'Radio FFH Deutsch Pur' ]
then
#Radio FFH Deutsch Pur
killall vlc
vlc http://streams.ffh.de/ffhchannels/mp3/hqdeutsch.m3u
exit 1
elif [ "$auswahl" = 'Radio FFH Soundtrack' ]
then
#Radio FFH Soundtrack
killall vlc
vlc http://streams.ffh.de/ffhchannels/mp3/hqsoundtrack.m3u
exit 1
elif [ "$auswahl" = 'Radio FFH Hits für Kids' ]
then
#Radio FFH Hits für Kids
killall vlc
vlc http://streams.ffh.de/ffhchannels/mp3/hqhits4kids.m3u
exit 1
elif [ "$auswahl" = 'Radio FFH Schlagerkult' ]
then
#Radio FFH Schlagerkult
killall vlc
vlc http://streams.ffh.de/ffhchannels/mp3/hqschlager.m3u
exit 1
fi
|
Natürlich freue ich mich über jegliches Feedback. Gruß
Karsten
|
dAnjou
Anmeldungsdatum: 8. Oktober 2007
Beiträge: 872
Wohnort: Berlin
|
Auweia! Niemals killall in einem Skript verwenden! Was, wenn der Nutzer andere Instanzen von VLC offen hat und diese auch weiterhin offen haben will? Es gibt Möglichkeiten, sich die Prozess-ID eines gestarteten Programms zu holen und dann gezielt zu killen.
|