Avatar billede deamill Nybegynder
27. februar 2003 - 08:47 Der er 2 kommentarer og
2 løsninger

MP3 tags i VB.NET

Hajsa, er der nogen som ved hvordan man kan læse/ændre på de forskellige MP3 tags fra Visual Basic .NET?
Avatar billede Slettet bruger
27. februar 2003 - 10:21 #1
Se http://www.c-sharpcorner.com/Tools/MP3TagEditorB2PL.asp

Det er godt nok i C#, men du kan jo bruge klassen alligevel
Avatar billede driis Nybegynder
27. februar 2003 - 12:43 #2
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.
Avatar billede deamill Nybegynder
27. februar 2003 - 13:16 #3
driis -> Jeg vil gerne se dit eksempel!
Avatar billede driis Nybegynder
27. februar 2003 - 13:24 #4
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 = "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 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