Ik werk aan een programma om de ID3 Tag van eem MP3-bestand in te lezen
Ik heb iets dat ''werkt'' maar het gaat nogal traag. Is er iemand die mij hierbij kan helpen?
Hier volgt het script:
''DEEL1
''DIT IS HET DEEL DAT TRAAG IS
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.OpenTextFile(Pad & Bestandsnaam)
Do While a.AtEndOfStream <> True
Tekst = TekstString
TekstString = a.Read(30000)
Loop
a.Close
TekstString = Tekst & TekstString
Plaats = (InStr(1, TekstString, "TAG"))
''DEEL2
If Plaats <> 0 Then
Titel = RTrim(Mid(TekstString, Plaats + 3, 30))
Artiest = RTrim(Mid(TekstString, Plaats + 33, 30))
''DEEL3
Stopplaats = 0
N = 1
If Len(Artiest) = 30 Then
Do While Stopplaats = 0 And N <= 30
If (Len(Artiest) >= N) Then
If (Asc(Mid(Artiest, N, 1))) = 0 Then
Stopplaats = N
End If
End If
N = N + 1
Loop
If Stopplaats <> 0 Then
Artiest = Mid(Artiest, 1, N - 2)
End If
End If
If Len(Titel) = 30 Then
Stopplaats = 0
N = 1
Do While Stopplaats = 0 And N <= 30
If (Len(Titel) >= N) Then
If (Asc(Mid(Titel, N, 1))) = 0 Then
Stopplaats = N
End If
End If
N = N + 1
Loop
If Stopplaats <> 0 Then
Titel = Mid(Titel, 1, N - 2)
End If
End If
End If
Een woordje uitleg:
Eerst en vooral: de ID3-Tag staat helemaal achteraan in het bestand
DEEL1: Ik lees de tekst in, in blokken van 30000 (omdat het maximum een dikke 60000 is en ik voeg straks 2 blokken samen)
Hier voeg ik ze samen: TekstString = Tekst & TekstString
Dit doe ik omdat het laatste overschotje bvb maar 5 tekens zouden kunnen zijn, en dan heb ik niet mijn ganse ID3 Tag.
In de constante plaats sla ik de plaats van de Tag in het tekstblok op
DEEL2
In deel 2 kap ik de achterste spaties weg van Artiest en Titel
DEEL3
Deel 3 doet niets meer dan tekens met ASCII-code 0 die achter Artiest of Nummer kunnen staan, weghalen. De nieuwste versies van WinAmp zetten namelijk geen spaties achter Artiest en Nummer, maar gewoon NULL-tekens (of hoe noemt ASCII 0)
Het is het inlezen en telkens kopiëren van het tekstblok (dat van 30000 tekens) dat véél tijd in beslag neemt. Ik heb al geprobeerd met een ReadLine (omdat je dan het vorige tekstblok niet zou moeten opslaan) maar dit kreeg ik niet aan de praat.
Ik ben benieuwd wie mij hiermee kan helpen.
Veel succes ermee
Ik heb iets dat ''werkt'' maar het gaat nogal traag. Is er iemand die mij hierbij kan helpen?
Hier volgt het script:
''DEEL1
''DIT IS HET DEEL DAT TRAAG IS
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.OpenTextFile(Pad & Bestandsnaam)
Do While a.AtEndOfStream <> True
Tekst = TekstString
TekstString = a.Read(30000)
Loop
a.Close
TekstString = Tekst & TekstString
Plaats = (InStr(1, TekstString, "TAG"))
''DEEL2
If Plaats <> 0 Then
Titel = RTrim(Mid(TekstString, Plaats + 3, 30))
Artiest = RTrim(Mid(TekstString, Plaats + 33, 30))
''DEEL3
Stopplaats = 0
N = 1
If Len(Artiest) = 30 Then
Do While Stopplaats = 0 And N <= 30
If (Len(Artiest) >= N) Then
If (Asc(Mid(Artiest, N, 1))) = 0 Then
Stopplaats = N
End If
End If
N = N + 1
Loop
If Stopplaats <> 0 Then
Artiest = Mid(Artiest, 1, N - 2)
End If
End If
If Len(Titel) = 30 Then
Stopplaats = 0
N = 1
Do While Stopplaats = 0 And N <= 30
If (Len(Titel) >= N) Then
If (Asc(Mid(Titel, N, 1))) = 0 Then
Stopplaats = N
End If
End If
N = N + 1
Loop
If Stopplaats <> 0 Then
Titel = Mid(Titel, 1, N - 2)
End If
End If
End If
Een woordje uitleg:
Eerst en vooral: de ID3-Tag staat helemaal achteraan in het bestand
DEEL1: Ik lees de tekst in, in blokken van 30000 (omdat het maximum een dikke 60000 is en ik voeg straks 2 blokken samen)
Hier voeg ik ze samen: TekstString = Tekst & TekstString
Dit doe ik omdat het laatste overschotje bvb maar 5 tekens zouden kunnen zijn, en dan heb ik niet mijn ganse ID3 Tag.
In de constante plaats sla ik de plaats van de Tag in het tekstblok op
DEEL2
In deel 2 kap ik de achterste spaties weg van Artiest en Titel
DEEL3
Deel 3 doet niets meer dan tekens met ASCII-code 0 die achter Artiest of Nummer kunnen staan, weghalen. De nieuwste versies van WinAmp zetten namelijk geen spaties achter Artiest en Nummer, maar gewoon NULL-tekens (of hoe noemt ASCII 0)
Het is het inlezen en telkens kopiëren van het tekstblok (dat van 30000 tekens) dat véél tijd in beslag neemt. Ik heb al geprobeerd met een ReadLine (omdat je dan het vorige tekstblok niet zou moeten opslaan) maar dit kreeg ik niet aan de praat.
Ik ben benieuwd wie mij hiermee kan helpen.
Veel succes ermee
De username van de oorspronkelijke plaatser van deze posting is bij Big Crash 3 eind mei 2001 verloren gegaan. Om toch de posting zelf terug te kunnen plaatsen is de user BC3 Victim in het leven geroepen