staging.inyokaproject.org

Script für Internetradio

Status: Ungelöst | Ubuntu-Version: Xubuntu 12.04 (Precise Pangolin)
Antworten |

bu-cipolla

Avatar von bu-cipolla

Anmeldungsdatum:
9. März 2013

Beiträge: 114

Hallo zusammen,

ich möchte ein Script schreiben, mit dem ich durch Tastatureingabe von Zahlen (1 bis n) die Sender wechseln kann. Ich habe dazu mpg321 gefunden. Wenn man z.B. eintippt "mpg321 http://1live.akacast.akamaistream.net/7/706/119434/v1/gnl.akacast.akamaistream.net/1live" hört man Eins Life. Die Adressen bekommt man auf der Homepage der Sender. Ich habe mir jetzt ein paar Adressen herausgesucht und folgendes Script geschrieben:

clear
w=1
case "$w" in
1)  mpg321 http://wdr-mp3-m-wdr2-koeln.akacast.akamaistream.net/7/812/119456/v1/gnl.akacast.akamaistream.net/wdr-mp3-m-wdr2-koeln;;
2)  mpg321 http://wdr-3.akacast.akamaistream.net/7/47/119437/v1/gnl.akacast.akamaistream.net/wdr-3;;
3)  mpg321 http://wdr-5.akacast.akamaistream.net/7/41/119439/v1/gnl.akacast.akamaistream.net/wdr-5;;
4)  mpg321 http://stream.dradio.de/7/249/142684/v1/gnl.akacast.akamaistream.net/dradio_mp3_dlf_m;;
5)  mpg321 http://stream.dradio.de/7/249/142684/v1/gnl.akacast.akamaistream.net/dradio_mp3_dlf_m;;
6)  mpg321 http://1live.akacast.akamaistream.net/7/706/119434/v1/gnl.akacast.akamaistream.net/1live
esac
read w

Ich setze die Variable w auf 1 und es wird WDR2 gespielt. Durch "read w" möchte ich den Sender wechseln. Das klappt aus zwei Gründen nicht.

1. kenne ich keinen Befehl, der zurückspringt in die 3.Zeile des Scripts.

2. Wenn der Stream mit mpg321 wiedergegeben wird, kann man nicht read bedienen, da man erst den Stream unterbrechen muss.

Ich hoffe auf Tipps, die mir weiterhelfen. Sicher helfen auch Tipps wie: "Dort findest du ein funktionierendes Skript..." Ich würde aber ungern etwas abtippen, was ich nicht verstehe. Lieber würde ich selbst ein, wenn auch zunächst rudimentäres, Spript selber schreiben.

Grüße aus Köln

Bu

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 13293

bu-cipolla schrieb:

2)  mpg321 http://wdr-3.akacast.akamaistream.net/7/47/119437/v1/gnl.akacast.akamaistream.net/wdr-3;;

2. Wenn der Stream mit mpg321 wiedergegeben wird, kann man nicht read bedienen, da man erst den Stream unterbrechen muss.

Versuch mal mit mpg123. Damit kannst Du den Stream mit q unterbrechen:

-C, --control
              Enable terminal control keys. By default use 's' or the space bar to stop/restart (pause, unpause) playback,  'f'  to  jump forward  to  the  next  song, 'b' to jump back to the beginning of the song, ',' to rewind, '.' to fast forward, and 'q' to quit.  Type 'h' for a full list of available controls.

tahr09

Anmeldungsdatum:
5. Januar 2011

Beiträge: 946

Hallo,

das kann z.B auch der VLC Player, wenns im Hintergrund ohne Fenster laufen soll cvlc.

vlc "http://1live.akacast.akamaistream.net/7/706/119434/v1/gnl.akacast.akamaistream.net/1live"
cvlc "http://1live.akacast.akamaistream.net/7/706/119434/v1/gnl.akacast.akamaistream.net/1live"

Den hat man ja sowieso meist schon installiert.

Ich hab mir auch mal solch ein Radio gemacht.

..kenne ich keinen Befehl, der zurückspringt in die 3.Zeile des Scripts.

Den gibts so nicht.

Wenn der Stream mit mpg321 wiedergegeben wird, kann man nicht read bedienen, da man erst den Stream unterbrechen muss.

Deswegen habe ich die Unterbrech und Radiobefehle in Funktionen gepackt, und starte die Funktionen mit einem YAD-Menü.

Sicher helfen auch Tipps wie: "Dort findest du ein funktionierendes Skript..."

Wenn du nicht weiter kommst kannst du ja mal hier abspickeln und fragen wenn was nicht klar ist.

Hier findest du ein funktionierendes Skript:

 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
#!/bin/bash
#Sender feslegen
#_________________________________________________________


regenbogen() {
killall vlc
cvlc http://217.151.151.91/live
exit 1
}

swr3() {
killall vlc
cvlc http://mp3-live.swr3.de/swr3_m.m3u
exit 1
}

badenfm() {
killall vlc
cvlc mms://regio-tv-streamer.de/badenfm
exit 1
}

bigfm() {
killall vlc
cvlc http://srv04.bigstreams.de/bigfm-mp3-64
exit 1
}

reggae() {
killall vlc
cvlc http://www.sky.fm/mp3/rootsreggae.pls
exit 1
}

close() {
killall vlc
exit 1
}
#_________________________________________________________
#Export der Sender
export -f regenbogen 
export -f swr3
export -f badenfm
export -f bigfm
export -f reggae
export -f close

#Pipe erstellen
PIPE="$HOME/.pipe.tmp"
rm $PIPE
mkfifo $PIPE
exec 3<> $PIPE

#_________________________________________________________
#Yad Menü 
yad --kill-parent --notification --listen <&3 & 

#Menü
echo "menu:\
Radio Regenbogen!bash -c regenbogen!|\
SWR 3!bash -c swr3|\
Baden FM!bash -c badenfm|\
Big FM!bash -c bigfm|\
Roots Reggae!bash -c reggae|\
_______________________________________________________________!continue|\
Radio ausschalten!bash -c close" >&3


#Icon im Tray
echo "icon:/opt/Symbole/radio.png" >&3

#Tooltip im Tray
echo "tooltip:Webradio" >&3
#__________________________________________________________

Screenshot

Wenns ein reines Konsolenprogramm werden soll habe ich keinen Workaround für das read-Problem.

tahr09

Anmeldungsdatum:
5. Januar 2011

Beiträge: 946

Ansonsten suchst du den Bashtuner in seiner Urform.

bu-cipolla

(Themenstarter)
Avatar von bu-cipolla

Anmeldungsdatum:
9. März 2013

Beiträge: 114

Vielen Dank Julian 92 und Lubux,

da habe ich ja ein paar gute Tipps bekommen, ein funktionierendes Skript zum Abgucken und den Hinweis auf die Diskussion über "Bashtuner". Damit werde ich mich beschäftigen und mich melden. Das kann aber ein paar Tage dauern. Habe wenig Zeit und bin langsam. Schade, dass es keinen Sprungbefehl gibt wie in BASIC. Aber wahrscheinlich hat das seinen Grund: Dann würde der Prozessor in einer Schleife ackern und Rechenpower verschwenden??

Grüße aus Köln

Bu

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Julian92 schrieb:

Hallo,

das kann z.B auch der VLC Player, wenns im Hintergrund ohne Fenster laufen soll cvlc.

vlc "http://1live.akacast.akamaistream.net/7/706/119434/v1/gnl.akacast.akamaistream.net/1live"
cvlc "http://1live.akacast.akamaistream.net/7/706/119434/v1/gnl.akacast.akamaistream.net/1live"

So würde ich es auch machen ! - allerdings würde ich den jeweiligen Senderaufruf noch in den Hintergrund schicken, damit das Skript dann gleich weiter läuft, und man den Sender fliegend wechseln kann:

track@lucid:~$ killall cvlc; cvlc http://wdr-3.akacast.akamaistream.net/7/47/119437/v1/gnl.akacast.akamaistream.net/wdr-3  & 
track@lucid:~$ killall cvlc; cvlc http://mp3-live.swr3.de/swr3_m.m3u  &  

usw. ...

LG,

track

microft

Avatar von microft

Anmeldungsdatum:
6. August 2009

Beiträge: 454

Bau dir eine Playlist mit den einzelnen Sendern zusammen und wechsle dann mit "prev" "next" Track zwischen den Sendern.

"Rasiermesserregel" !

cu

homer65

Avatar von homer65

Anmeldungsdatum:
8. November 2005

Beiträge: 506

Da du dich für Internet Radio und die zugehörigen URL interessierst, möchte ich dich auf mein Projekt http://www.myoggradio.org hinweisen. Auch wenn es nichts mit selber programmieren zu tun hatt, ist es vielleicht doch für dich von Interesse. Es gibt dort mehr als 400 URL von Internet Radios.

tahr09

Anmeldungsdatum:
5. Januar 2011

Beiträge: 946

Im Wiki haben wir auch eine Seite mit verschiedenen Stationen.

Klick

bu-cipolla

(Themenstarter)
Avatar von bu-cipolla

Anmeldungsdatum:
9. März 2013

Beiträge: 114

Hallo Julian92,

deinem Script bin ich als Neuling nicht gewachsen. Aber der Hinweis auf bash-tuner war gut. Das Script konnte ich nachvollziehen. Es ist so ähnlich wie mein Versuch. Ich verstehe jetzt auch, wie der Rücksprung nach einem Senderwechsel passiert: Das Script wird einfach neu gestartet. Das werde ich in meinem Versuch verwerten!

Naja, dein Script - Respekt! Ich verstehe fast nichts. Bei mir ist es leider nicht gelaufen. Die Shell meldete: "yad: Kommando nicht gefunden".

Da du gesagt hast, ich könnte dich ruhig fragen, hier dann drei Fragen: Wird hier eine Variable bestimmt? Warum Killall?

regenbogen() {
killall vlc
cvlc http://217.151.151.91/live
exit 1
}

Was passiert hier?

export -f regenbogen 

Ich habe noch mehr Fragen, aber ich will erstmal sehen, ob ich deine Antworten verstehe. 😉

Grüße aus Köln

Bu

tahr09

Anmeldungsdatum:
5. Januar 2011

Beiträge: 946

Hm also das Skript läuft bei dir nicht, weil du yad nicht installiert hast.

Wie man das installiert steht im Artikel

Wird hier eine Variable bestimmt?

Nennt sich Funktion.

Sie heißt in dem Fall regenbogen.

Nachdem man sie so definiert hat, kann man sie später im Skript einfach aufrufen.

D.h immer wenn das Skript später den "Befehl" regenbogen bekommt, wird alles ausgeführt was in der geschweiften Klammer steht.

Warum Killall?

Das Skript spielt gerade z.B die Funktion regenbogen ab.

Wenn ich jetzt die nächste Funktion, z.B swr3 aufrufen würde, dann würden ja beide Sender gleichzeitig laufen.

Deswegen "kille", beende ich bei jedem neuen Sender(Funktions)-Aufruf den vlc-Player, damit der alte Sender gestoppt wird. Danach dann der Aufruf für den neuen Sender.

Das mit dem export habe ich mir mal irgendwo abgeschaut. Aufjedenfall benötigt yad das, um die Funktionen über das Menü aufzurufen.

bu-cipolla

(Themenstarter)
Avatar von bu-cipolla

Anmeldungsdatum:
9. März 2013

Beiträge: 114

Hallo Julian 92,

Danke! Wieder was gelernt!

Ich habe über "export" gerade ein bischen gelesen. Soweit ich verstanden habe, wird der Ausdruck "Regenbogen" mit der implizierten Funktionsfolge so abgelegt (exportiert), dass die shell ihn findet und wie einen bash-Befehl ausführen kann.

Grüße aus Köln

Bu

Antworten |