vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: ID3v2-Tags auslesen 
Autor: Manfred X
Datum: 05.03.13 09:02

Die üblichen Einträge in ID3V2-Tags des Typs 3 oder 4 können
eventuell mit diesem GROB GETESTETEN Code gelesen werden:
(schnell zusammengebaut anhand einiger Tipps zu VB6.)

Bei den älteren Versionen ist der Aufbau ähnlich.

Die Routine "GetTagEntries" benötigt als Parameter
Pfad/Datei einer MP3-Datei und gibt eine Liste
der gefundenen Einträge zurück - oder Nothing, falls
kein ID3V2.3 oder ID3V2.4 in der Datei enthalten ist.

    Private Function GetTagEntries(ByVal filename As String) As List(Of String)
 
        'Die üblichen Tags
        Dim Tags() As String = _
           {"TIT2", "TCON", "TCOM", "TOPE", "PCNT", "TRCK", _
            "TCOP", "COMM", "TYER", "TALB", "TPE1", "TLAN", "TLEN", "TMED", _
            "TPUB", "TSSE", "TENC", "WXXX"}
 
        'Den MP3-Dateianfang lesen
        Dim enc As System.Text.Encoding = System.Text.Encoding.UTF8
        Dim buffer(10240 - 1) As Char, Filestart As String = ""
 
        Using sr As New IO.StreamReader(filename, enc, False)
            sr.ReadBlock(buffer, 0, 10240)
        End Using
        Filestart = buffer
 
        'ID3V2.3/4 vorhanden? 
        If Not IsID3V2(Filestart) Then Return Nothing
 
        'nach den Tags suchen
        Dim tlst As New List(Of String)
        For i As Integer = 0 To Tags.Length - 1
            Dim tagentry As String = GetTagEntry(Filestart, Tags(i))
            If Not tagentry = String.Empty Then
                tlst.Add(Tags(i) & ": " & tagentry)
            End If
        Next i
 
        Return tlst
 
    End Function
 
'=======================
'Hilfsfunktionen
'=======================
 
    Private Function IsID3V2(ByVal Filestart As String) As Boolean
 
        'ID3V2-Tag suchen
        Dim ID3Position As Integer = Filestart.IndexOf("ID3")
        If ID3Position = -1 Then Return False
 
        'Tag vorhanden ....
        Dim ID3Version As String = Filestart.Substring(ID3Position + 3, 2)
 
        'Versionkontrolle
        Dim vers As Integer = Asc(ID3Version.Substring(0, 1))
        Return vers = 3 Or vers = 4
 
    End Function
 
 
    Private Function GetTagEntry _
        (ByVal Filestart As String, ByVal Tag As String) As String
 
        Dim pos As Integer = Filestart.IndexOf(Tag)
        If pos < 0 Then Return String.Empty
 
        Dim l As Integer = GetEntryLength(Filestart.Substring(pos))
        If l < 1 Or l > 1024 Then Return String.Empty
 
        Return GetEntry(Filestart.Substring(pos + Tag.Length + 6), l)
 
    End Function
 
 
    Private Function GetEntryLength(ByVal Tag As String) As Integer
 
        If String.IsNullOrEmpty(Tag) Then Return -1
        If Tag.Length < 10 Then Return -1
 
        Dim FrameLenStr As String = Mid(Tag, 5, 4)
        Dim FrameLength As Integer
        FrameLength = _
            256 * 8 * 8 * Asc(FrameLenStr.Substring(0, 1)) + _
            256 * 8 * Asc(FrameLenStr.Substring(1, 1)) + _
            256 * Asc(FrameLenStr.Substring(2, 1)) + _
            Asc(FrameLenStr.Substring(3, 1))
 
        Return FrameLength
 
    End Function
 
 
    Private Function GetEntry(ByVal Tag As String, _
                              ByVal length As Integer) As String
 
        If length < 1 Then Return ""
        If Tag.Length < length Then Return ""
 
        GetEntry = ""
        If Tag(0) = Chr(0) Then
            GetEntry = Tag.Substring(1, length - 1)
        Else
            GetEntry = Tag.Substring(0, length)
        End If
 
    End Function
Sinnvoller wäre es vermutlich, wenn Du beim Download der MP3-Dateien
die benötigten Angaben separat notieren würdest.
Einträge in den MP3-Dateien sind lückenhaft, uneinheitlich formuliert
und nicht immer korrekt. Daraus läßt sich wohl kaum zuverlässig ein
Verzeichnisname konstruieren.

Man kann sich die MP3 auch anhören. Der geübte User erkennt am Klang
den Titel und den Interpreten ...

Beitrag wurde zuletzt am 05.03.13 um 09:12:40 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
ID3v2-Tags auslesen4.211iComupterfreak03.03.13 21:33
Re: ID3v2-Tags auslesen3.416Manfred X03.03.13 23:31
Re: ID3v2-Tags auslesen3.114iComupterfreak04.03.13 17:07
Re: ID3v2-Tags auslesen3.514iComupterfreak04.03.13 17:49
Re: ID3v2-Tags auslesen3.134iComupterfreak04.03.13 18:37
Re: ID3v2-Tags auslesen3.618Manfred X05.03.13 09:02
Re: ID3v2-Tags auslesen3.230iComupterfreak05.03.13 19:15
Re: ID3v2-Tags auslesen3.126Manfred X05.03.13 19:27
Re: ID3v2-Tags auslesen3.082iComupterfreak06.03.13 19:23

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel