Rework Start - Multiple Database-Only-Playlist that can be managed and sent to the Ultrastar directory
This commit is contained in:
1 parent
676717cfbf
commit
de1e1e7946
18 files changed
+392
-264
No files matched your search
@@ -0,0 +1,159 @@
|
||||
Imports System.Globalization
|
||||
|
||||
Public Class Song
|
||||
|
||||
'Songinfos aus Datei
|
||||
Public Property Artist As String
|
||||
Public Property Title As String
|
||||
Public Property Genre As String
|
||||
Public Property Language As String
|
||||
Public Property Year As Integer
|
||||
Public Property Previewstart As Decimal
|
||||
Public Property BPM As Integer
|
||||
Public Property GAP As Integer
|
||||
Public Property Songfilename As String
|
||||
Public Property CoverFilename As String
|
||||
Public Property VideoFilename As String
|
||||
Public Property SongInfos As New Dictionary(Of String, String)
|
||||
|
||||
'Weitere Properties
|
||||
Public Property ID As Integer
|
||||
Public Property RootDir As String
|
||||
Public Property SubDirectory As String
|
||||
Public Property IsFavorite As Boolean
|
||||
Public Property InfoFile As String
|
||||
Public Property HasError As Boolean
|
||||
Public Property ErrorText As String
|
||||
Public Property ExistsInFavDir As Boolean
|
||||
|
||||
|
||||
Public ReadOnly Property SongInfoCount As Integer
|
||||
Get
|
||||
Return SongInfos.Count
|
||||
End Get
|
||||
End Property
|
||||
Public ReadOnly Property FullPath As String
|
||||
Get
|
||||
Return RootDir & SubDirectory & "\"
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property Songfile As String
|
||||
Get
|
||||
Return FullPath & Songfilename
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property Coverfile As String
|
||||
Get
|
||||
Return FullPath & CoverFilename
|
||||
End Get
|
||||
End Property
|
||||
Public ReadOnly Property Videofile As String
|
||||
Get
|
||||
Return FullPath & VideoFilename
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property ParentFolderName As String
|
||||
'Gibt den übergeordneten Ordnernamen zurück, in dem sich der Pfad befindet
|
||||
Get
|
||||
Dim t As String = FullPath
|
||||
If t.EndsWith("\") Then
|
||||
t = t.Substring(0, t.Length - 1)
|
||||
End If
|
||||
t = t.Substring(0, t.LastIndexOf("\"))
|
||||
Return IO.Path.GetFileName(t)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property FolderName As String
|
||||
'Gibt den übergeordneten Ordnernamen zurück, in dem sich der Pfad befindet
|
||||
Get
|
||||
Dim t As String = FullPath
|
||||
If t.EndsWith("\") Then
|
||||
t = t.Substring(0, t.Length - 1)
|
||||
End If
|
||||
Return IO.Path.GetFileName(t)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Sub ReadInfoFile()
|
||||
Try
|
||||
Dim line As String
|
||||
Using sr As New IO.StreamReader(InfoFile, System.Text.Encoding.Default)
|
||||
Do Until sr.EndOfStream
|
||||
line = sr.ReadLine
|
||||
If line.StartsWith("#") Then
|
||||
AddSongInfo(line)
|
||||
ElseIf line.Trim.Length > 0 Then 'Startet nicht mit # und ist auch keine Leerzeile, das heißt jetzt fängt wohl der Lyrics-Part an
|
||||
Exit Do
|
||||
End If
|
||||
Loop
|
||||
sr.Close()
|
||||
End Using
|
||||
Catch ex As IO.DirectoryNotFoundException
|
||||
''Ggf Dateiname zu lang
|
||||
ErrorText = "Dateiname zu lang"
|
||||
HasError = True
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub AddSongInfo(infoline As String)
|
||||
'#TITLE:Not Myself Tonight
|
||||
'#ARTIST:Christina Aguilera
|
||||
'#LANGUAGE:English
|
||||
'#GENRE:Pop
|
||||
'#YEAR:2010
|
||||
'#MP3:Christina Aguilera - Not Myself Tonight (Duett).mp3
|
||||
'#COVER:Christina Aguilera - Not Myself Tonight (Duett)[CO].jpg
|
||||
'#VIDEO:Christina Aguilera - Not Myself Tonight (Duett).mp4
|
||||
'#PREVIEWSTART:25,250
|
||||
'#BPM:240
|
||||
'#GAP:25000
|
||||
|
||||
Dim field, value As String
|
||||
If infoline.StartsWith("#") AndAlso infoline.Contains(":") Then
|
||||
field = infoline.Substring(1, infoline.IndexOf(":") - 1).Trim
|
||||
value = infoline.Substring(infoline.IndexOf(":") + 1).Trim
|
||||
|
||||
Select Case field.ToUpper
|
||||
Case "TITLE"
|
||||
Title = value
|
||||
Case "ARTIST"
|
||||
Artist = value
|
||||
Case "YEAR"
|
||||
Year = CInt(value)
|
||||
Case "MP3"
|
||||
Songfilename = value
|
||||
Case "COVER"
|
||||
CoverFilename = value
|
||||
Case "VIDEO"
|
||||
VideoFilename = value
|
||||
Case "LANGUAGE"
|
||||
Language = value
|
||||
Case "GENRE"
|
||||
Genre = value
|
||||
Case "PREVIEWSTART"
|
||||
If value.Contains(",") Then
|
||||
Decimal.TryParse(value, NumberStyles.Number, New CultureInfo("de-DE"), Previewstart)
|
||||
Else
|
||||
Decimal.TryParse(value, NumberStyles.Number, New CultureInfo("en-US"), Previewstart)
|
||||
End If
|
||||
Case "BPM"
|
||||
BPM = CInt(value)
|
||||
Case "GAP"
|
||||
GAP = CInt(value)
|
||||
Case Else
|
||||
If SongInfos.ContainsKey(field) Then
|
||||
Dim newvalue = SongInfos(field)
|
||||
newvalue = $"{newvalue},{value}"
|
||||
SongInfos(field) = newvalue
|
||||
Else
|
||||
SongInfos.Add(field, value)
|
||||
End If
|
||||
|
||||
End Select
|
||||
End If
|
||||
End Sub
|
||||
End Class
|
||||
Reference in new issue
Block a user