Tipp-Upload: VB.NET 0276: Erweiterbarer Playlistparser
von BloodySword
Hinweis zum Tippvorschlag
Dieser Vorschlag wurde noch nicht auf Sinn und Inhalt überprüft und die Zip-Datei wurde noch nicht auf schädlichen Inhalt hin untersucht.
Bitte haben Sie ein wenig Geduld, bis die Freigabe erfolgt.
Über den Tipp
Dieser Tippvorschlag ist noch unbewertet.
Der Vorschlag ist in den folgenden Kategorien zu finden:
- Algorithmen
- Dateien und Laufwerke
- Multimedia
Dem Tippvorschlag wurden folgende Schlüsselwörter zugeordnet:
Playlist,Wiedergabeliste,Spielliste,Parser,Leser,erweiterbar,m3u,m3uext,#m3uext,MP3
Der Vorschlag wurde erstellt am: 05.06.2008 02:51.
Die letzte Aktualisierung erfolgte am 05.06.2008 02:51.
Beschreibung
Dieser Code zeigt, wie man mit einfachen Mitteln eine Wiedergabeliste einlesen kann.
Schwierigkeitsgrad |
Verwendete API-Aufrufe: |
Download: |
' Dieser Source stammt von http://www.activevb.de ' und kann frei verwendet werden. Für eventuelle Schäden ' wird nicht gehaftet. ' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. ' Ansonsten viel Spaß und Erfolg mit diesem Source! ' ' Beachten Sie, das vom Designer generierter Code hier ausgeblendet wird. ' In den Zip-Dateien ist er jedoch zu finden. ' --------- Anfang Projektgruppe PlaylistTester.sln --------- ' -------- Anfang Projektdatei PlaylistTester.vbproj -------- ' ------------------- Anfang Datei test.vb ------------------- Option Strict On Imports System.IO Imports System.Runtime.InteropServices Imports PlaylistTester.PlayListFormats Module test Sub Main(ByVal Args() As String) Dim p As PlaylistFormat Dim fn As String Console.WriteLine("PlaylistTester - Prints a Playlist on screen" & ControlChars.NewLine) Try fn = Args(0) Catch Console.WriteLine("Usage: PlaylistTester <playlist>") Exit Sub End Try Dim ext As String = (New FileInfo(fn)).Extension.ToLower If ext = ".m3u" Then p = New M3UFormat Else Console.WriteLine("Unknown format! Note: The format is recognized by file extension!") Exit Sub End If p.ParseFile(fn) Console.WriteLine(AdjustTabs("Format:", 3) & p.ToString) Console.WriteLine(AdjustTabs("Number of Items:", 3) & p.List.Count & ControlChars.NewLine) For Each n In p.List Console.WriteLine("New Item {") Console.WriteLine(ControlChars.Tab & AdjustTabs("File:") & n.FileName) Try For Each f In n.Fields If f.Name = "Duration" Then Console.WriteLine(ControlChars.Tab & AdjustTabs(f.Name & ":") & _ TimeSpan.FromSeconds(CDbl(f.Value)).ToString) Else Console.WriteLine(ControlChars.Tab & AdjustTabs(f.Name & ":") & _ CType(f.Value, String)) End If Next Catch End Try Console.WriteLine("}" & ControlChars.NewLine) Next End Sub Function AdjustTabs(ByVal Phrase As String, Optional ByVal Min As UShort = 2) As String Return Phrase & StrDup(Min - Phrase.Length \ 8, ControlChars.Tab) End Function End Module Namespace PlayListFormats Class PlaylistFormat Private mFormat As String Private mExtension As String <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> Public Structure _ PlaylistItemField Dim Name As String Dim Value As Object End Structure <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> Public Structure PlaylistItem Dim FileName As String Dim Fields As List(Of PlaylistItemField) End Structure Public mList As List(Of PlaylistItem) ReadOnly Property Format() As String Get Return mFormat End Get End Property ReadOnly Property Extension() As String Get Return mExtension End Get End Property Property List() As List(Of PlaylistItem) Get Return mList End Get Set(ByVal value As List(Of PlaylistItem)) mList = value End Set End Property Public Overridable Sub ParseFile(ByVal FileName As String) ' Overridable Declaration for the Function in a Reader End Sub Public Overridable Sub WriteFile(ByVal FileName As String) ' Overridable Declaration for the Function in a Reader End Sub End Class Class M3UFormat Inherits PlaylistFormat Private mFormat As String = "M3U" Private mExtension As String = ".m3u" Private mIsExtended As Boolean Public Overrides Sub ParseFile(ByVal FileName As String) MyBase.ParseFile(FileName) Dim d As String = "", nI As PlaylistItem, e() As String, nF As PlaylistItemField Dim p As System.IO.StreamReader = My.Computer.FileSystem.OpenTextFileReader(FileName) Dim memLst As New List(Of PlaylistItem) ' Get first line looking for #EXTM3U d = p.ReadLine() If d.StartsWith("#EXTM3U") = False Then nI = New PlaylistItem nI.FileName = d memLst.Add(nI) Else mIsExtended = True mFormat = "M3UEXT" End If Do nI = New PlaylistItem nI.Fields = New List(Of PlaylistItemField) If mIsExtended Then d = p.ReadLine If d.StartsWith("#EXTINF:") Then e = d.Split(":"c) e = e(1).Split(","c) nF = New PlaylistItemField nF.Name = "Duration" nF.Value = CDbl(Val(e(0))) nI.Fields.Add(nF) nF = New PlaylistItemField nF.Name = "Title" nF.Value = e(1) nI.Fields.Add(nF) End If End If nI.FileName = p.ReadLine() memLst.Add(nI) Loop Until p.EndOfStream mList = memLst ' memLst.Clear() End Sub Public Overrides Function ToString() As String Return mFormat End Function End Class End Namespace ' -------------------- Ende Datei test.vb -------------------- ' --------- Ende Projektdatei PlaylistTester.vbproj --------- ' ---------- Ende Projektgruppe PlaylistTester.sln ----------
Diskussion
Diese Funktion ermöglicht es, Fragen, die die Veröffentlichung des Tipps betreffen, zu klären, oder Anregungen und Verbesserungsvorschläge einzubringen. Nach der Veröffentlichung des Tipps werden diese Beiträge nicht weiter verlinkt. Allgemeine Fragen zum Inhalt sollten daher hier nicht geklärt werden.
Folgende Diskussionen existieren bereits
Um eine Diskussion eröffnen zu können, müssen sie angemeldet sein.