Crunchyroll-Downloader-v3.0/Crunchyroll Downloader/Subfolder.vb
hama3254 a49d3ff11b improvents #698
improvents #698
2023-02-22 14:50:53 +01:00

239 lines
7.0 KiB
VB.net

Imports System.ComponentModel
Imports System.IO
Imports System.Text
Imports System.Windows.Forms.VisualStyles
Module Subfolder
Public SubFolder_automatic As String = "[automatic by Series and Season]"
Public SubFolder_automatic2 As String = "[automatic by Series]"
Public SubFolder_automatic_old As String = "[automatic: Series/Season]"
Public SubFolder_Nothing As String = "[ ignore subfolder ]"
Public SubFolder_Value As String = "[ ignore subfolder ]"
Public Function CleanJSON(ByVal JSON As String) As String
JSON = JSON.Replace("&", "&").Replace("/u0026", "&").Replace("\u002F", "/").Replace("\u0026", "&")
While CBool(InStr(JSON, "\"))
Dim index As Integer = InStr(JSON, "\")
Dim myName As New StringBuilder(JSON)
myName.Remove(index - 1, 2)
JSON = myName.ToString
End While
Return JSON
End Function
Public Function UseSubfolder(ByVal Series As String, ByVal Season As String, ByVal Path As String) As String
Dim newPath As String = Path + "\"
If SubFolder_Value = SubFolder_automatic Or SubFolder_Value = SubFolder_automatic_old Then
newPath = Path + "\" + Series + "\" + Season + "\"
ElseIf SubFolder_Value = SubFolder_automatic2 Then
newPath = Path + "\" + Series + "\"
ElseIf SubFolder_Value = SubFolder_Nothing Then
newPath = Path + "\"
Else
newPath = Path + "\" + SubFolder_Value + "\"
End If
Debug.WriteLine(newPath)
Return newPath.Replace("\\", "\")
End Function
Public Sub WriteText(ByVal Pfad As String, ByVal Content As String)
If Pfad.Length > 255 Then
Pfad = "\\?\" + Pfad
End If
File.WriteAllText(Pfad, Content, Encoding.UTF8)
End Sub
Public Function ReadText(ByVal Pfad As String) As String
If Pfad.Length > 255 Then
Pfad = "\\?\" + Pfad
End If
Return File.ReadAllText(Pfad, Encoding.UTF8)
End Function
Public Function GeräteID() As String
Dim rnd As New Random
Dim possible As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
Dim HWID As String = Nothing
For i As Integer = 0 To 15
Dim ZufallsZahl As Integer = rnd.Next(1, 33)
HWID = HWID + possible(ZufallsZahl)
Next
Return "CRD-Temp-File-" + HWID
End Function
Public Function GeräteID2() As String
Dim rnd As New Random
Dim possible As String = "56789abcdefghijklmnopqrstuvwxyz01234ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Dim HWID As String = Nothing
For i As Integer = 0 To 15
Dim ZufallsZahl As Integer = rnd.Next(1, 33)
HWID = HWID + possible(ZufallsZahl)
Next
Return "CRD-Temp-File-" + HWID
End Function
Class TextBoxTraceListener
Inherits TraceListener
Private tBox As RichTextBox
Dim lastmsg As String = Nothing
Public Sub New(ByVal box As RichTextBox)
Me.tBox = box
End Sub
Dim WithEvents BG As BackgroundWorker
Sub RunBG(ByVal sender As Object, e As DoWorkEventArgs) Handles BG.DoWork
Dim msg As String = CStr(e.Argument)
If msg <> lastmsg Then
lastmsg = msg
Else
Exit Sub
End If
Try
tBox.Parent.Invoke(New MethodInvoker(Sub()
tBox.AppendText(msg)
End Sub))
Catch ex As Exception
End Try
End Sub
Sub StopBG(sender As Object, e As EventArgs)
Dim T As Timer = CType(sender, Timer)
If BG.IsBusy Then
BG.CancelAsync()
T.Dispose()
Else
T.Dispose()
End If
End Sub
Public Overrides Sub Write(ByVal msg As String)
Dim time As New Timer
AddHandler time.Tick, AddressOf StopBG
time.Interval = 500
time.Start()
BG = New BackgroundWorker
BG.WorkerSupportsCancellation = True
BG.RunWorkerAsync(msg)
End Sub
Public Overrides Sub WriteLine(ByVal msg As String)
Write(msg & vbCrLf)
End Sub
End Class
Public Function ShortingName(ByVal FullPath As String) As String
Dim FileName As String = Path.GetFileNameWithoutExtension(FullPath)
Dim Segements() As String = FileName.Split(New String() {" "}, System.StringSplitOptions.RemoveEmptyEntries)
Dim ReturnName As String = Nothing
For i As Integer = 0 To Segements.Count - 1
If Segements(i).Count > 5 Then ' 6 chars or more, split at 5
ReturnName = ReturnName + Segements(i).Substring(0, 3) + ". "
ElseIf Segements(i).Count > 3 Then ' 4 or 5 can stay
ReturnName = ReturnName + Segements(i) + " "
End If
Next
If ReturnName = Nothing Then
ReturnName = FullPath
Else
ReturnName = Path.GetDirectoryName(FullPath) + "\" + ReturnName + Path.GetExtension(FullPath)
End If
Return ReturnName
End Function
Public Function FFMPEG_Audio(ByVal file As String) As Integer
Dim proc As New Process
Dim exepath As String = Application.StartupPath + "\ffmpeg.exe"
Dim startinfo As New System.Diagnostics.ProcessStartInfo
Dim sr As StreamReader
Dim cmd As String = "-i " + Chr(34) + file + Chr(34) 'start ffmpeg with command strFFCMD string
Dim ffmpegOutput As String = Nothing
'all parameters required to run the process
startinfo.FileName = exepath
startinfo.Arguments = cmd
startinfo.UseShellExecute = False
startinfo.WindowStyle = ProcessWindowStyle.Normal
startinfo.RedirectStandardError = True
startinfo.RedirectStandardOutput = True
startinfo.CreateNoWindow = True
startinfo.StandardOutputEncoding = Encoding.UTF8
startinfo.StandardErrorEncoding = Encoding.UTF8
proc.StartInfo = startinfo
proc.Start() ' start the process
sr = proc.StandardError 'standard error is used by ffmpeg
Dim start, finish, pau As Double
start = CSng(Microsoft.VisualBasic.DateAndTime.Timer)
pau = 5
finish = start + pau
Do
ffmpegOutput = ffmpegOutput + sr.ReadToEnd
Loop Until proc.HasExited Or Microsoft.VisualBasic.DateAndTime.Timer < finish
Dim Streams() As String = ffmpegOutput.Split(New String() {"Stream #"}, System.StringSplitOptions.RemoveEmptyEntries)
Dim Tracks As Integer = 0
For i As Integer = 0 To Streams.Count - 1
If CBool(InStr(Streams(i), ": Audio:")) Then
Tracks = Tracks + 1
End If
Next
Return Tracks
End Function
End Module