Tag'et befinder sig i de sidste 128 bytes i filen. Kig på http://www.id3.org/ for at finde ud af hvordan informationerne ligger. (Hvis du vil lave det hele selv - ellers er icarus' klasse nok nemmere at gå i gang med). Jeg har også noget VB6 kode liggende, der kan håndtere ID3 tags (godt nok kun op til v1.1), hvis du vil se det.
Public Type ID3 Title As String Artist As String Album As String Yr As String Comment As String Genre As Byte Success As Boolean End Type Dim L As Double Dim Pos As Double Dim I As Integer Dim Test As String Dim T As Byte Dim TAG As String Public Genres(125) As String
Public Sub GetGenres() On Error GoTo GenreMissing Open App.Path + "\genres.dat" For Input As 1
For I = 0 To 125 Input #1, Genres(I) Input #1, Genres(I) Genres(I) = UCase(Left(Genres(I), 1)) + Right$(Genres(I), Len(Genres(I)) - 1) Next I
Close On Error GoTo 0 Exit Sub
GenreMissing: On Error GoTo 0 For I = 0 To 125 Genres(I) = "Genre #" + Str(I) Next I MsgBox "Filen " + App.Path + "\genres.dat blev ikke fundet, eller indeholder fejl. Denne fil indeholder navnene på alle genrer, som Song Name Workshop genkender. Derfor vil alle genrer i denne session blive betegnet som 'Genre # x'." + vbCrLf + vbCrLf + "Dette problem kan løses ved at geninstallere programmet eller placere den originale 'genres.dat' i programbiblioteket.", vbExclamation, "Genrer kunne ikke indlæses!"
End Sub Public Function GetID3(File As String) As ID3
Open File For Binary As 1 Test = ""
L = LOF(1) Pos = L - 127
For I = 0 To 2 Get #1, Pos + I, T Test = Test + Chr(T) Next I
'test om tag findes If Not Test = "TAG" Then GetID3.Success = False Exit Function End If
' Læs titel Pos = Pos + 3 For I = 0 To 29 Get #1, Pos + I, T If Chr(T) = vbNullChar Then Exit For GetID3.Title = GetID3.Title + Chr(T) Next I
' læs artist Pos = Pos + 30 For I = 0 To 29 Get #1, Pos + I, T If Chr(T) = vbNullChar Then Exit For GetID3.Artist = GetID3.Artist + Chr(T) Next I
'læs Album Pos = Pos + 30 For I = 0 To 29 Get #1, Pos + I, T If Chr(T) = vbNullChar Then Exit For GetID3.Album = GetID3.Album + Chr(T) Next I
'læs år Pos = Pos + 30 For I = 0 To 3 Get #1, Pos + I, T If Chr(T) = vbNullChar Then Exit For GetID3.Yr = GetID3.Yr + Chr(T) Next I
' læs comment Pos = Pos + 4 For I = 0 To 29 Get #1, Pos + I, T If Chr(T) = vbNullChar Then Exit For GetID3.Comment = GetID3.Comment + Chr(T) Next I
Public Function TrimID3(ToTrim As ID3) As ID3 For I = 1 To 30 S = Right$(ToTrim.Title, I) If Not Left$(S, 1) = " " Then ToTrim.Title = Left$(ToTrim.Title, Len(ToTrim.Title) - I + 1) Exit For End If Next I
For I = 1 To 30 S = Right$(ToTrim.Album, I) If Not Left$(S, 1) = " " Then ToTrim.Album = Left$(ToTrim.Album, Len(ToTrim.Album) - I + 1) Exit For End If Next I
For I = 1 To 30 S = Right$(ToTrim.Comment, I) If Not Left$(S, 1) = " " Then ToTrim.Comment = Left$(ToTrim.Comment, Len(ToTrim.Comment) - I + 1) Exit For End If Next I
For I = 1 To 30 S = Right$(ToTrim.Artist, I) If Not Left$(S, 1) = " " Then ToTrim.Artist = Left$(ToTrim.Artist, Len(ToTrim.Artist) - I + 1) Exit For End If Next I
TrimID3 = ToTrim
End Function
Public Function WriteID3(File As String, ToWrite As ID3) As Boolean Open File For Binary As 1 Test = ""
L = LOF(1) Pos = L - 127
For I = 0 To 2 Get #1, Pos + I, T Test = Test + Chr(T) Next I
On Error Resume Next Put #1, Pos, TAG On Error GoTo 0 Close WriteID3 = True End Function
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.