*.m3u, *.pls Auslesen und ermitteln

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

*.m3u, *.pls Auslesen und ermitteln

Beitrag 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?
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag 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)
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag 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
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Such einfach nach Http: ,
das ist dann bestimmt kein Dateipfad.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag 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"
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag 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
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag 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.
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag 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.
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag 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.
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag 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?
Antworten