mirror of
https://github.com/hama3254/Crunchyroll-Downloader-v3.0.git
synced 2024-12-26 16:11:49 +01:00
ca18ed8dbb
hotfix curl output
303 lines
11 KiB
VB.net
303 lines
11 KiB
VB.net
Imports System.IO
|
|
Imports System.Text
|
|
|
|
Module GetData
|
|
|
|
#Region "curl"
|
|
|
|
Public Function Curl(ByVal Url As String) As String
|
|
|
|
'MsgBox(Url)
|
|
|
|
Dim exepath As String = Path.Combine(Application.StartupPath, "lib", "curl.exe")
|
|
Dim startinfo As New System.Diagnostics.ProcessStartInfo
|
|
Dim sr As StreamReader
|
|
Dim sr2 As StreamReader
|
|
Dim cmd As String = ""
|
|
If Main.Curl_insecure = True Then
|
|
cmd = "--insecure "
|
|
End If
|
|
cmd = cmd + "--no-alpn -fsSLm 15 -A " + My.Settings.User_Agend.Replace("User-Agent: ", "") + " " + Chr(34) + Url + Chr(34)
|
|
Dim Proc As New Process
|
|
'MsgBox(cmd)
|
|
Dim CurlOutput As String = Nothing
|
|
Dim CurlError 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.StandardOutput 'standard error is used by ffmpeg
|
|
sr2 = Proc.StandardError
|
|
'sw = proc.StandardInput
|
|
|
|
Dim start, finish, pau As Double
|
|
start = CSng(Microsoft.VisualBasic.DateAndTime.Timer)
|
|
pau = 5
|
|
finish = start + pau
|
|
|
|
Do
|
|
CurlOutput = CurlOutput + sr.ReadToEnd
|
|
CurlError = CurlError + sr2.ReadToEnd
|
|
'ffmpegOutput2 = sr.ReadLine
|
|
'Debug.WriteLine(CurlOutput)
|
|
|
|
Loop Until Proc.HasExited Or Microsoft.VisualBasic.DateAndTime.Timer < finish
|
|
|
|
|
|
If CBool(InStr(CurlError, "curl:")) Then
|
|
Debug.WriteLine("CurlError: " + CurlError)
|
|
Throw New System.Exception("Error - Getting" + vbNewLine + CurlError)
|
|
Return Nothing
|
|
ElseIf CBool(InStr(CurlOutput, "curl:")) Then
|
|
Debug.WriteLine("CurlOutput: " + CurlOutput)
|
|
Throw New System.Exception("Error - Getting" + vbNewLine + CurlError)
|
|
Return Nothing
|
|
Else
|
|
Return CurlOutput
|
|
End If
|
|
|
|
|
|
End Function
|
|
|
|
Public Function CurlPost(ByVal Url As String, ByVal Cookies As String, ByVal Auth As String, ByVal Post As String, ByVal Sender As String) As String
|
|
|
|
|
|
Dim exepath As String = Path.Combine(Application.StartupPath, "lib", "curl.exe")
|
|
|
|
Dim startinfo As New System.Diagnostics.ProcessStartInfo
|
|
Dim sr As StreamReader
|
|
Dim sr2 As StreamReader
|
|
|
|
|
|
Dim cmd As String = ""
|
|
If Main.Curl_insecure = True Then
|
|
cmd = "--insecure "
|
|
End If '-fsSLm
|
|
cmd = cmd + "--no-alpn -sSLm 15 -w " + Chr(34) + "\nHTTP Status: %{http_code}\n" + Chr(34) + " -A " + My.Settings.User_Agend.Replace("User-Agent: ", "") + Cookies + Auth + Post + " " + Chr(34) + Url + Chr(34)
|
|
Dim Proc As New Process
|
|
'Debug.WriteLine("CurlPost: " + cmd)
|
|
Dim CurlOutput As String = Nothing
|
|
Dim CurlError 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.StandardOutput 'standard error is used by ffmpeg
|
|
sr2 = Proc.StandardError
|
|
'sw = proc.StandardInput
|
|
Dim start, finish, pau As Double
|
|
start = CSng(Microsoft.VisualBasic.DateAndTime.Timer)
|
|
pau = 5
|
|
finish = start + pau
|
|
|
|
Do
|
|
CurlOutput = CurlOutput + sr.ReadToEnd
|
|
CurlError = CurlError + sr2.ReadToEnd
|
|
'ffmpegOutput2 = sr.ReadLine
|
|
'Debug.WriteLine(CurlOutput)
|
|
|
|
Loop Until Proc.HasExited Or Microsoft.VisualBasic.DateAndTime.Timer < finish
|
|
|
|
If CurlOutput = Nothing And CurlError = Nothing Then
|
|
Throw New System.Exception("Error - Getting" + Sender + vbNewLine + CurlError)
|
|
Return Nothing
|
|
ElseIf CBool(InStr(CurlOutput, "HTTP Status: 4")) Then
|
|
Return CurlOutput
|
|
ElseIf CBool(InStr(CurlError, "HTTP Status: 4")) Then
|
|
Return CurlError
|
|
ElseIf CurlError = Nothing Then
|
|
Dim OutputBody() As String = CurlOutput.Split(New String() {"HTTP Status:"}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
Dim Output As String = OutputBody(0)
|
|
Return Output
|
|
Else
|
|
Return CurlError
|
|
End If
|
|
|
|
|
|
End Function
|
|
|
|
|
|
Public Function CurlAuthNew(ByVal Url As String, ByVal Cookies As String, ByVal Auth As String, Optional ByVal Test As Boolean = False, Optional ByVal UserAgent As String = Chr(34) + "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0" + Chr(34)) As String
|
|
If Test = True Then
|
|
Throw New System.Exception("Error - Getting" + vbNewLine + "Test")
|
|
|
|
End If
|
|
|
|
|
|
Dim exepath As String = Path.Combine(Application.StartupPath, "lib", "curl.exe")
|
|
|
|
Dim startinfo As New System.Diagnostics.ProcessStartInfo
|
|
Dim sr As StreamReader
|
|
Dim sr2 As StreamReader
|
|
|
|
|
|
|
|
Dim cmd As String = ""
|
|
If Main.Curl_insecure = True Then
|
|
cmd = "--insecure "
|
|
End If
|
|
cmd = cmd + "--no-alpn -sSLm 15 -w " + Chr(34) + "\nHTTP Status: %{http_code}\n" + Chr(34) + " -A " + UserAgent + Cookies + Auth + " " + Chr(34) + Url + Chr(34)
|
|
Dim Proc As New Process
|
|
'MsgBox(cmd)
|
|
Dim CurlOutput As String = Nothing
|
|
Dim CurlError 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.StandardOutput 'standard error is used by ffmpeg
|
|
sr2 = Proc.StandardError
|
|
'sw = proc.StandardInput
|
|
|
|
Dim start, finish, pau As Double
|
|
start = CSng(Microsoft.VisualBasic.DateAndTime.Timer)
|
|
pau = 5
|
|
finish = start + pau
|
|
|
|
Do
|
|
CurlOutput = CurlOutput + sr.ReadToEnd
|
|
CurlError = CurlError + sr2.ReadToEnd
|
|
'ffmpegOutput2 = sr.ReadLine
|
|
'Debug.WriteLine(CurlOutput)
|
|
|
|
Loop Until Proc.HasExited Or Microsoft.VisualBasic.DateAndTime.Timer < finish
|
|
|
|
|
|
If CBool(InStr(CurlError, "HTTP Status: 420")) Then
|
|
Return CurlError
|
|
ElseIf CBool(InStr(CurlOutput, "HTTP Status: 420")) Then
|
|
Return CurlOutput
|
|
ElseIf CBool(InStr(CurlError, "HTTP Status: 4")) Then
|
|
Debug.WriteLine(CurlError)
|
|
Throw New System.Exception("Error - Getting" + vbNewLine + CurlError)
|
|
Return Nothing
|
|
ElseIf CBool(InStr(CurlOutput, "HTTP Status: 4")) Then
|
|
Debug.WriteLine(CurlOutput)
|
|
Throw New System.Exception("Error - Getting" + vbNewLine + CurlOutput)
|
|
Return Nothing
|
|
Else
|
|
Dim OutputBody() As String = CurlOutput.Split(New String() {"HTTP Status:"}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
Dim Output As String = OutputBody(0)
|
|
Return Output
|
|
End If
|
|
|
|
End Function
|
|
|
|
Public Function CurlDeleteNew(ByVal Url As String, ByVal Auth As String, Optional ByVal UserAgent As String = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0") As String
|
|
|
|
|
|
|
|
Dim exepath As String = Path.Combine(Application.StartupPath, "lib", "curl.exe")
|
|
|
|
Dim startinfo As New System.Diagnostics.ProcessStartInfo
|
|
Dim sr As StreamReader
|
|
Dim sr2 As StreamReader
|
|
|
|
|
|
|
|
Dim cmd As String = ""
|
|
If Main.Curl_insecure = True Then
|
|
cmd = "--insecure "
|
|
End If
|
|
cmd = cmd + "--no-alpn -sSLm 15 -w " + Chr(34) + "\nHTTP Status: %{http_code}\n" + Chr(34) + " -A " + UserAgent + Auth + " -X DELETE " + Chr(34) + Url + Chr(34)
|
|
Dim Proc As New Process
|
|
'MsgBox(cmd)
|
|
Dim CurlOutput As String = Nothing
|
|
Dim CurlError 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.StandardOutput 'standard error is used by ffmpeg
|
|
sr2 = Proc.StandardError
|
|
'sw = proc.StandardInput
|
|
|
|
Dim start, finish, pau As Double
|
|
start = CSng(Microsoft.VisualBasic.DateAndTime.Timer)
|
|
pau = 5
|
|
finish = start + pau
|
|
|
|
Do
|
|
CurlOutput = CurlOutput + sr.ReadToEnd
|
|
CurlError = CurlError + sr2.ReadToEnd
|
|
'ffmpegOutput2 = sr.ReadLine
|
|
'Debug.WriteLine(CurlOutput)
|
|
|
|
Loop Until Proc.HasExited Or Microsoft.VisualBasic.DateAndTime.Timer < finish
|
|
|
|
|
|
|
|
If CBool(InStr(CurlError, "HTTP Status: 4")) Then
|
|
Debug.WriteLine(CurlError)
|
|
Throw New System.Exception("Error - Getting" + vbNewLine + CurlError)
|
|
Return Nothing
|
|
ElseIf CBool(InStr(CurlOutput, "HTTP Status: 4")) Then
|
|
Debug.WriteLine(CurlOutput)
|
|
Throw New System.Exception("Error - Getting" + vbNewLine + CurlOutput)
|
|
Return Nothing
|
|
Else
|
|
Return CurlOutput
|
|
End If
|
|
|
|
End Function
|
|
|
|
|
|
#End Region
|
|
|
|
|
|
Function FindExistingVideo(ByVal rootPath As String, ByVal searchString As String, ByVal original As String) As String
|
|
Dim Tracks As Integer = 0
|
|
Dim File As String = original
|
|
' Durchsuchen aller Dateien im angegebenen Verzeichnis und seinen Unterverzeichnissen
|
|
For Each filePath As String In Directory.GetFiles(rootPath, "*", SearchOption.AllDirectories)
|
|
' Überprüfen, ob der Dateiname den gesuchten Text enthält
|
|
If Path.GetFileName(filePath).Contains(searchString) Then
|
|
|
|
If FFMPEG_Audio(filePath) > Tracks Then
|
|
File = filePath
|
|
End If
|
|
|
|
End If
|
|
Next
|
|
|
|
|
|
Return File
|
|
End Function
|
|
|
|
|
|
|
|
|
|
End Module
|