Diskussion:Radiosender: Unterschied zwischen den Versionen
(+ http://webradio.wdr.de : der WDR hat eine Seite mit den Adressen aller seiner Streams. --~~~~) |
K (→Exporthilfe aus Daten-Tabellen für Änderungen im Wiki) |
||
(9 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) | |||
Zeile 74: | Zeile 74: | ||
#!/bin/bash | #!/bin/bash | ||
#---------------------------------------------------------------------- | #---------------------------------------------------------------------- | ||
− | # Author: robi@linux-club.de | + | # Orginal-Author: robi@linux-club.de |
− | # Version: | + | # Version: 4, written: Di 13. Mär 02:14:38 CET 2013 |
+ | # Script changed by spielwurm@linux-club.de | ||
+ | # Last change: 14. Oktober 16 | ||
#---------------------------------------------------------------------- | #---------------------------------------------------------------------- | ||
# Dieses Script konvertiert eine CSV-Datei in das passende Wiki-Format | # Dieses Script konvertiert eine CSV-Datei in das passende Wiki-Format | ||
Zeile 92: | Zeile 94: | ||
if [ $# != 1 ]; then echo -e "\nAufruf: $0 datei.csv \n\n";exit 1;fi | if [ $# != 1 ]; then echo -e "\nAufruf: $0 datei.csv \n\n";exit 1;fi | ||
if [ -r "$1" -a -f "$1" ]; then | if [ -r "$1" -a -f "$1" ]; then | ||
− | if [ "$(head -1 "$1" |cut -d';' - | + | if [ "$(head -1 "$1" |cut -d';' -f6 |cut -d'"' -f2)" != "Adresse" ]; then |
echo -e "\n\"$1\" scheint keine für dieses Script geeignete CSV-Datei zu sein\n\n";exit 2;fi | echo -e "\n\"$1\" scheint keine für dieses Script geeignete CSV-Datei zu sein\n\n";exit 2;fi | ||
else echo -e "\n\"$1\" ist keine lesbare Datei\n\n"; exit 3;fi | else echo -e "\n\"$1\" ist keine lesbare Datei\n\n"; exit 3;fi | ||
Zeile 105: | Zeile 107: | ||
NR==1 { print "{| class=\"wikitable sortable\" border=\"1\" cellspacing=\"0\"" | NR==1 { print "{| class=\"wikitable sortable\" border=\"1\" cellspacing=\"0\"" | ||
print " |- style=\"background-color:#009ACD;\"" | print " |- style=\"background-color:#009ACD;\"" | ||
− | printf " !" NAME[ | + | printf " !" NAME[1] "!!" STADT[1] "!!" LAND[1] "!!" BIT[1] "!!" |
− | print " class=\"unsortable\"| " BEMERK[ | + | print " class=\"unsortable\"| " BEMERK[1] "!!class=\"unsortable\"|" ADDR[1] } |
NR!=1 { FARBE= "#FFCC00" ; | NR!=1 { FARBE= "#FFCC00" ; | ||
− | if (BIT[1] < | + | if (BIT[1] < 56 ) FARBE= "#ccffaa" ; |
− | if (BIT[1] == 0 ) FARBE= "# | + | if (BIT[1] == 0 ) FARBE= "#ffffff" ; |
− | if (BIT[1] > | + | if (BIT[1] > 55 ) FARBE= "#ddeeaa" ; |
− | if (BIT[1] > 128 ) | + | if (BIT[1] > 120 ) FARBE= "#ffee99" ; |
+ | if (BIT[1] > 128 ) FARBE= "#ffffbb" ; | ||
print "|- style=\"background-color:" FARBE ";\"" | print "|- style=\"background-color:" FARBE ";\"" | ||
− | print "|",NAME[ | + | print "|",NAME[1],"||",STADT[1],"||",LAND[1],"||align=\"center\" |",BIT[1],"||",BEMERK[1],"||",ADDR[1] } |
END { print "|}" }' "$1" | END { print "|}" }' "$1" | ||
#-----------------END------------------------------------------------- | #-----------------END------------------------------------------------- | ||
+ | |||
</pre> | </pre> | ||
− | |||
− | |||
=== Erstellen einer Wiedergabeliste für kaffeine === | === Erstellen einer Wiedergabeliste für kaffeine === | ||
Zeile 272: | Zeile 274: | ||
== WDR Streamadressen == | == WDR Streamadressen == | ||
http://webradio.wdr.de : der WDR hat eine Seite mit den Adressen aller seiner Streams. --[[Benutzer:Wikinaut|Wikinaut]] 09:27, 20. Nov. 2011 (UTC) | http://webradio.wdr.de : der WDR hat eine Seite mit den Adressen aller seiner Streams. --[[Benutzer:Wikinaut|Wikinaut]] 09:27, 20. Nov. 2011 (UTC) | ||
+ | |||
+ | == <div style="font-size:30px; color: #f00" >Betreuung der Senderliste gesucht </div>== | ||
+ | |||
+ | Wegen eines nebenberuflichen Studiums bin ich seit geraumer Zeit vollkommen »Land unter«. Der Zustand wird sich absehbar in den nächsten 3 Jahren nicht ändern. Deshalb muss ich die Betreuung der Seite abgeben. Für Tipps stehe ich natürlich jederzeit gerne zur Verfügung. [[Benutzer:albschrat|albschrat]] 10:31, 30. Dez. 2011 (UTC) | ||
+ | |||
+ | :: Ich habs mal mit ins Forum übernommen, dort wird das eventuell eht gelesen [[Benutzer:Robi|Robi]] 13:38, 30. Dez. 2011 (UTC) | ||
+ | |||
+ | == Kleines HilfsTool um die Verfügbarkeit der Stream zu prüfen == | ||
+ | |||
+ | Das Tool geht jede URL der List durch und konnected und spielt den Stream für 10 Sekunden ab. Damit kann man relative leicht prüfen, ob die Streams noch verfügbar sind. Bei den ca 500 URLs dauert das ca 90 Minuten. | ||
+ | |||
+ | Voraussetzung: robis Script um die URLs und Beschreibungen aus der WikiSeite zu extrahieren | ||
+ | <pre> | ||
+ | #!/bin/bash | ||
+ | #---------------------------------------------------------------------- | ||
+ | # Author: robi@linux-club.de | ||
+ | # Version: TEST-SCRIPT, -ungetestet- | ||
+ | #---------------------------------------------------------------------- | ||
+ | # Dieses Script holt über das Internet die Daten der Tabellen auf | ||
+ | # http://www.linupedia.org/opensuse/Radiosender[-1] und erzeugt eine | ||
+ | # Wiedergabeliste für das Programm Amarok . | ||
+ | # bei Option -1 oder -2 wird jeweils nur eine Seite ausgelesen, | ||
+ | # default und bei unklaren Optionen werden beide Seiten ausgelesen | ||
+ | # | ||
+ | # Aufruf: ./script [ -1 | -2 ] > meine_liste.m3u | ||
+ | # | ||
+ | #--------------------------------------------------------------------- | ||
+ | SEITE1="http://www.linupedia.org/opensuse/Radiosender" | ||
+ | SEITE2="http://www.linupedia.org/opensuse/Radiosender-1" | ||
+ | READ="$SEITE1 $SEITE2" | ||
+ | if [ $# -eq 1 -a "$1" = "-1" ] ;then READ=$SEITE1; | ||
+ | else if [ $# -eq 1 -a "$1" = "-2" ] ; then READ=$SEITE2; fi | ||
+ | fi | ||
+ | |||
+ | wget -U "" $READ -O - 2>/dev/null | \ | ||
+ | awk '/^<table.*ikitable sortable/,/<\/table/ {print $0}' | \ | ||
+ | awk '/^<tr/,/<\/tr>/ {printf $0} ; /<\/tr>/ {print}' |\ | ||
+ | sed 's#\(<[^>]*>\)#;#g' | \ | ||
+ | sed -ne 's# *;\{1,\} *#;#gp' | \ | ||
+ | awk -F';' 'BEGIN {OFS=";"} | ||
+ | NR==1 {print "\"" $2 "\"","\"" $3 "\"","\"" $4 "\"","\"" $5 "\"","\"" $6 "\"","\"" $7 "\""} | ||
+ | NR!=1 && $2!="Sender" {print "\"" $2 "\"","\"" $3 "\"","\"" $4 "\"",$5,"\"" $6 "\"","\"" ($8 == "" ? $7 : $8)"\""}' |\ | ||
+ | awk -F';' 'BEGIN { print "#EXTM3U" } | ||
+ | NR!=1 && $1!="Sender" { | ||
+ | split($1,NAME,"\""); | ||
+ | split($6,ADDR,"\""); | ||
+ | print "#EXTINF:0," NAME[2] | ||
+ | print ADDR[2]}' | ||
+ | #-----------------END------------------------------------------------- | ||
+ | </pre> | ||
+ | Das tool ist ein Pythonscript und hat folgenden Abhänigkeiten: wxpython und python-gstreamer. Diese müssen vor Ausführunge installiert sein. Sie sind auf den meisten Distros verfügbar. | ||
+ | <pre> | ||
+ | #!/usr/bin/python | ||
+ | import gst | ||
+ | import wx | ||
+ | import time | ||
+ | import re | ||
+ | import subprocess | ||
+ | |||
+ | # Source from http://nitric.co.za/blog-posts/listen.py-little-script-to-stream-internet-radio-for-an-hour-and-then-stop | ||
+ | # and modified and adapted by framp@linux-tips-and-tricks.de to speed up checking of validity of radio frequencies | ||
+ | # posted on http://www.linupedia.org/opensuse/Radiosender | ||
+ | |||
+ | player = gst.element_factory_make("playbin", "player") | ||
+ | |||
+ | class mainwin(wx.Frame): | ||
+ | playfor=10 | ||
+ | s=playfor | ||
+ | |||
+ | def __init__(self, fileName, parent=None): | ||
+ | super(mainwin,self).__init__(parent, wx.ID_ANY, title='Listen to the LinuxClub RadioList') | ||
+ | |||
+ | self.streams=[] | ||
+ | self.selectedStream=0 | ||
+ | self.fileName=fileName | ||
+ | |||
+ | radioFile=open(fileName,'r') | ||
+ | title=None | ||
+ | for line in radioFile: | ||
+ | if title: | ||
+ | self.streams.append((title,line)) | ||
+ | title=None | ||
+ | # #EXTINF:0,Women Rock Radio | ||
+ | m=re.match("^#EXTINF.*,(.*)",line) | ||
+ | if m: | ||
+ | title=m.group(1) | ||
+ | |||
+ | panel = wx.Panel(self, wx.ID_ANY) | ||
+ | sizer = wx.BoxSizer(wx.VERTICAL) | ||
+ | self.button = wx.Button(panel, wx.ID_ANY, 'Start') | ||
+ | self.button3 = wx.Button(panel, wx.ID_ANY, 'Next') | ||
+ | self.button2 = wx.Button(panel, wx.ID_ANY, 'Bad') | ||
+ | self.cb = wx.ComboBox(panel, choices=[s[0] for s in self.streams],style=wx.CB_DROPDOWN|wx.CB_READONLY,value=self.streams[0][0]) | ||
+ | |||
+ | self.timer = wx.Timer(self) | ||
+ | self.Bind(wx.EVT_TIMER, self.update, self.timer) | ||
+ | |||
+ | self.label = wx.StaticText(panel) | ||
+ | |||
+ | panel.SetSizer(sizer) | ||
+ | sizer.Add(self.cb) | ||
+ | sizer.Add(self.button) | ||
+ | sizer.Add(self.button3) | ||
+ | sizer.Add(self.button2) | ||
+ | sizer.Add(self.label) | ||
+ | |||
+ | self.Bind(wx.EVT_BUTTON, self.toggle, self.button) | ||
+ | self.Bind(wx.EVT_BUTTON, self.toggle2, self.button2) | ||
+ | self.Bind(wx.EVT_BUTTON, self.toggle3, self.button3) | ||
+ | |||
+ | |||
+ | def toggle(self, evt=None): | ||
+ | label = self.button.GetLabel() | ||
+ | station = self.cb.GetValue() | ||
+ | self.selectedStream=0 | ||
+ | if label=='Start': | ||
+ | for s, uri in self.streams: | ||
+ | if station==s: | ||
+ | player.set_property('uri', uri) | ||
+ | break | ||
+ | self.selectedStream+=1 | ||
+ | player.set_state(gst.STATE_PLAYING) | ||
+ | self.button.SetLabel('Stop') | ||
+ | self.timer.Start(1000) | ||
+ | |||
+ | elif label=='Stop': | ||
+ | self.s=1 | ||
+ | self.update() | ||
+ | player.set_state(gst.STATE_NULL) | ||
+ | self.button.SetLabel('Start') | ||
+ | self.timer.Stop() | ||
+ | self.s=self.playfor | ||
+ | self.label.SetLabel('') | ||
+ | |||
+ | def toggle3(self, evt=None): | ||
+ | self.s=1 | ||
+ | self.update() | ||
+ | |||
+ | def toggle2(self, evt=None): | ||
+ | label = self.button2.GetLabel() | ||
+ | |||
+ | if label=='Bad': | ||
+ | badFile=open(self.fileName+'.bad','a+') | ||
+ | (s, uri) = self.streams[self.selectedStream] | ||
+ | badFile.write("Stream %s: %s" %(s,uri)) | ||
+ | badFile.close() | ||
+ | |||
+ | def update(self, evt=None): | ||
+ | self.s -= 1 | ||
+ | if self.s <= 0: | ||
+ | player.set_state(gst.STATE_NULL) | ||
+ | |||
+ | self.s=self.playfor | ||
+ | self.selectedStream +=1 | ||
+ | (s, uri) = self.streams[self.selectedStream] | ||
+ | self.cb.SetValue(s) | ||
+ | player.set_property('uri', uri) | ||
+ | player.set_state(gst.STATE_PLAYING) | ||
+ | self.button.SetLabel('Stop') | ||
+ | self.timer.Start(1000) | ||
+ | |||
+ | else: | ||
+ | mins = self.s / 60 | ||
+ | secs = self.s % 60 | ||
+ | self.label.SetLabel("%02d:%02d" % (mins,secs)) | ||
+ | |||
+ | if __name__ == '__main__': | ||
+ | app = wx.PySimpleApp() | ||
+ | win = mainwin('./lcRadio.lst') | ||
+ | win.Show() | ||
+ | app.MainLoop()</pre> | ||
+ | |||
+ | Ausführung: Download von robis Script und Aufruf und Redirection in lcRadio.lst. Danach Aufruf von RadioStreamer. Danach kann man den StartKanel wählen und alle Streams durchhören. |
Aktuelle Version vom 26. Oktober 2016, 09:14 Uhr
Inhaltsverzeichnis
Bearbeitungshinweise
Da diese Seite einen hohen Aufwand an ständiger Aktualisierung erfordert entstehen zur Zeit
Funktionen für das Importieren und Exportieren der Radiosenderdaten.
Diese Hilfsscripte sind auf eine stabile Struktur der Wikiseite angewiesen.
Aus diesem Grund sollten Änderungen an dieser Seite mit Vorsicht vorgenommen werden, vor allem
keine 2 Tabelle auf der Seite anlegen. Beachtet bei Änderungen unbedingt die weiter unten gegebenen Hinweise, nur so kann sicher gestellt werden, dass die hier vorgestellten Scripte bei allen Usern auch funktionieren.
Import und Exportfunktionen für die Tabelle
Daten aus dem Wiki für Tabellenbearbeitung bereitstellen
Für den Export der Daten aus dem Wiki wurde folgendes Script entwickelt.
Damit ist es möglich, die Daten der Tabelle für den Import in Tabellenkalkulationsprogramme direkt abzuholen.
Da es in der Zwischenzeit zwei Wikiseiten dafür gibt, kann mit einer Option eine einzelne Seite zum Download bestimmt werden. Ohne Option werden immer beide Seiten downgeloadet
#!/bin/bash #---------------------------------------------------------------------- # Author: robi@linux-club.de # Version: 3, Last updated: Di 24. Mär 02:14:38 CET 2009 #---------------------------------------------------------------------- # Dieses Script holt über das Internet die Daten der Tabellen auf # http://www.linupedia.org/opensuse/Radiosender[-1] und erzeugt eine # Ausgabe der Daten im csv-Format zum Import in Tabellenverarbeitung # bei Option -1 oder -2 wird jeweils nur eine Seite ausgelesen, # default und bei unklaren Optionen werden beide Seiten ausgelesen # # Aufruf: ./script [ -1 | -2 ] > datei.csv # # Importeinstellungen: Zeichensatz: Unicode (UTF-8) # Ab Zeile : 1 # Feldtrenner: ; # Texttrenner: " #--------------------------------------------------------------------- SEITE1="http://www.linupedia.org/opensuse/Radiosender" SEITE2="http://www.linupedia.org/opensuse/Radiosender-1" READ="$SEITE1 $SEITE2" if [ $# -eq 1 -a "$1" = "-1" ] ;then READ=$SEITE1; else if [ $# -eq 1 -a "$1" = "-2" ] ; then READ=$SEITE2; fi fi wget -U "" $READ -O - 2>/dev/null | \ awk '/^<table.*ikitable sortable/,/<\/table/ {print $0}' | \ awk '/^<tr/,/<\/tr>/ {printf $0} ; /<\/tr>/ {print}' |\ sed 's#\(<[^>]*>\)#;#g' | \ sed -ne 's# *;\{1,\} *#;#gp' | \ awk -F';' 'BEGIN {OFS=";"} NR==1 {print "\"" $2 "\"","\"" $3 "\"","\"" $4 "\"","\"" $5 "\"","\"" $6 "\"","\"" $7 "\""} NR!=1 && $2!="Sender" {print "\"" $2 "\"","\"" $3 "\"","\"" $4 "\"",$5,"\"" $6 "\"","\"" ($8 == "" ? $7 : $8)"\""}' #-----------------END-------------------------------------------------
Exporthilfe aus Daten-Tabellen für Änderungen im Wiki
Folgendes Script ist für den umgekehrten Weg gedacht, um mit Tabellenbearbeitung geänderte oder neu hinzugekommenen Daten hier in die Tabelle einzutragen. Nach einiger Überlegung wurde darauf verzichtet, das Script so weit auszubauen, dass mit dem Script direkt von eurem Rechner aus die Datenänderungen im Wiki vorgenommen werden. Das würde hier Tür und Tor für jeglichen Unfug viel zu weit aufreißen. ;-)
Es bleibt euch also letztlich doch noch die Daten hier im Wiki auf die alt hergebrachte Weise zu editieren und zu erweitern.
Allerdings hilft euch das Script dabei.
Es ist so konzipiert, das es das Datenformat, das das erste Script anlegt, und welches ihr mit Tabellenkalkulation oder Datenbank bearbeiten könnt und von dort aus auch genau so wieder abspeichern könnt, in genau das Format umwandelt, das hier im Wiki im Bearbeitungsfenster eingegeben werden muss.
Es wird mit dem Script jeweils eine komplette Tabelle erzeugt. Ihr könnt daraus die jeweiligen Bereiche hier einfach hineinkopieren, bzw. ( aber bitte nur nach wirklich größeren Änderungen ) die gesamte Tabelle durch die neuen Daten austauschen, indem ihr im Editorfenster die alte Tabellendaten komplett löscht, und dafür die Ausgabe des Scriptes wieder hineinkopiert. Eine Aufteilung der Daten auf die beiden Wikiseiten ist derzeit noch nicht implemeniert, das muss vorläufig noch per Hand entschieden werden. Auf einer Seite sind maximal ca. 400 Tabelleneinträge mögliche, danach kommt eine Fehlermeldung bei Versuch die Wikiseite zu speichern. Einige Anmerkungen und Hinweise dazu folgen noch, hier erstmal das Script.
#!/bin/bash #---------------------------------------------------------------------- # Orginal-Author: robi@linux-club.de # Version: 4, written: Di 13. Mär 02:14:38 CET 2013 # Script changed by spielwurm@linux-club.de # Last change: 14. Oktober 16 #---------------------------------------------------------------------- # Dieses Script konvertiert eine CSV-Datei in das passende Wiki-Format # als Hilfe zum Einfügen und Ändern der Daten auf # http://www.linupedia.org/opensuse/Radiosender # erzeugt wird die komplette Tabelle aus den übergebenen Daten # # Aufruf: ./script datei.csv > wiki-tabelle.dat # # Exporteinstellungen: Zeichensatz: Unicode (UTF-8) # Ab Zeile : 1 # Feldtrenner: ; # Texttrenner: " #--------------------------------------------------------------------- if [ $# != 1 ]; then echo -e "\nAufruf: $0 datei.csv \n\n";exit 1;fi if [ -r "$1" -a -f "$1" ]; then if [ "$(head -1 "$1" |cut -d';' -f6 |cut -d'"' -f2)" != "Adresse" ]; then echo -e "\n\"$1\" scheint keine für dieses Script geeignete CSV-Datei zu sein\n\n";exit 2;fi else echo -e "\n\"$1\" ist keine lesbare Datei\n\n"; exit 3;fi awk -F';' '{ split($1,NAME,"\""); split($2,STADT,"\""); split($3,LAND,"\""); split($4,BIT,"\""); split($5,BEMERK,"\""); split($6,ADDR,"\"") } NR==1 { print "{| class=\"wikitable sortable\" border=\"1\" cellspacing=\"0\"" print " |- style=\"background-color:#009ACD;\"" printf " !" NAME[1] "!!" STADT[1] "!!" LAND[1] "!!" BIT[1] "!!" print " class=\"unsortable\"| " BEMERK[1] "!!class=\"unsortable\"|" ADDR[1] } NR!=1 { FARBE= "#FFCC00" ; if (BIT[1] < 56 ) FARBE= "#ccffaa" ; if (BIT[1] == 0 ) FARBE= "#ffffff" ; if (BIT[1] > 55 ) FARBE= "#ddeeaa" ; if (BIT[1] > 120 ) FARBE= "#ffee99" ; if (BIT[1] > 128 ) FARBE= "#ffffbb" ; print "|- style=\"background-color:" FARBE ";\"" print "|",NAME[1],"||",STADT[1],"||",LAND[1],"||align=\"center\" |",BIT[1],"||",BEMERK[1],"||",ADDR[1] } END { print "|}" }' "$1" #-----------------END-------------------------------------------------
Erstellen einer Wiedergabeliste für kaffeine
Folgendes Script erzeugt aus den Wikidaten eine Wiedergabeliste die direkt in kaffeine importiert werden kann. Einfach das Script aufrufen und die Ausgabe in eine Datei zB "meine_liste.kaffeine" umleiten.
#!/bin/bash #---------------------------------------------------------------------- # Author: robi@linux-club.de # Version: 2, Last updated: Di 24. Mär 02:14:38 CET 2009 #---------------------------------------------------------------------- # Dieses Script holt über das Internet die Daten der Tabellen auf # http://www.linupedia.org/opensuse/Radiosender[-1] und erzeugt eine # Wiedergabeliste für das Programm kaffeine . # bei Option -1 oder -2 wird jeweils nur eine Seite ausgelesen, # default und bei unklaren Optionen werden beide Seiten ausgelesen # # Aufruf: ./script [ -1 | -2 ] > meine_liste.kaffeine # #--------------------------------------------------------------------- SEITE1="http://www.linupedia.org/opensuse/Radiosender" SEITE2="http://www.linupedia.org/opensuse/Radiosender-1" READ="$SEITE1 $SEITE2" if [ $# -eq 1 -a "$1" = "-1" ] ;then READ=$SEITE1; else if [ $# -eq 1 -a "$1" = "-2" ] ; then READ=$SEITE2; fi fi wget -U "" $READ -O - 2>/dev/null | \ awk '/^<table.*ikitable sortable/,/<\/table/ {print $0}' | \ awk '/^<tr/,/<\/tr>/ {printf $0} ; /<\/tr>/ {print}' |\ sed 's#\(<[^>]*>\)#;#g' | \ sed -ne 's# *;\{1,\} *#;#gp' | \ awk -F';' 'BEGIN {OFS=";"} NR==1 {print "\"" $2 "\"","\"" $3 "\"","\"" $4 "\"","\"" $5 "\"","\"" $6 "\"","\"" $7 "\""} NR!=1 && $2!="Sender" {print "\"" $2 "\"","\"" $3 "\"","\"" $4 "\"",$5,"\"" $6 "\"","\"" ($8 == "" ? $7 : $8)"\""}' |\ awk -F';' 'BEGIN { print "<!DOCTYPE XMLPlaylist>\n<playlist client=\"kaffeine\" >" } NR!=1 && $1!="Sender" { TYPE=""; if (match($6,/.*\.mp3\"$/)) TYPE="audio/x-mp3" ; if (match($6,/.*\.wma\"$/)) TYPE="audio/x-ms-wma" ; if (match($6,/.*\.wmv\"$/)) TYPE="video/x-ms-wmv" ; if (match($6,/.*\.m3u\"$/)) TYPE="audio/mpegurl" ; if (match($6,/.*\.ogg\"$/)) TYPE="application/ogg" ; if (match($6,/.*\.ra\"$/)) TYPE="audio/vnd.rn-realaudio" ; if (match($6,/.*\/\"$/)) TYPE="inode/directory" ; if (TYPE=="") TYPE="application/octet-stream" ; print " <entry title=" $1, "mime=\"" TYPE "\" url=" $6, "/>"} END {print "</playlist>"} ' #-----------------END-------------------------------------------------
Hinweise für das Ändern der Datentabelle
- bei Verwendung der obrigen Scripte bitte darauf achten, dass ihr keine "falschen zusätzlichen Zeilenspünge mitkopiert. Das passiert z.B. wenn man die Standardausgabe des 2. Scriptes hier her kopieren würdet. Also die Ausgabe des Scriptes in eine Datei umleiten, diese Datei mit cat ausgeben und dann diese Konsolausgabe der Datei hier für die Änderungen im Wiki benutzen, dann sollte das Problem nicht auftreten.
- Bitte nach Änderungen im Wiki die Vorschau benutzen und bitte genau überprüfen ob die Tabelle und eure neuen Daten auch wirklich ok sind, und wirklich nur dann abspeichern.
- Eine Datenzeile der Wikitabelle umfasst immer genau 2 zusammengehörende Zeilen beim Editieren der Tabelle:
|- style="background-color:#FFFF00;" | Bayern 1 || München || Deutschland ||align="center" | 48 || - || mms://gffstream-w1b.wm.llnwd.net/gffstream_w1b
- In der ersten Zeile wird die Hintergrundfarbe gesetzt, das macht das obrige Script automatisch, in der 2. Zeile stehen dann die Daten.
- Sollte ein Sender einmal nicht mehr senden, und keine neue Streamadresse bekannt sein, ist vorgesehen bei der Datenrate eine 0 (Null) einzutragen, und bei der Farbe dazu den Wert "#363636" . Damit wird die entsprechende Zeile dunkelgrau und so als z.Z. nicht verfügbar markiert. Erfahrungsgemäß können Sender wegen technischen Problemen über Stunden oder vor allem am Wochenende auch etwas länger offline sein. Bitte die Markierung erst durchführen wenn die Sender über mehrere Tage nicht verfügbar sind.
- Vermeidet in der Tabelle Sonderzeichen. Es ist bekannt das ";" in der URL und "&" und "%" im Sendernamen Probleme beim Ex- und Import der Daten mit obrigen Scripten bzw bei Import in kaffeine erzeugen.
- Achtet darauf, dass bei einer Adresse wie zum Beispiel http://mp3.ht-stream.net/;04026677086949stream.nsv die temporäre Ergänzung der Stream-Adresse weggelassen wird. Das Beispiel ist also einzutragen als http://mp3.ht-stream.net/
- Bitte in die Felder der Tabelle (außer der Adresse natürlich) keine Links oder Webadressen eintragen, sondern nur Text.
- Haltet euch an das Tabellenformat, sollten Änderungen am Format notwendig werden, dann können wird darüber gerne diskutieren, und dann können gegebenenfalls auch parallel dazu dann die Scripte an das neue Format angepasst werden.
- Fällt euch auf, das einzelnen Sender nicht mehr senden und ihr euch nicht an die Tabelle traut, dann könnt ihr das auch gerne hier im Anschluss auf der Diskussionseite melden, damit der Nächste das prüfen und gegebenenfalls dann abändern kann.
- Sollte es dennoch Editierunfälle, Probleme, Unklarheiten, Verständnissprobleme oder sonstige irgendwie gearteter Probleme mit dieser Wikiseite geben, bitte im Wikiforum melden, da wird man euch schnellstmöglich helfen.
- Denkt daran: einige haben in diese Seite eine ganze Menge Zeit investiert, und davon sollen auch morgen noch möglichst viele Wikileser ihren Nutzen ziehen können.
Dann allseits guten Radioempfang Robi 22:01, 5. Dez. 2008 (UTC)
Neuer Sender
Ich trau' mich nach all diesen Hinweisen nicht ...
- Radio Okerwelle (Lokalsender Braunschweig) http://www.okerwelle.de/typo/ Stream von <http://radiostream.de/stream/35575.m3u> / <http://dus.radiostream.de:35575> -- RainerBi 10:13, 6. Apr. 2009 (UTC)
Nur Sprache
Anregung: Eine Seite die nur streaming links to SPRACHE (Speech, talk) sendern hat. Planet Chomsky:
http://Hee-La.serverroom.us:4048/
BBC World Propaganda
mms://livewmstream-ws.bbc.co.uk.edgestreams.net/reflector:43021
Viele alte Leute koennen Nachts nicht schlafen, und wollen keine musik. Waere schoen, wenn man speech-only Sender separat haette. English und Deutsch gemischt, kein problem, denn wer Radio "zum Denken" hoert kann beides.
- Besten Dank für die Anregung.
- Solange wir nur 5 Sender mit reiner Sprache haben, sind diese als Soforthilfe in der Tabelle mit »Nur Sprache - keine Musik« markiert. Albschrat 20:38, 1. Juni 2010 (UTC)
Geänderte Sender
Ich möchte auch nichts falsch, aber doch auf eine Änderung aufmerksam machen,finde ich doch diesen Artikel besonders wertvoll:
Neue NDR-Streams "ndrstream.ic.llnwd.net/ usw.", die sich vor wenigen Tagen geändert haben, sollten von erfahreneren Benutzern hier eingepflegt werden:
http://ndrstream.ic.llnwd.net/stream/ndrstream_ndr1niedersachsen_hi_mp3
http://ndrstream.ic.llnwd.net/stream/ndrstream_ndr1wellenord_hi_mp3
http://ndrstream.ic.llnwd.net/stream/ndrstream_ndr1radiomv_hi_mp3
http://ndrstream.ic.llnwd.net/stream/ndrstream_ndr903_hi_mp3
http://ndrstream.ic.llnwd.net/stream/ndrstream_ndr2_hi_mp3
http://ndrstream.ic.llnwd.net/stream/ndrstream_n-joy_hi_mp3
http://ndrstream.ic.llnwd.net/stream/ndrstream_ndrinfo_hi_mp3
http://ndrstream.ic.llnwd.net/stream/ndrstream_ndrinfo_spezial_hi_mp3
http://ndrstream.ic.llnwd.net/stream/ndrstream_ndrkultur_hi_mp3
--Strumpell 06:55, 17. Okt. 2010 (UTC)
Besten Dank für den Hinweis und Deine Unterstützung! Die Sender sind in der aktuellen Tabelle enthalten. albschrat 16:32, 5. Dez. 2010 (UTC)
Farben?
was bedeuten die und warum steht nichts darüber im Artikel? --Itu 21:12, 17. Sep. 2011 (UTC)
- Die Farben sind abhängig vom der Bitrate des Senders und somit ein Synonym für die Qualität dieses Radiosenders, vorausgesetzt man kann auch die entsprechende Datenmenge wirklich über das Internet störungsfrei ziehen. Die Gelben Felder sind somit niedrige Qualität die entsprechende dem Rotanteil der Farbe schrittweise zunimmt. Graue Felder sind für Sender gedacht die seit einiger Zeit oder vorübergehend offline sind.
- Wenn ich mich nicht ganz täusche hatte ich die Auswahl der Farbe damals in das Script fest eingebaut mit dem Albschrat hoffentlich noch regelmäßig diese beiden Wiki Seite wartet. Sie werden somit automatisch entsprechende der Bitrate gesetzt wenn Albschrat das nächste mal wieder seine Datenbank und das Wiki mit Hilfe der Scripte aktualsisiert.
Robi 12:31, 18. Sep. 2011 (UTC)
- Müsste man dann noch in den Artikel schreiben. --Itu 15:20, 18. Sep. 2011 (UTC)
WDR Streamadressen
http://webradio.wdr.de : der WDR hat eine Seite mit den Adressen aller seiner Streams. --Wikinaut 09:27, 20. Nov. 2011 (UTC)
Betreuung der Senderliste gesucht
Wegen eines nebenberuflichen Studiums bin ich seit geraumer Zeit vollkommen »Land unter«. Der Zustand wird sich absehbar in den nächsten 3 Jahren nicht ändern. Deshalb muss ich die Betreuung der Seite abgeben. Für Tipps stehe ich natürlich jederzeit gerne zur Verfügung. albschrat 10:31, 30. Dez. 2011 (UTC)
- Ich habs mal mit ins Forum übernommen, dort wird das eventuell eht gelesen Robi 13:38, 30. Dez. 2011 (UTC)
Kleines HilfsTool um die Verfügbarkeit der Stream zu prüfen
Das Tool geht jede URL der List durch und konnected und spielt den Stream für 10 Sekunden ab. Damit kann man relative leicht prüfen, ob die Streams noch verfügbar sind. Bei den ca 500 URLs dauert das ca 90 Minuten.
Voraussetzung: robis Script um die URLs und Beschreibungen aus der WikiSeite zu extrahieren
#!/bin/bash #---------------------------------------------------------------------- # Author: robi@linux-club.de # Version: TEST-SCRIPT, -ungetestet- #---------------------------------------------------------------------- # Dieses Script holt über das Internet die Daten der Tabellen auf # http://www.linupedia.org/opensuse/Radiosender[-1] und erzeugt eine # Wiedergabeliste für das Programm Amarok . # bei Option -1 oder -2 wird jeweils nur eine Seite ausgelesen, # default und bei unklaren Optionen werden beide Seiten ausgelesen # # Aufruf: ./script [ -1 | -2 ] > meine_liste.m3u # #--------------------------------------------------------------------- SEITE1="http://www.linupedia.org/opensuse/Radiosender" SEITE2="http://www.linupedia.org/opensuse/Radiosender-1" READ="$SEITE1 $SEITE2" if [ $# -eq 1 -a "$1" = "-1" ] ;then READ=$SEITE1; else if [ $# -eq 1 -a "$1" = "-2" ] ; then READ=$SEITE2; fi fi wget -U "" $READ -O - 2>/dev/null | \ awk '/^<table.*ikitable sortable/,/<\/table/ {print $0}' | \ awk '/^<tr/,/<\/tr>/ {printf $0} ; /<\/tr>/ {print}' |\ sed 's#\(<[^>]*>\)#;#g' | \ sed -ne 's# *;\{1,\} *#;#gp' | \ awk -F';' 'BEGIN {OFS=";"} NR==1 {print "\"" $2 "\"","\"" $3 "\"","\"" $4 "\"","\"" $5 "\"","\"" $6 "\"","\"" $7 "\""} NR!=1 && $2!="Sender" {print "\"" $2 "\"","\"" $3 "\"","\"" $4 "\"",$5,"\"" $6 "\"","\"" ($8 == "" ? $7 : $8)"\""}' |\ awk -F';' 'BEGIN { print "#EXTM3U" } NR!=1 && $1!="Sender" { split($1,NAME,"\""); split($6,ADDR,"\""); print "#EXTINF:0," NAME[2] print ADDR[2]}' #-----------------END-------------------------------------------------
Das tool ist ein Pythonscript und hat folgenden Abhänigkeiten: wxpython und python-gstreamer. Diese müssen vor Ausführunge installiert sein. Sie sind auf den meisten Distros verfügbar.
#!/usr/bin/python import gst import wx import time import re import subprocess # Source from http://nitric.co.za/blog-posts/listen.py-little-script-to-stream-internet-radio-for-an-hour-and-then-stop # and modified and adapted by framp@linux-tips-and-tricks.de to speed up checking of validity of radio frequencies # posted on http://www.linupedia.org/opensuse/Radiosender player = gst.element_factory_make("playbin", "player") class mainwin(wx.Frame): playfor=10 s=playfor def __init__(self, fileName, parent=None): super(mainwin,self).__init__(parent, wx.ID_ANY, title='Listen to the LinuxClub RadioList') self.streams=[] self.selectedStream=0 self.fileName=fileName radioFile=open(fileName,'r') title=None for line in radioFile: if title: self.streams.append((title,line)) title=None # #EXTINF:0,Women Rock Radio m=re.match("^#EXTINF.*,(.*)",line) if m: title=m.group(1) panel = wx.Panel(self, wx.ID_ANY) sizer = wx.BoxSizer(wx.VERTICAL) self.button = wx.Button(panel, wx.ID_ANY, 'Start') self.button3 = wx.Button(panel, wx.ID_ANY, 'Next') self.button2 = wx.Button(panel, wx.ID_ANY, 'Bad') self.cb = wx.ComboBox(panel, choices=[s[0] for s in self.streams],style=wx.CB_DROPDOWN|wx.CB_READONLY,value=self.streams[0][0]) self.timer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.update, self.timer) self.label = wx.StaticText(panel) panel.SetSizer(sizer) sizer.Add(self.cb) sizer.Add(self.button) sizer.Add(self.button3) sizer.Add(self.button2) sizer.Add(self.label) self.Bind(wx.EVT_BUTTON, self.toggle, self.button) self.Bind(wx.EVT_BUTTON, self.toggle2, self.button2) self.Bind(wx.EVT_BUTTON, self.toggle3, self.button3) def toggle(self, evt=None): label = self.button.GetLabel() station = self.cb.GetValue() self.selectedStream=0 if label=='Start': for s, uri in self.streams: if station==s: player.set_property('uri', uri) break self.selectedStream+=1 player.set_state(gst.STATE_PLAYING) self.button.SetLabel('Stop') self.timer.Start(1000) elif label=='Stop': self.s=1 self.update() player.set_state(gst.STATE_NULL) self.button.SetLabel('Start') self.timer.Stop() self.s=self.playfor self.label.SetLabel('') def toggle3(self, evt=None): self.s=1 self.update() def toggle2(self, evt=None): label = self.button2.GetLabel() if label=='Bad': badFile=open(self.fileName+'.bad','a+') (s, uri) = self.streams[self.selectedStream] badFile.write("Stream %s: %s" %(s,uri)) badFile.close() def update(self, evt=None): self.s -= 1 if self.s <= 0: player.set_state(gst.STATE_NULL) self.s=self.playfor self.selectedStream +=1 (s, uri) = self.streams[self.selectedStream] self.cb.SetValue(s) player.set_property('uri', uri) player.set_state(gst.STATE_PLAYING) self.button.SetLabel('Stop') self.timer.Start(1000) else: mins = self.s / 60 secs = self.s % 60 self.label.SetLabel("%02d:%02d" % (mins,secs)) if __name__ == '__main__': app = wx.PySimpleApp() win = mainwin('./lcRadio.lst') win.Show() app.MainLoop()
Ausführung: Download von robis Script und Aufruf und Redirection in lcRadio.lst. Danach Aufruf von RadioStreamer. Danach kann man den StartKanel wählen und alle Streams durchhören.