Avatar billede trippler Nybegynder
19. august 2001 - 16:33 Der er 6 kommentarer og
1 løsning

mp3-tags

Er der en snedig rad der kan fortælle mig hvordan jeg henter tags (kunstner, titel,...) fra en mp3fil?
Avatar billede razersedge Nybegynder
19. august 2001 - 17:12 #1
lytter med
Avatar billede kaffe Nybegynder
19. august 2001 - 17:28 #2
Her er en snedig rad der allerede har gjort det. Han har endda lavet en class file til dl.

http://www.vb-world.net/graphics/tip507.html
Avatar billede sjh Nybegynder
19. august 2001 - 19:33 #3
Avatar billede sjh Nybegynder
19. august 2001 - 19:34 #4
Avatar billede sjh Nybegynder
19. august 2001 - 19:35 #5
Avatar billede driis Nybegynder
19. august 2001 - 21:30 #6
Jeg har ikke lige kigget på de givne links, så det kan godt være, jeg gentager de andre; men:

Et ID3 tag er placeret i de sidste 128 bytes af en MP3 fil, og det er således disse 128 bytes, du ønsker at læse og derefter behandle for at få oplysninger om kunstner, titel osv. Se på http://www.id3.org/id3v1.html for nærmere oplysninger.

Jeg har selv arbejdet med ID3 tags i et VB program engang, og jeg brugte flg. kode til at læse og skrive ID3 tags. (Sæt koden ind i et nyt modul). Jeg går ud fra, at du kan gennemskue, hvordan funktionerne bruges, og hvad de gør:

\' All Code Copyright © Dennis Riis 2000-2001.
\' Email: driis@mobilixnet.dk

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

\'læs Genre
Pos = Pos + 30
Get #1, Pos, GetID3.Genre

GetID3 = TrimID3(GetID3)

Close 1
GetID3.Success = True

End Function

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

If Not Test = \"TAG\" Then Pos = L

   
\'Klargør tag
TAG = \"TAG\" + ToWrite.Title + String(30 - Len(ToWrite.Title), vbNullChar) _
+ ToWrite.Artist + String(30 - Len(ToWrite.Artist), vbNullChar) _
+ ToWrite.Album + String(30 - Len(ToWrite.Album), vbNullChar) + ToWrite.Yr + ToWrite.Comment _
+ String(30 - Len(ToWrite.Comment), vbNullChar) + Chr(ToWrite.Genre)

On Error Resume Next
Put #1, Pos, TAG
On Error GoTo 0
Close
WriteID3 = True
End Function
Avatar billede trippler Nybegynder
21. august 2001 - 18:49 #7
Godt gået drenge :-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester