Playlist Text-Stream auslesen: Hilfe benötigt

N´Abend Gemeinde,

ich suche eine Möglichkeit, mit einem Progrämmchen den von einer URL gestreamten Text (Playlist) automatisch in eine Text-Datei zu schreiben.

Der Text wird ca alle 2 Minuten erneuert (also dann, wenn ein neues Musikstück gespielt wird).

Wenn das Progrämmchen dann ein paar Stunden läuft, müsste sich eine lange Playlist ergeben, in der alle gespielten Titel untereinander aufgelistet sind.

Mit dieser Adresse gelangt man zu der URL:

http://www.live365.com/mini/playlist.html?station=we…

Öffnet man die Adresse, sieht man eine Website, auf der die Playliste dargestellt wird.

Ich habe selber gar keinen Plan vom Programmieren, also ich würde mich freuen, wenn mir jemand die Zeilen zusammenschreiben könnte…Mac oder Pc ist egal.

Danke schon mal fürs Lesen!

ich suche eine Möglichkeit, mit einem Progrämmchen den von
einer URL gestreamten Text (Playlist) automatisch in eine
Text-Datei zu schreiben.
Wenn das Progrämmchen dann ein paar Stunden läuft, müsste
sich eine lange Playlist ergeben, in der alle gespielten Titel
untereinander aufgelistet sind.
http://www.live365.com/mini/playlist.html?station=we…

Hallo Onkel,

hast du MS-Excel? Zur Not MS-Word?

Gruß
Reinhard

Hoi,

ja sicher, habe ich beides…

ja sicher, habe ich beides…

Hallo Onkel,

schad, ich glaub nicht, daß ich dir helfen kann mit Excel-Vba o.ä.

Nochmal dein Link:
http://www.live365.com/mini/playlist.html?station=we…

Rufe den mal auf und klick dann auf Seite mit Rechts. Das was du dann siehst, wenn du Anzeige Quellcode o.ä. aufrufst, das könnte ich dir auslesen.
Aber, da stehen ja keine Liedernamen.

Die Webseite läuft da irgendwie über CSS, was ich nicht kenne.

Trotzdem habe ich es mit einem Hilfsprogramm geschaftt, aus dem Quellcode noch zwei Webadressen, die wohl irgendwie Unteradressen sind zu besuchen.

http://www.live365.com/mini/pls.css
http://www.live365.com/scp/live365/mini/pls.css

Leider sieht man da auch keine Liedernamen. Aber da wird ja eine Variable „.nowplaying“ benutzt, tja nun, wie kann man die auslesen.

An deiner Stelle, bitte den Mod, also klick in der Brettbeschreibung auf den Briefumschlag neben seinem Namen um Verschiebung ins CSS, Html, Javascript Brett, wenn hier noch zwei Tage nix kommt.

Gruß
Reinhard

Hallo
Ich habe mich mal hingesetzt und die Seite http://www.live365.com/mini/playlist.html?station=we… etwas tiefergehend analysiert. Ich habe dabei entdeckt dass die Playlist unter http://www.live365.com/pls/front?handler=playlist&cm… als ein xml file ausgegeben wird. Da ich gerade am Python lernen bin hab ich dann noch schnell ein Python-Skript geschrieben das das xml file abruft, parst und die Songinformation in eine Datei playlist.txt schreibt.
Um das Programm auszuführen brauchst du einen Python 3.x-Interpreter: http://www.python.org/download/. Den sourcecode speicherst du mit der endung .py und startest sie über Doppelklick.
Solltest du Fragen haben stell sie einfach :smile:
Liebe Grüße.
Alex
P.S.: Das Programm kann eine Playlist von jeder Radiostation auf live365.com erstellen indem man in der main() statt station = „weimarrundfunk“, station = „name_der_station“ verwendet.

from urllib.request import urlopen
import xml.dom.minidom
from time import sleep

def getText(nodelist):
 rc = ""
 for node in nodelist:
 if node.nodeType == node.TEXT\_NODE:
 rc = rc + node.data
 return rc

def getXML(station):
 response = urlopen("http://www.live365.com/pls/front?handler=playlist&cmd=view&viewType=xml&handle="+station)
 xmlTxt = response.read()
 xmlTxt = str(xmlTxt,"utf-8")
 return xmlTxt

def getNextSong(xmlTxt):
 dom = xml.dom.minidom.parseString(xmlTxt)
 entries = dom.getElementsByTagName("PlaylistEntry")
 artists = entries[0].getElementsByTagName("Artist")
 titles = entries[0].getElementsByTagName("Title")
 albums = entries[0].getElementsByTagName("Album")
 lengths = entries[0].getElementsByTagName("Seconds")
 artist = getText(artists[0].childNodes)
 title = getText(titles[0].childNodes)
 album = getText(albums[0].childNodes)
 length = getText(lengths[0].childNodes)
 if title == "NONE":
 return (None,)
 elif artist == "" or artist == "ID/PSA":
 return (None,) 
 else:
 return (artist, title, album, length)

def getWaitTime(xmlTxt):
 dom = xml.dom.minidom.parseString(xmlTxt)
 entries = dom.getElementsByTagName("Refresh")
 wait = getText(entries[0].childNodes)
 return int(wait)

def main():
 station = "weimarrundfunk"
 out = open("playlist.txt","a")
 while True: #mainloop
 xmlTxt = getXML(station)
 timeTillNextSong = getWaitTime(xmlTxt)
 song = getNextSong(xmlTxt)
 if song[0] != None:
 out.write(song[0] + " - " + song[1] + "[" + song[3] + "s] - " + song[2] + "\n")
 out.flush()
 print("Wait for",timeTillNextSong+10,"seconds.")
 sleep(timeTillNextSong + 10)
 out.close()

if \_\_name\_\_ == "\_\_main\_\_":
 main()

Hi Alex,

einen Client mit Javacript-Engine als ein „Progrämmchen“ zu bezeichnen ist eine Sache :smile:))

aber … wie Du …
die *.js - Dateien zu durchforsten und den Link zu finden
…eine andere !!
Hierfür :

 **Experten \***

mfg
Stef

ja sicher, habe ich beides…

Hallo Onkel,

nimm mal die Mappe:
http://www.file-upload.net/download-3236116/Playlist…
als Ansatz. Starte in Tab1 mit „Start“ das makro, mit Klick auf „Stop“ kannste es beenden.

Und lasse es möglichst lange laufen, über nacht?
Dann bericht was bei " Titel" eingetragen wird und kein Titel ist.
Die werf ich dann noch raus.

Und, überprüfe ob das was ich da asu der aktuellen Playlist auslese auch dem entspricht was da in deinem Ursprungslink angezeigt wird.
Denn mein Makro zeigt mir viel zu schnell neue Titel an die in der Playlist stehen.

D.h., sie stehen in dieser Playlist, aber ob sie auch abgespielt werden weiß ich nicht.
Kann ja nicht sein daß ich im 10 sec Takt die Playlist auslese und es kommen neue Einträge in der Zeit während da ein Lied läuft was so 2 min dauert.

Irgendwas ist mir daran suspekt, weiß nicht was :frowning:

Wie auch immer, teste, teste, teste und berichte :smile:

Gruß
Reinhard

Hallo Stef.
Danke für das Lob.
Wie ich den Link zur xml gefunden habe ist ne lustige Geschichte. Im body vom Quellcode von http://www.live365.com/mini/playlist.html?station=we… findet man 2 Funktionsaufrufe deren Namen mit drawPLS beginnen, im head findet man pls.js eingebunden, also mal diese Datei geöffnet und geschwind angesehen. Jetzt kommt das witzige an der Sache. Zeitgleich hab ich mir nämlich mal die Hauptseite live365.com angesehen und hab sie ziemlich gut gemacht gefunden :smile:. Aus einer guten Seite schloß ich auf fähige Programmierer und dann darauf dass ein solcher auf die gute Idee kommen könnte die Playlist womöglich über xml auszugeben. Ich habe dann pls.js einfach mal nach xml durchsucht und nach ein paar Treffern auf eine Variablenzuweisung der folgenden Form gestossen: gXMLSourceUrl = „http://“ + gServer + „/pls/front?handler=playlist&cmd=view&viewType=“ + fmt + „&handle=“ + encodeURIComponent(bucket); Die mir unbekannten Variablen waren entweder direkt oberhalb zugewiesen bzw. hab sie „erraten“ ^^.
So das war also nun meine Quest vom Finden des versteckten Links, viel Verngnügen damit.
Liebe Grüße.
Alex

Hi Alex,

da ich mir dachte, dass die Playliste mit Ajax aktualisiert wird, habe ich nach open gesucht und auf dem Weg die Variable gXMLSourceUrl gefunden.

Mit dem IE kann man ja aus lokaler Datei einen Ajax-Request durchführen, weil der sich nicht an SOP hält.

War gerade dabei mir den response anzuschauen - mit und ohne timestamp :smile:)

Gruß
Stef

Hallo Reinhard,

habe mir Dein Makro zwar nicht angeschaut, kann Dir aber noch ein paar Infos geben:

Kann ja nicht sein daß ich im 10 sec Takt die Playlist
auslese und es kommen neue Einträge in der Zeit während da ein
Lied läuft was so 2 min dauert.

die Lieder auf der Seite werden nicht abgespielt, sondern als Link eingefügt/angeboten.
Das sind die aktuellen Lieder, die auf Runkfunkt Weimar gerade gespielt werden.

Irgendwas ist mir daran suspekt, weiß nicht was :frowning:

die gefundene URL von Alex wird mit einem timestamp (millisekunden seit dem 1.1.1970) aufgerufen

in X stehen die Sekunden wie lange dieses Lied ( X Sekunden ) noch gespielt wird.

Gruß
Klaus

Hallo Klaus,

Kann ja nicht sein daß ich im 10 sec Takt die Playlist
auslese und es kommen neue Einträge in der Zeit während da ein
Lied läuft was so 2 min dauert.

die Lieder auf der Seite werden nicht abgespielt, sondern als
Link eingefügt/angeboten.

Das sind die aktuellen Lieder, die auf Runkfunkt Weimar
gerade gespielt werden.

ich habe mich wie immer wohl nicht deutlich ausdrücken können.
Angenommen ich starte mein Programm, es liest aus der Playlist aus

LiedA
LiedB
LiedC
LiedD

in der Zeit läuft wohl LiedA in weimar so 2 min.

Nun lese ich in dieser Laufzeit mehrmals die Playlist aus und erhalte

LiedA
LiedB
LiedC
LiedD
LiedE
LiedF

danach

LiedB (LiedA ist ja gesendet worden und fällt aus der Liste)
LiedC
LiedD
LiedE
LiedF
LiedG

usw.

Kann ich nun davon ausgehen, der DJ füllt die Playlist und sie wird nach der Reihe abgespielt. Natürlich kann er während der laufzeit von LiedA auch nachfolgende Lieder entfernen, austauschen, hinzufügen usw.

Ist das korrekt?

Hintergrund, 365.com ist so ein Anbieter wo jeder sich anmelden kann um für andere im Inet zu senden, wie weimar.
Manche sind kostenlos, manche kostenpflichtig.
Das bezahlt aber der Sendende.

Ich war mal in einem Chat, manche dort haben auch gesendet und einige hatten echt Klasse Liedzusammenstellungen. Da habe ich immer sehr gern mitgehört.

Jetzt fiel mir auf, in dem Link von Alex sind ja auch .mp3s der Lieder. Deshalb wird das ja sehr interessant für mich, denn damit kann ich ja meinen bescheidenen mp3 Bestand mit Liedern die mir gefallen aufstocken.

Und da ist es mir wurscht, ob das Lied aus der Playlist doch nicht zum Senden kam, weil der DJ ins Bett ging oder er es aus der Liste nahm.

Hauptsache ich komme an alle Informationen, speziell die mp3 :smile:

Irgendwas ist mir daran suspekt, weiß nicht was :frowning:

die gefundene URL von Alex wird mit einem timestamp
(millisekunden seit dem 1.1.1970) aufgerufen

in X stehen die Sekunden wie lange dieses
Lied ( X Sekunden ) noch gespielt wird.

Aha, danke. Noch sehe ich da keinen Bedarf, aber ich lese es mal mit aus, vielleicht kann ich es ja auswerten um meinen nächsten Abruf zu timen.

Gruß
Reinhard

Hallo Reinhard,

Kann ich nun davon ausgehen, der DJ füllt die Playlist und
sie wird nach der Reihe abgespielt. Natürlich kann er während
der laufzeit von LiedA auch nachfolgende Lieder entfernen,
austauschen, hinzufügen usw.

und so ist das auch - die playlisttries werden verändert.
Eigentlich ist nur das 1. entry gültig!

Jetzt fiel mir auf, in dem Link von Alex sind ja auch .mp3s
der Lieder. Deshalb wird das ja sehr interessant für mich,
denn damit kann ich ja meinen bescheidenen mp3 Bestand mit
Liedern die mir gefallen aufstocken.

o.k. Du hast einen Dateinamen: namen_des_songs.mp3
aber wo liegt diese Datei? :smile:)

Aha, danke. Noch sehe ich da keinen Bedarf, aber ich lese es
mal mit aus, vielleicht kann ich es ja auswerten um meinen
nächsten Abruf zu timen.

Nun … der Bedarf ist ja da, weil sich die Entries der Playlist ja ändern

mit dem IE und Ajax und ein bißchen matching bekomme ich solche Zeilen aus der xml extrahiert und in einen container geschrieben:
Künstler: Tullio Mobiglia Orchestra - Titel: L’Orchestra Pazza[2:56] - Album: Milano. October 16th 1945
Aber das Abspeichern geht ja dann nur mit paste + copy :smile:

mfg
Stef

Hallo Stef,

Kann ich nun davon ausgehen, der DJ füllt die Playlist und
sie wird nach der Reihe abgespielt. Natürlich kann er während
der laufzeit von LiedA auch nachfolgende Lieder entfernen,
austauschen, hinzufügen usw.

und so ist das auch - die playlisttries werden verändert.

danke dir, kam in Zweifel.

o.k. Du hast einen Dateinamen: namen_des_songs.mp3
aber wo liegt diese Datei? :smile:)

*aargs* *zusammenbrech*
D.h. dann, Projekt gestorben. Außer der Anfrager meldet sich nochmal mit Ergebnissen zu meiner Exceldatei.

Du weißt nicht wie a) du da dran kämest und b) auch ich? :smile:
Auch zu Alex schiel :smile:

Aha, danke. Noch sehe ich da keinen Bedarf, aber ich lese es
mal mit aus, vielleicht kann ich es ja auswerten um meinen
nächsten Abruf zu timen.

Nun … der Bedarf ist ja da, weil sich die Entries der
Playlist ja ändern

Für die restliche Laufzeit des Liedes? Warum müßte ich das wissen, wenn ich in kürzen Zeiten als das kürzeste Lied dauert die Playlist regelmäßig abfrage/auslese?

Ich sehe darin für mich bislang nur die Nowendigkeit die Restlaufzeit auszulesen, um damit zu steuern, wann ich das nächste Mal wieder auslese.
Ist aber reines Performanceproblem *fin*

mit dem IE und Ajax und ein bißchen matching bekomme ich
solche Zeilen aus der xml extrahiert und in einen container
geschrieben:

Aber das Abspeichern geht ja dann nur mit paste + copy :smile:

Ich kenne Ajax nicht. Mit VB/VBA u.a. kann man schon beliebige Fremdprogramme „steuern“ also manuelle Eingaben simulieren und auch Ergebnisse auslesen.

Aber es liegt sehr am Fremdprogramm ob das vollkommen klappt oder nur teilweise oder schlimmer noch sporadisch oderr halt gar nicht.

Gruß
Reinhard

Hallo Reinhard,

danke dir, kam in Zweifel.

o.k. Du hast einen Dateinamen: namen_des_songs.mp3
aber wo liegt diese Datei? :smile:)

*aargs* *zusammenbrech*
D.h. dann, Projekt gestorben. Außer der Anfrager meldet sich
nochmal mit Ergebnissen zu meiner Exceldatei.

öhm … Du denkst, dass der Onkel ebenfalls den Link auf die MP3 … das ist der Button/Grafik [BUY]… haben will.
der ist mit onclick=„return BuyIt(‚buy‘, 1)“ belegt …
und führt auf eine cgi-generierte Seite, wo der „download“ und/oder Abspielen dann über iTunes erfolgt …
und das mit einem Javascript-erzeugtem querystring …

Maulwurf sagt:
"nee … nee … neeeee … dassn schufilln … ähhhhh … dassn schuhhhfilln schaun de quellentextn "

von wegen Progrämmchen @ Onkel

schließe mich dem dem Maulwurf an
wenn ich denn mal viel Zeit + Geduld hätte, würde ich erstmal die google-scripte durchforsten - bevor Weimar drankommt :smile:)

Wenn Onkel nur an den Infos ( Titel, Künstler, Album ) interessiert ist und alle gespielten Titel aus dem IE-Fenster manuell abspeichern möchte … kann er sich gerne melden.

mfg
Stef

Hallo Stef,

D.h. dann, Projekt gestorben. Außer der Anfrager meldet sich
nochmal mit Ergebnissen zu meiner Exceldatei.

öhm … Du denkst, dass der Onkel ebenfalls den Link auf die
MP3 … das ist der Button/Grafik [BUY]… haben will.

„buy“? Igitt, wer will das schon :smile:

und führt auf eine cgi-generierte Seite, wo der „download“
und/oder Abspielen dann über iTunes erfolgt …
und das mit einem Javascript-erzeugtem querystring …

Aha, sagt mir nix, habe ich schon erwähnt daß ich von Html, Java, java Scriptt, CGI, Css u.v.v.v.vv.m. keine Ahnung habe? *gg*

Maulwurf sagt:

"nee … nee … neeeee … dassn schufilln … ähhhhh …
dassn schuhhhfilln schaun de quellentextn "

? Maulwurf= Spion Agent o.ä.? Verstehe ich nicht.

von wegen Progrämmchen @ Onkel
schließe mich dem dem Maulwurf an

wenn ich denn mal viel Zeit + Geduld hätte, würde ich erstmal
die google-scripte durchforsten - bevor Weimar drankommt :smile:)

Schon wieder ?, wieso bevor Weimar drankommt?

Wenn Onkel nur an den Infos ( Titel, Künstler, Album )
interessiert ist und alle gespielten Titel aus dem IE-Fenster
manuell abspeichern möchte … kann er sich gerne melden.

Seufz, schon wieder ?, wenn Onkel Word oder Excel hat, von mir aus auch Outlook hat oder eines der anderen 30 Programme von MS, die Vba kennen, braucht er da nix manuelles.
Mein Code zeichnet das automatisch auf.

Derzeit ist mein Code so ausgelegt daß er in Excel in eine Tabelle hineinschreibt. Word, Access „kennen“ auch Tabellen.
Bei anderen programmen schreibe ich halt fortlaufend in eine Textdatei.

Gruß
Reinhard

Hallo Reinhard,

? Maulwurf= Spion Agent o.ä.? Verstehe ich nicht.

wie … Du kennst René Marik nicht?

Schon wieder ?, wieso bevor Weimar drankommt?

naja … dieses Onkel-möchte-Weimar-Rundfunk-Playlist-Projekt

Derzeit ist mein Code so ausgelegt daß er in Excel in eine
Tabelle hineinschreibt. Word, Access „kennen“ auch Tabellen.

musst aber auch dem Onkel sagen, dass er die Sicherheitsstufe entsprechend einstellt !!
jedenfalls haben bei mir MAKROS keine chancen :smile:)

mfg
Stef

Hallo Stef,

? Maulwurf= Spion Agent o.ä.? Verstehe ich nicht.

wie … Du kennst René Marik nicht?

nö, sicher ich könnt googeln, aber keine Lust :smile:
Einer aus der Html-Welt oder dieser Esel aus der Welt derer die damals mp3s "gesaugt haben?
Da kenne ich mich nicht aus.

Schon wieder ?, wieso bevor Weimar drankommt?

naja … dieses Onkel-möchte-Weimar-Rundfunk-Playlist-Projekt

Ja, er will eine Liste dessen was gespielt wird.
Ist wahrscheinlich einer von der GEMA :smile:)

Derzeit ist mein Code so ausgelegt daß er in Excel in eine
Tabelle hineinschreibt. Word, Access „kennen“ auch Tabellen.

musst aber auch dem Onkel sagen, dass er die Sicherheitsstufe
entsprechend einstellt !!
jedenfalls haben bei mir MAKROS keine chancen :smile:)

Natürlich MUß die Sicherheitsstufe so sein daß man zumindest immer gefragt wird beim Start. Wer sie auf „leicht“ oder wie das heißt stellt ist m.E. selbst schuld wenn da ein böses Makro losläuft.

Aber man kann selbst geschriebenen Makros erlauben ohne Abfrage zu laufen. Man zertifiziert sie bzw. sich. Stichwort „selfcert“.
Bei Bedarf kann ich dir was Besseres nennen. Besser in dem Sinne von einfacher.

Gruß und gut’s Nächtle
Reinhard

Hallo,

Wenn Onkel nur an den Infos ( Titel, Künstler, Album )
interessiert ist und alle gespielten Titel aus dem IE-Fenster
manuell abspeichern möchte … kann er sich gerne melden.

Das Speichern von Titel, Künstler und Album in eine Datei playlist.txt macht genau mein Python Skript im Beitrag weiter oben.
Liebe Grüße.
Alex

Hallo Alex,

Das Speichern von Titel, Künstler und Album in eine Datei
playlist.txt macht genau mein Python Skript im Beitrag weiter
oben.

ja … das ist klar - Ist ja auch super!!

Ich hatte es ja auch so verstanden, dass Onkel nur den Text haben möchte.

Reinhard hat das mit dem Links zu den mp3-files reingebracht.

mfg
Stef

Hallo Reinhard,

Maulwurf ist eine Handpuppe … lohnt sich zu googeln

Ist wahrscheinlich einer von der GEMA :smile:)

Reichen die Arme der GEMA bis San Mateo (US) ???

Wahrscheinlich nicht … aber unsere Scripte :smile:)
Auch wenn Onkel sich nicht mehr meldet … hat Spaß gemacht.

Achso …
Du wolltest Deinen Bestand an MP3s aufstocken … warum nimmst Du da nicht sowas wie Radiotracker??

mfg
Stef