Seite 1 von 2

*.m3u, *.pls Auslesen und ermitteln

Verfasst: 06.01.2006 17:31
von Tsuki-Namida
Hallo,
ich möchte gerne überprüfen welches datei format der Benutzer angegeben hat, nur ich weis nicht wie ich das machen kann....

Also ich kann in meinem programm eine Server adrsse angeben. aber diese Adresse steht meistens in Playlisten "*.m3u|*.pls" ich müchte das Benutzer auch diese angeben könnten und ich filter dann die Server Adresse raus.

Nur jetzt kommt ein weiteres Proplem.... bei einer m3u Datei steht alles schöhn unter einander aber nicht immer in der selben Reinfolge. zum beispiel so:
#EXTM3U
#EXTINF:-1,Radio Dunkle Welle - LoFi-Stream
http://www.radiodunklewelle.de:8000/

oder so:
Radio Dunkle Welle - LoFi-Stream
http://www.radiodunklewelle.de:8000/

oder so:
http://www.radiodunklewelle.de:8000/

wie lese ich da die Entsprechende URL aus?

Bei eine Pls Datei siht die Formatierung wieder ganz anderst aus
Beispil so:
[playlist]NumberOfEntries=1File1=http://radio.r-b.ru:8200/

oder so:
[playlist]
NumberOfEntries=1
File1=http://radio.r-b.ru:8200/

oder so:
[playlist]File1=http://radio.r-b.ru:8200/

Wie mache ich das dann hier?

Verfasst: 06.01.2006 18:13
von Macros
Dass filtert dir die Url´s raus:

Code: Alles auswählen

ReadFile(1,"c:\test.txt")
Repeat
a$=ReadString()
If FindString(a$,"http",0)
b=FindString(a$,"http",0)
c$=Mid(a$,b,200)
url$=Trim(c$)
EndIf
Until url$
Debug url$
CloseFile(1)

Verfasst: 06.01.2006 19:01
von Tsuki-Namida
Suuper Danke ich muss nur noch heraus finden welche Datei auf gerufen wird bzw om man gleich eine URL oder eine datei angibt

Verfasst: 06.01.2006 19:06
von Macros
Such einfach nach Http: ,
das ist dann bestimmt kein Dateipfad.

Verfasst: 06.01.2006 19:12
von Tsuki-Namida
Macros hat geschrieben:Such einfach nach Http: ,
das ist dann bestimmt kein Dateipfad.
Das ist ach nicht so das wahre..... dann es geht ja auch "http://www.radio.de/datei.m3u"

Verfasst: 08.01.2006 20:43
von Tsuki-Namida
ich boin nun ein stück weiter. nur habe ich noch einen denkfehler :(

Code: Alles auswählen

Adresse$ = "C:\Test.m3u"
Neu:
ReadFile(1,Adresse$)
  tmp.s=Space(Lof())
  ReadData (@tmp,Lof())
CloseFile(1)

For x=1 To CountString (tmp,Chr(13))+1
  LnTmp.s=StringField(tmp,x,Chr(13))
  LnTmp.s=PeekS(@LnTmp+1,Len(LnTmp.s)-1)
  StrPos.l=FindString (LCase(LnTmp.s),"m3u",1)
  If StrPos.l
     ;Debug LnTmp.s
     ;Debug tmp.s
     Debug PeekS(@LnTmp+(StrPos.l-1),Len(LnTmp.s)-StrPos.l)
     URLDownloadToFile_(0, tmp.s, "C:\Test2.m3u", 0, 0)
     Adresse$ = "C:\Test2.m3u"
     Gosub Neu
     Return     
  EndIf
Next x

Repeat
a$=tmp.s
If FindString(a$,"http",0)
b=FindString(a$,"http",0)
c$=Mid(a$,b,200)
url$=Trim(c$)
EndIf
Until url$
Debug url$
Das Programm blendet im Debug immer wieder "Debug PeekS(@LnTmp+(StrPos.l-1),Len(LnTmp.s)-StrPos.l)" ein und kommt nicht zu "Debug url$" was ist da falsch? ich muss ja Wenn kein *.m3u mehr kommt die url verwenden damit ich das entsprechende Radio auch starten kann

PS: wenn ich Gosub mit GoTo austausche dann habe ich das selbe proplem

Verfasst: 09.01.2006 01:19
von Batze
Was sucht denn das return da?
Und benutzt am besten kein Goto/Gosub.
Dadurch wird der Code unübersichtlich.
Das sollte sich mit Prozeduren und/oder Schleifen besser lösen lassen.

Verfasst: 09.01.2006 12:54
von Zaphod
kann ich nur zustimmen. goto und gosub sind absolut tabu. das return könnte ursächlich für das problem sein. ein return verwendet man um bei einer prozedur einen rückgabewert zurückzugeben.

Verfasst: 09.01.2006 17:59
von Batze
Zaphod hat geschrieben:kann ich nur zustimmen. goto und gosub sind absolut tabu. das return könnte ursächlich für das problem sein. ein return verwendet man um bei einer prozedur einen rückgabewert zurückzugeben.
Nein, Return verwendet man bei Gosub (wenn man nicht ganz auf Gosub verzichtet, was besser wäre)
Was du meinst ist ProcedureReturn.

Verfasst: 09.01.2006 18:31
von Zaphod
ah, klar, wo ist mein hirn nur heute... hatte gosub noch nie benutzt, wußte nicht dass es da ein return gibt, daher das missverständnis.
dann sollte dass return aber weiter oben stehen oder?