Seite 2 von 2

Verfasst: 09.01.2006 20:13
von Batze
Es ist da ja unsinnig...
Batze hat geschrieben:Was sucht denn das return da?
... wie ich schon geschrieben habe.

Code: Alles auswählen

procedure.s ResetFileData(Adresse$)
ReadFile(1,Adresse$)
  tmp.s=Space(Lof())
  ReadData (@tmp,Lof())
CloseFile(1)
procedurereturn tmp
endprocedure

Adresse$ = "C:\Test.m3u"
tmp = ResetFileData(Adresse$)

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"
     tmp = ResetFileData(Adresse$)
     x = 0
   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 ist jetzt die direkte Umsetzung von Kains Code ohne Sprungmarken.
Ich bin mir aber nicht sicher, dass er das wirklich so haben will.

Verfasst: 09.01.2006 22:22
von Tsuki-Namida
das "GoSub" habe ich verwendet im falle einer weiteren m3u datei da man in einer m3u eine url oder einen localen pfaht zur einer mr3 machen kann und das egal wie offt muss ich jede auslesen um an die radio server adresse zu gelangen.

den code werde ich jetzt ausprobieren (hoffe das es klapt)

Verfasst: 09.01.2006 22:42
von Tsuki-Namida
So ich habe es ausprobiert. nur leider klapt es nicht so ganz :(
der code bleibt auf ewig in der ForNext schleife hängen. ich habe mal die befehlszeilen 17 und 18 aus den kommentar geholt und der debug hat mir folgendes gesagt:

Code: Alles auswählen

ttp://www.dunklewelle.de/plist/dunklewelleMDM.m3u
http://www.dunklewelle.de/plist/dunklewelleMDM.m3u
m3
EXTM3U
#EXTM3U
#EXTINF:-1,Radio Dunkle Welle - LoFi-Stream
http://www.radiodunklewelle.de:8000/
die folgenden zeilen hat er immerwieder aus gespuckt und das un unterbrochen immer das glaiche:

Code: Alles auswählen

M3
EXTM3U
#EXTM3U
#EXTINF:-1,Radio Dunkle Welle - LoFi-Stream
http://www.radiodunklewelle.de:8000/

M3
EXTM3U
#EXTM3U
#EXTINF:-1,Radio Dunkle Welle - LoFi-Stream
http://www.radiodunklewelle.de:8000/
in der Test.m3u auf meiner festplatte ist eine URH zur einerweiteren m3u
zu dieser: http://www.dunklewelle.de/plist/dunklewelleMDM.m3u
in dieser m3u befinden sich diese zeilen:
EXTM3U
#EXTM3U
#EXTINF:-1,Radio Dunkle Welle - LoFi-Stream
http://www.radiodunklewelle.de:8000/
wie filter ich mit hilfer des obenstehenden codes diese url raus? also die bedingung muss sein das kein ".m3u" in der adresse zufinden ist

Verfasst: 10.01.2006 20:23
von Tsuki-Namida
so ich habe es jetzt hier mit einen großen dank an "Hroudtwolf" , "Third" und die anderen die versucht haben mir zu helfen aus dem "PureBasic-Lounge Forum" hier natürlich auch an allen einen großen dank

hier ist die lösung zu meinem Proplem:

Code: Alles auswählen

Procedure ReadM3UStreams(File.s)
  If ReadFile(0,File)                    ;öffnen der Datei
    Repeat
      Line.s=ReadString()                ;eine Zeile wird ausgelesen
      If FindString(Line,"http://",0)    ;Die ausgelesene Zeile wird nach einem Erkennungszeichen durchsucht
        Anzahl=Anzahl+1                  ;Die gefundenen Streams werden gezählt
        For x=1 To 3
          Port.s=StringField(Line,x,":") ;Hier wird nach einem Port gesucht
        Next x
        If Port<>""
          Debug "--- Stream "+Str(Anzahl)+" ---"
          Debug "Address : "+Mid(Line,0,Len(Line)-Len(Port)-1) ; Hier wird die Adresse ohne Port ausgegeben
          Debug "Port : "+Mid(Port,0,Len(Port)-1)              ; und Hier der Port,aber vorsichtig,Port ist ein String ! Kann man aber noch nach belieben verändern ;)
        Else
          Debug "--- Stream "+Str(Anzahl)+" ---"
          Debug Line                     ;Sollte kein Port im String drinne sein,wird nur die Adresse ausgegeben
        EndIf
      EndIf                             
    Until Eof(0)<>0                      ;Und das solange,bis das ende der Datei erreicht wurden ist
    CloseFile(0)
  EndIf
  CallDebugger                           ;Das ist nur für mich,das kannst du weg machen,ich bevorzuge den Consolen-Debugger :)
EndProcedure

ReadM3UStreams("C:\Test.m3u")