mirror of
https://github.com/hama3254/Crunchyroll-Downloader-v3.0.git
synced 2024-12-24 15:11:48 +01:00
hybrid mode for #EXT-X-VERSION:4
added hybrid mode for #EXT-X-VERSION:4 removed old hybrid mode for #EXT-X-VERSION:3 (needs to be redone)
This commit is contained in:
parent
2bf5ee0a4c
commit
b659133761
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -14,19 +14,19 @@ Namespace My
|
|||||||
' StartupNextInstance: Raised when launching a single-instance application and the application is already active.
|
' StartupNextInstance: Raised when launching a single-instance application and the application is already active.
|
||||||
' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected.
|
' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected.
|
||||||
Partial Friend Class MyApplication
|
Partial Friend Class MyApplication
|
||||||
Dim UseFirefoxProfile As Boolean = False
|
'Dim UseFirefoxProfile As Boolean = True
|
||||||
Protected Overrides Function OnStartup(ByVal eventArgs As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) As Boolean
|
Protected Overrides Function OnStartup(ByVal eventArgs As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) As Boolean
|
||||||
Dim ProfileDirectory As String = Path.Combine(GetFolderPath(SpecialFolder.ApplicationData), "Mozilla", "Firefox", "Profiles", "CRD")
|
Dim ProfileDirectory As String = Path.Combine(GetFolderPath(SpecialFolder.ApplicationData), "Mozilla", "Firefox", "Profiles", "CRD")
|
||||||
If UseFirefoxProfile = True Then
|
'If UseFirefoxProfile = True Then
|
||||||
Dim di As New System.IO.DirectoryInfo(Path.Combine(GetFolderPath(SpecialFolder.ApplicationData), "Mozilla", "Firefox", "Profiles"))
|
' Dim di As New System.IO.DirectoryInfo(Path.Combine(GetFolderPath(SpecialFolder.ApplicationData), "Mozilla", "Firefox", "Profiles"))
|
||||||
Try
|
' Try
|
||||||
For Each fi As System.IO.DirectoryInfo In di.EnumerateDirectories("*.*", System.IO.SearchOption.TopDirectoryOnly)
|
' For Each fi As System.IO.DirectoryInfo In di.EnumerateDirectories("*.*", System.IO.SearchOption.TopDirectoryOnly)
|
||||||
Dim TempPath As String = Path.Combine(GetFolderPath(SpecialFolder.ApplicationData), "Mozilla", "Firefox", "Profiles", fi.Name)
|
' Dim TempPath As String = Path.Combine(GetFolderPath(SpecialFolder.ApplicationData), "Mozilla", "Firefox", "Profiles", fi.Name)
|
||||||
ProfileDirectory = TempPath
|
' ProfileDirectory = TempPath
|
||||||
Next
|
' Next
|
||||||
Catch ex As Exception
|
' Catch ex As Exception
|
||||||
End Try
|
' End Try
|
||||||
End If
|
'End If
|
||||||
'MsgBox(ProfileDirectory)
|
'MsgBox(ProfileDirectory)
|
||||||
If Not Directory.Exists(ProfileDirectory) Then
|
If Not Directory.Exists(ProfileDirectory) Then
|
||||||
Directory.CreateDirectory(ProfileDirectory)
|
Directory.CreateDirectory(ProfileDirectory)
|
||||||
@ -34,11 +34,12 @@ Namespace My
|
|||||||
Try
|
Try
|
||||||
|
|
||||||
|
|
||||||
Dim sUserAgent As String = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0"
|
Dim sUserAgent As String = My.Resources.ffmpeg_user_agend.Replace("User-Agent: ", "").Replace(Chr(34), "") '"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0"
|
||||||
'sUserAgent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36"
|
'sUserAgent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36"
|
||||||
|
Xpcom.ProfileDirectory = ProfileDirectory
|
||||||
Xpcom.Initialize("Firefox")
|
Xpcom.Initialize("Firefox")
|
||||||
'MsgBox(Xpcom.XulRunnerVersion)
|
'MsgBox(Xpcom.XulRunnerVersion)
|
||||||
Xpcom.ProfileDirectory = ProfileDirectory
|
|
||||||
'Dim File As nsIFile = CType(Xpcom.NewNativeLocalFile("E:\addon\"), nsIFile)
|
'Dim File As nsIFile = CType(Xpcom.NewNativeLocalFile("E:\addon\"), nsIFile)
|
||||||
'File.Append(New nsAString("manifest.json"))
|
'File.Append(New nsAString("manifest.json"))
|
||||||
'Xpcom.ComponentRegistrar.AutoRegister(File)
|
'Xpcom.ComponentRegistrar.AutoRegister(File)
|
||||||
|
@ -13,8 +13,6 @@ Public Class CRD_List_Item
|
|||||||
Inherits Controls.MetroUserControl
|
Inherits Controls.MetroUserControl
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Dim ZeitGesamtInteger As Integer = 0
|
Dim ZeitGesamtInteger As Integer = 0
|
||||||
Dim ListOfStreams As New List(Of String)
|
Dim ListOfStreams As New List(Of String)
|
||||||
Dim proc As Process
|
Dim proc As Process
|
||||||
@ -52,6 +50,11 @@ Public Class CRD_List_Item
|
|||||||
|
|
||||||
Dim FailedSegments As New List(Of FailedSegemtsWithURL)
|
Dim FailedSegments As New List(Of FailedSegemtsWithURL)
|
||||||
Dim LogText As New List(Of String)
|
Dim LogText As New List(Of String)
|
||||||
|
|
||||||
|
|
||||||
|
Dim PauseTime As Integer = 0
|
||||||
|
Dim Threads As Integer = Environment.ProcessorCount / 2 - 1
|
||||||
|
|
||||||
#Region "Remove from list"
|
#Region "Remove from list"
|
||||||
Public Sub DisposeItem(ByVal Dispose As Boolean)
|
Public Sub DisposeItem(ByVal Dispose As Boolean)
|
||||||
If Dispose = True Then
|
If Dispose = True Then
|
||||||
@ -388,6 +391,9 @@ Public Class CRD_List_Item
|
|||||||
End Sub
|
End Sub
|
||||||
Private Sub Item_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
Private Sub Item_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
||||||
Me.ContextMenuStrip = ContextMenuStrip1 '.ContextMenu
|
Me.ContextMenuStrip = ContextMenuStrip1 '.ContextMenu
|
||||||
|
If Threads < 2 Then
|
||||||
|
Threads = 2
|
||||||
|
End If
|
||||||
'bt_del.SetBounds(775, 10, 35, 29)
|
'bt_del.SetBounds(775, 10, 35, 29)
|
||||||
'bt_pause.SetBounds(740, 15, 25, 20)
|
'bt_pause.SetBounds(740, 15, 25, 20)
|
||||||
'PB_Thumbnail.SetBounds(11, 20, 168, 95)
|
'PB_Thumbnail.SetBounds(11, 20, 168, 95)
|
||||||
@ -485,7 +491,7 @@ Public Class CRD_List_Item
|
|||||||
End Try
|
End Try
|
||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
Private Function TS_StatusAsync(ByVal prozent As Integer, ByVal di As IO.DirectoryInfo, ByVal Filename As String, ByVal pausetime As Integer)
|
Private Function TS_StatusAsync(ByVal prozent As Integer, ByVal di As IO.DirectoryInfo, ByVal pausetime As Integer)
|
||||||
'Dim Now As Date = Date.Now
|
'Dim Now As Date = Date.Now
|
||||||
|
|
||||||
Dim FinishedSize As Double = 0
|
Dim FinishedSize As Double = 0
|
||||||
@ -493,7 +499,7 @@ Public Class CRD_List_Item
|
|||||||
|
|
||||||
Try
|
Try
|
||||||
|
|
||||||
Dim aryFi As IO.FileInfo() = di.GetFiles("*.ts")
|
Dim aryFi As IO.FileInfo() = di.GetFiles("*.*")
|
||||||
Dim fi As IO.FileInfo
|
Dim fi As IO.FileInfo
|
||||||
For Each fi In aryFi
|
For Each fi In aryFi
|
||||||
FinishedSize = FinishedSize + fi.Length 'Math.Round(fi.Length / 1048576, 2, MidpointRounding.AwayFromZero).ToString()
|
FinishedSize = FinishedSize + fi.Length 'Math.Round(fi.Length / 1048576, 2, MidpointRounding.AwayFromZero).ToString()
|
||||||
@ -558,412 +564,258 @@ Public Class CRD_List_Item
|
|||||||
|
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Public Function DownloadHybrid(ByVal DL_URL As String, ByVal DL_Pfad As String, ByVal Filename As String) As String
|
Private Function GetFullUri(ByVal MainUri As String, ByVal CurrentPath As String)
|
||||||
MsgBox(DL_URL)
|
Dim path As String = Nothing
|
||||||
Dim Folder As String = Einstellungen.GeräteID()
|
If InStr(CurrentPath, "../") Then
|
||||||
Dim Pfad2 As String = Path.GetDirectoryName(DL_Pfad.Replace(Chr(34), "")) + "\" + Folder + "\"
|
Dim countDot() As String = CurrentPath.Split(New String() {"./"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
If Not Directory.Exists(Path.GetDirectoryName(Pfad2)) Then
|
|
||||||
|
Dim c() As String = New Uri(MainUri).Segments
|
||||||
|
path = "https://" + New Uri(MainUri).Host
|
||||||
|
For i3 As Integer = 0 To c.Count - (2 + countDot.Count - 1)
|
||||||
|
path = path + c(i3)
|
||||||
|
Next
|
||||||
|
path = path + countDot(countDot.Count - 1)
|
||||||
|
Else
|
||||||
|
Dim c() As String = New Uri(MainUri).Segments
|
||||||
|
path = "https://" + New Uri(MainUri).Host
|
||||||
|
For i3 As Integer = 0 To c.Count - 2
|
||||||
|
path = path + c(i3)
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
|
||||||
|
Return path
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function ProcessV4(ByVal InputData As String, ByVal Folder As String) As String
|
||||||
|
|
||||||
|
If Not Directory.Exists(Path.GetDirectoryName(Folder)) Then
|
||||||
' Nein! Jetzt erstellen...
|
' Nein! Jetzt erstellen...
|
||||||
Try
|
Try
|
||||||
Directory.CreateDirectory(Path.GetDirectoryName(Pfad2))
|
Directory.CreateDirectory(Path.GetDirectoryName(Folder))
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MsgBox("Temp folder creation failed")
|
Debug.WriteLine("folder issue")
|
||||||
Return Nothing
|
Return "Error"
|
||||||
Exit Function
|
Exit Function
|
||||||
' Ordner wurde nich erstellt
|
|
||||||
'Pfad2 = Pfad + "\" + CR_FilenName_Backup + ".mp4"
|
|
||||||
End Try
|
End Try
|
||||||
End If
|
End If
|
||||||
Dim MergeSub As String() = DL_URL.Split(New String() {"-i " + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
||||||
If MergeSub.Count > 1 Then
|
|
||||||
Me.Invoke(New Action(Function()
|
|
||||||
Label_percent.Text = "Downloading Subtitles..."
|
|
||||||
Return Nothing
|
|
||||||
End Function))
|
|
||||||
|
|
||||||
For i As Integer = 1 To MergeSub.Count - 1
|
Dim KeyFile As String = Einstellungen.GeräteID + ".key"
|
||||||
Dim SubsURL As String() = MergeSub(i).Split(New [Char]() {Chr(34)})
|
Dim KeyFilePath As String = Application.StartupPath + "\" + KeyFile 'needs to be in the ffmpeg/downloader directory
|
||||||
Dim SubsClient As New WebClient
|
Dim Fragments() As String = InputData.Split(New String() {"#EXT-X-BYTERANGE:"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
SubsClient.Encoding = Encoding.UTF8
|
Dim FragmentsInt As Integer = Fragments.Count - 2
|
||||||
If Main.WebbrowserCookie = Nothing Then
|
|
||||||
Else
|
|
||||||
SubsClient.Headers.Add(HttpRequestHeader.Cookie, Main.WebbrowserCookie)
|
|
||||||
End If
|
|
||||||
Dim SubsFile As String = Einstellungen.GeräteID() + ".txt"
|
|
||||||
|
|
||||||
Dim retry As Boolean = True
|
Dim di As New IO.DirectoryInfo(Folder)
|
||||||
Dim retryCount As Integer = 3
|
Dim m3u8FileContent As String = Nothing
|
||||||
While retry
|
|
||||||
Try
|
Dim Client As New WebClient
|
||||||
SubsClient.DownloadFile(SubsURL(0), Pfad2 + "\" + SubsFile)
|
Client.Encoding = Encoding.UTF8
|
||||||
retry = False
|
Client.Headers.Add(My.Resources.ffmpeg_user_agend.Replace(Chr(34), ""))
|
||||||
Catch ex As Exception
|
|
||||||
If retryCount > 0 Then
|
Dim m3u8Text As String = InputData
|
||||||
retryCount = retryCount - 1
|
Dim m3u8Key() As String = m3u8Text.Split(New String() {"URI=" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
Dim m3u8Key2() As String = m3u8Key(1).Split(New String() {Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
Client.DownloadFile(m3u8Key2(0), KeyFilePath)
|
||||||
|
|
||||||
|
Dim StreamFile() As String = m3u8Text.Split(New String() {"https://"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
Dim StreamFile2() As String = StreamFile(2).Split(New String() {vbLf}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
Dim DownloadFile As String = "https:\\" + StreamFile2(0)
|
||||||
|
|
||||||
|
Dim text() As String = m3u8Text.Split(New String() {vbLf}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
Dim zeile As String
|
||||||
|
Dim Count As Integer = 0
|
||||||
|
|
||||||
|
|
||||||
|
For i As Integer = 0 To text.Count - 1
|
||||||
|
zeile = text(i)
|
||||||
|
|
||||||
|
For w As Integer = 0 To Integer.MaxValue
|
||||||
|
|
||||||
|
If StatusRunning = False Then
|
||||||
|
'MsgBox(True.ToString)
|
||||||
|
Thread.Sleep(5000)
|
||||||
|
PauseTime = PauseTime + 5
|
||||||
|
ElseIf ThreadList.Count > Threads Then
|
||||||
|
Thread.Sleep(50)
|
||||||
|
ElseIf Canceld = True Then
|
||||||
|
For www As Integer = 0 To Integer.MaxValue
|
||||||
|
If ThreadList.Count > 0 Then
|
||||||
|
Thread.Sleep(250)
|
||||||
|
Else
|
||||||
|
Try
|
||||||
|
System.IO.Directory.Delete(HybridModePath, True)
|
||||||
|
Catch ex As Exception
|
||||||
|
End Try
|
||||||
Me.Invoke(New Action(Function()
|
Me.Invoke(New Action(Function()
|
||||||
Label_percent.Text = "Error Downloading Subtitles - retrying"
|
ProgressBar1.Value = 0
|
||||||
|
Label_percent.Text = "canceled -%"
|
||||||
|
bt_pause.BackgroundImage = My.Resources.main_pause_play
|
||||||
Return Nothing
|
Return Nothing
|
||||||
End Function))
|
End Function))
|
||||||
|
Exit For
|
||||||
Else
|
|
||||||
Dim utf8WithoutBom2 As New System.Text.UTF8Encoding(False)
|
|
||||||
Using sink As New StreamWriter(SubsFile, False, utf8WithoutBom2)
|
|
||||||
sink.WriteLine(My.Resources.ass_template)
|
|
||||||
End Using
|
|
||||||
retry = False
|
|
||||||
End If
|
End If
|
||||||
End Try
|
Next
|
||||||
End While
|
Return Nothing
|
||||||
DL_URL = DL_URL.Replace(SubsURL(0), Pfad2 + "\" + SubsFile)
|
Exit Function
|
||||||
Next
|
|
||||||
|
|
||||||
End If
|
Else
|
||||||
Dim m3u8_url As String() = DL_URL.Split(New [Char]() {Chr(34)})
|
Thread.Sleep(ServiceSleep)
|
||||||
Dim m3u8_url_1 As String = Nothing
|
|
||||||
Dim m3u8_url_3 As String = m3u8_url(1)
|
|
||||||
If Debug2 = True Then
|
|
||||||
MsgBox(m3u8_url(1) + vbNewLine + DL_Pfad + vbNewLine + Filename)
|
|
||||||
End If
|
|
||||||
'Dim client0 As New WebClient
|
|
||||||
'client0.Encoding = Encoding.UTF8
|
|
||||||
Dim text As String = Nothing
|
|
||||||
'Try
|
|
||||||
' text = client0.DownloadString(m3u8_url(1))
|
|
||||||
'Catch ex As Exception
|
|
||||||
' Me.Invoke(New Action(Function()
|
|
||||||
' Label_website.Text = "Hybrid mode error"
|
|
||||||
' Label_percent.Text = ex.ToString
|
|
||||||
' Return Nothing
|
|
||||||
' End Function))
|
|
||||||
' Return Nothing
|
|
||||||
' Exit Function
|
|
||||||
'End Try
|
|
||||||
|
|
||||||
|
|
||||||
Try
|
|
||||||
Using client As New WebClient()
|
|
||||||
client.Headers.Add(My.Resources.ffmpeg_user_agend.Replace(Chr(34), ""))
|
|
||||||
client.Headers.Add("ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
|
|
||||||
client.Headers.Add("ACCEPT-ENCODING: *")
|
|
||||||
'client.DownloadFile(TextBox1.Text, "test.m3u8")
|
|
||||||
|
|
||||||
'Dim archive As Zipfi = New ZipArchive(ms)
|
|
||||||
'Dim m3u8String As String = client.DownloadString(TextBox1.Text)
|
|
||||||
'MsgBox(DL_URL)
|
|
||||||
'MsgBox(m3u8_url(1))
|
|
||||||
Try
|
|
||||||
Dim m3u8 As String = DecompressString(client.DownloadData(m3u8_url(1)))
|
|
||||||
text = m3u8
|
|
||||||
Catch ex As Exception
|
|
||||||
Dim m3u8 As String = client.DownloadString(m3u8_url(1))
|
|
||||||
text = m3u8
|
|
||||||
End Try
|
|
||||||
|
|
||||||
'MsgBox(m3u8)
|
|
||||||
End Using
|
|
||||||
Catch ex As Exception
|
|
||||||
MsgBox(ex.ToString)
|
|
||||||
End Try
|
|
||||||
|
|
||||||
If InStr(text, "RESOLUTION=") Then 'master m3u8 no fragments
|
|
||||||
'My.Computer.FileSystem.WriteAllText(Application.StartupPath + "\log.txt", text, False)
|
|
||||||
Dim new_m3u8_2() As String = text.Split(New String() {vbLf}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
||||||
If TargetReso = 42 Then
|
|
||||||
TargetReso = 1080
|
|
||||||
End If
|
|
||||||
|
|
||||||
For i As Integer = 0 To new_m3u8_2.Count - 1
|
|
||||||
'MsgBox("x" + Main.Resu.ToString)
|
|
||||||
If CBool(InStr(new_m3u8_2(i), "x" + TargetReso.ToString)) = True Then
|
|
||||||
m3u8_url_1 = new_m3u8_2(i + 1)
|
|
||||||
Exit For
|
Exit For
|
||||||
End If
|
End If
|
||||||
Next
|
Next
|
||||||
If InStr(m3u8_url_1, "https://") Then
|
|
||||||
Try
|
|
||||||
Using client As New WebClient()
|
|
||||||
client.Headers.Add(My.Resources.ffmpeg_user_agend.Replace(Chr(34), ""))
|
|
||||||
client.Headers.Add("ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
|
|
||||||
client.Headers.Add("ACCEPT-ENCODING: *")
|
|
||||||
'client.DownloadFile(TextBox1.Text, "test.m3u8")
|
|
||||||
|
|
||||||
'Dim archive As Zipfi = New ZipArchive(ms)
|
|
||||||
'Dim m3u8String As String = client.DownloadString(TextBox1.Text)
|
|
||||||
Try
|
|
||||||
Dim m3u8 As String = DecompressString(client.DownloadData(m3u8_url(1)))
|
|
||||||
text = m3u8
|
|
||||||
Catch ex As Exception
|
|
||||||
Dim m3u8 As String = client.DownloadString(m3u8_url(1))
|
|
||||||
text = m3u8
|
|
||||||
End Try
|
|
||||||
'Dim m3u8 As String = DecompressString(client.DownloadData(m3u8_url(1)))
|
|
||||||
'text = m3u8
|
|
||||||
'MsgBox(m3u8)
|
|
||||||
End Using
|
|
||||||
Catch ex As Exception
|
|
||||||
MsgBox(ex.ToString)
|
|
||||||
End Try
|
|
||||||
Else
|
|
||||||
'MsgBox("false postive")
|
|
||||||
Dim c() As String = New Uri(m3u8_url_3).Segments
|
|
||||||
Dim path As String = "https://" + New Uri(m3u8_url_3).Host
|
|
||||||
For i3 As Integer = 0 To c.Count - 2
|
|
||||||
path = path + c(i3)
|
|
||||||
Next
|
|
||||||
m3u8_url_3 = path + m3u8_url_1
|
|
||||||
'MsgBox(m3u8_url_3)
|
|
||||||
Try
|
|
||||||
Using client As New WebClient()
|
|
||||||
client.Headers.Add(My.Resources.ffmpeg_user_agend.Replace(Chr(34), ""))
|
|
||||||
client.Headers.Add("ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
|
|
||||||
client.Headers.Add("ACCEPT-ENCODING: *")
|
|
||||||
'client.DownloadFile(TextBox1.Text, "test.m3u8")
|
|
||||||
|
|
||||||
'Dim archive As Zipfi = New ZipArchive(ms)
|
|
||||||
'Dim m3u8String As String = client.DownloadString(TextBox1.Text)
|
|
||||||
Try
|
|
||||||
Dim m3u8 As String = DecompressString(client.DownloadData(m3u8_url(1)))
|
|
||||||
text = m3u8
|
|
||||||
Catch ex As Exception
|
|
||||||
Dim m3u8 As String = client.DownloadString(m3u8_url(1))
|
|
||||||
text = m3u8
|
|
||||||
End Try
|
|
||||||
'MsgBox(m3u8)
|
|
||||||
End Using
|
|
||||||
Catch ex As Exception
|
|
||||||
MsgBox(ex.ToString)
|
|
||||||
End Try
|
|
||||||
End If
|
|
||||||
|
|
||||||
|
|
||||||
|
If zeile.Contains("#EXT-X-BYTERANGE:") Then
|
||||||
|
Dim Zeile2 As String = zeile.Replace("#EXT-X-BYTERANGE:", "")
|
||||||
|
Dim Zeile3() As String = Zeile2.Split(New String() {"@"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
|
||||||
End If
|
Dim CurrentSize As Integer = Integer.Parse(Zeile3(1))
|
||||||
Dim LoadedKeys As New List(Of String)
|
Dim NewBytes As Integer = Integer.Parse(Zeile3(0))
|
||||||
LoadedKeys.Add("Nothing")
|
Dim File As String = Folder + String.Format("{0:0000}", Count)
|
||||||
Dim KeyFileCache As String = Nothing
|
Dim Evaluator = New Thread(Sub() Me.DownloadTSv4(DownloadFile, File, CurrentSize, NewBytes))
|
||||||
Dim textLenght() As String = text.Split(New String() {vbLf}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
||||||
Dim Fragments() As String = text.Split(New String() {".ts"}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
||||||
Dim FragmentsInt As Integer = Fragments.Count - 2
|
|
||||||
Dim nummerint As Integer = 0 '-1
|
|
||||||
Dim m3u8FFmpeg As String = Nothing
|
|
||||||
Dim ts_dl As String = Nothing
|
|
||||||
|
|
||||||
HybridModePath = Pfad2
|
|
||||||
If Debug2 = True Then
|
|
||||||
MsgBox(Pfad2)
|
|
||||||
End If
|
|
||||||
Dim PauseTime As Integer = 0
|
|
||||||
Dim Threads As Integer = Environment.ProcessorCount / 2 - 1
|
|
||||||
If Threads < 2 Then
|
|
||||||
Threads = 2
|
|
||||||
End If
|
|
||||||
'Threads = textLenght.Length / 20
|
|
||||||
Dim di As New IO.DirectoryInfo(Pfad2)
|
|
||||||
For i As Integer = 0 To textLenght.Length - 1
|
|
||||||
If InStr(textLenght(i), ".ts") Then
|
|
||||||
For w As Integer = 0 To Integer.MaxValue
|
|
||||||
|
|
||||||
If StatusRunning = False Then
|
|
||||||
'MsgBox(True.ToString)
|
|
||||||
Thread.Sleep(5000)
|
|
||||||
PauseTime = PauseTime + 5
|
|
||||||
ElseIf ThreadList.Count > Threads Then
|
|
||||||
Thread.Sleep(50)
|
|
||||||
ElseIf Canceld = True Then
|
|
||||||
For www As Integer = 0 To Integer.MaxValue
|
|
||||||
If ThreadList.Count > 0 Then
|
|
||||||
Thread.Sleep(250)
|
|
||||||
Else
|
|
||||||
Try
|
|
||||||
System.IO.Directory.Delete(HybridModePath, True)
|
|
||||||
Catch ex As Exception
|
|
||||||
End Try
|
|
||||||
Me.Invoke(New Action(Function()
|
|
||||||
ProgressBar1.Value = 0
|
|
||||||
Label_percent.Text = "canceled -%"
|
|
||||||
bt_pause.BackgroundImage = My.Resources.main_pause_play
|
|
||||||
Return Nothing
|
|
||||||
End Function))
|
|
||||||
Exit For
|
|
||||||
End If
|
|
||||||
Next
|
|
||||||
Return Nothing
|
|
||||||
Exit Function
|
|
||||||
'ElseIf nummerint < Threads Then
|
|
||||||
' Thread.Sleep(2000)
|
|
||||||
' Exit For
|
|
||||||
Else
|
|
||||||
Thread.Sleep(ServiceSleep)
|
|
||||||
Exit For
|
|
||||||
End If
|
|
||||||
Next
|
|
||||||
|
|
||||||
nummerint = nummerint + 1
|
|
||||||
Dim nummer4D As String = String.Format("{0:0000}", nummerint)
|
|
||||||
Dim curi As String = textLenght(i)
|
|
||||||
If InStr(curi, "https://") Then
|
|
||||||
ElseIf InStr(curi, "../") Then
|
|
||||||
Dim countDot() As String = curi.Split(New String() {"./"}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
||||||
|
|
||||||
Dim c() As String = New Uri(m3u8_url_3).Segments
|
|
||||||
Dim path As String = "https://" + New Uri(m3u8_url_3).Host
|
|
||||||
For i3 As Integer = 0 To c.Count - (2 + countDot.Count - 1)
|
|
||||||
path = path + c(i3)
|
|
||||||
Next
|
|
||||||
curi = path + countDot(countDot.Count - 1)
|
|
||||||
Else
|
|
||||||
Dim c() As String = New Uri(m3u8_url_3).Segments
|
|
||||||
Dim path As String = "https://" + New Uri(m3u8_url_3).Host
|
|
||||||
For i3 As Integer = 0 To c.Count - 2
|
|
||||||
path = path + c(i3)
|
|
||||||
Next
|
|
||||||
curi = path + textLenght(i)
|
|
||||||
End If
|
|
||||||
|
|
||||||
Dim Evaluator = New Thread(Sub() Me.TS_DownloadAsync(curi, Pfad2 + nummer4D + ".ts"))
|
|
||||||
Evaluator.Start()
|
Evaluator.Start()
|
||||||
ThreadList.Add(Evaluator)
|
ThreadList.Add(Evaluator)
|
||||||
m3u8FFmpeg = m3u8FFmpeg + Pfad2 + nummer4D + ".ts" + vbLf '+ "#" + curi + vbLf
|
m3u8FileContent = m3u8FileContent + File + vbNewLine
|
||||||
|
|
||||||
Dim FragmentsFinised = nummerint / FragmentsInt * 100 '(ThreadList.Count + nummerint) / FragmentsInt * 100
|
Count = Count + 1
|
||||||
Dim Update = New Thread(Sub() Me.TS_StatusAsync(FragmentsFinised, di, Filename, PauseTime))
|
Dim FragmentsFinised = Count * 100 / FragmentsInt
|
||||||
|
|
||||||
|
Dim Update = New Thread(Sub() Me.TS_StatusAsync(FragmentsFinised, di, PauseTime))
|
||||||
Update.Start()
|
Update.Start()
|
||||||
|
|
||||||
|
ElseIf zeile.Contains("URI=" + Chr(34)) Then
|
||||||
|
Dim Zeile2() As String = zeile.Split(New String() {"URI=" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
m3u8FileContent = m3u8FileContent + Zeile2(0) + "URI=" + Chr(34) + KeyFile + Chr(34) + vbNewLine ' a full path does not work here, that's why KeyFilePath is in the ffmpeg/downloader folder
|
||||||
|
|
||||||
|
ElseIf zeile.Contains("https://") Then
|
||||||
ElseIf textLenght(i) = "#EXT-X-PLAYLIST-TYPE:VOD" Then
|
'If zeile = DownloadFile Then
|
||||||
|
'Else
|
||||||
ElseIf InStr(textLenght(i), "URI=" + Chr(34)) Then
|
' DownloadFile = zeile
|
||||||
Dim KeyLine As String = textLenght(i)
|
'End If
|
||||||
If InStr(KeyLine, "https://") Then
|
|
||||||
|
|
||||||
Dim KeyFile() As String = KeyLine.Split(New String() {"URI=" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
||||||
Dim KeyFile2() As String = KeyFile(1).Split(New String() {Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
||||||
If LoadedKeys.Item(LoadedKeys.Count - 1) = KeyFile2(0) Then
|
|
||||||
Else
|
|
||||||
Dim KeyClient As New WebClient
|
|
||||||
KeyClient.Encoding = Encoding.UTF8
|
|
||||||
If Main.WebbrowserCookie = Nothing Then
|
|
||||||
Else
|
|
||||||
KeyClient.Headers.Add(HttpRequestHeader.Cookie, Main.WebbrowserCookie)
|
|
||||||
End If
|
|
||||||
Dim KeyFile3 As String = Einstellungen.GeräteID() + ".key"
|
|
||||||
KeyFileCache = KeyFile3
|
|
||||||
|
|
||||||
Dim retry As Boolean = True
|
|
||||||
Dim retryCount As Integer = 3
|
|
||||||
While retry
|
|
||||||
Try
|
|
||||||
KeyClient.DownloadFile(KeyFile2(0), Application.StartupPath + "\" + KeyFile3)
|
|
||||||
retry = False
|
|
||||||
Catch ex As Exception
|
|
||||||
If retryCount > 0 Then
|
|
||||||
retryCount = retryCount - 1
|
|
||||||
Me.Invoke(New Action(Function()
|
|
||||||
Label_percent.Text = "Access Error - retrying"
|
|
||||||
Debug.WriteLine(ex.ToString)
|
|
||||||
Return Nothing
|
|
||||||
End Function))
|
|
||||||
|
|
||||||
Else
|
|
||||||
'retry = False
|
|
||||||
Me.Invoke(New Action(Function()
|
|
||||||
Label_percent.Text = "Access Error - download canceled"
|
|
||||||
Debug.WriteLine(ex.ToString)
|
|
||||||
Return Nothing
|
|
||||||
End Function))
|
|
||||||
Return Nothing
|
|
||||||
Exit Function
|
|
||||||
|
|
||||||
End If
|
|
||||||
End Try
|
|
||||||
|
|
||||||
End While
|
|
||||||
LoadedKeys.Add(KeyFile2(0))
|
|
||||||
End If
|
|
||||||
If KeyFile2.Count > 1 Then
|
|
||||||
KeyLine = KeyFile(0) + "URI=" + Chr(34) + KeyFileCache + Chr(34) + KeyFile2(1)
|
|
||||||
Else
|
|
||||||
KeyLine = KeyFile(0) + "URI=" + Chr(34) + KeyFileCache + Chr(34)
|
|
||||||
End If
|
|
||||||
'ElseIf InStr(KeyLine, "../") Then
|
|
||||||
' Dim countDot() As String = KeyLine.Split(New String() {"./"}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
||||||
|
|
||||||
' Dim c() As String = New Uri(m3u8_url_3).Segments
|
|
||||||
' Dim path As String = "https://" + New Uri(m3u8_url_3).Host
|
|
||||||
' For i3 As Integer = 0 To c.Count - (2 + countDot.Count - 1)
|
|
||||||
' path = path + c(i3)
|
|
||||||
' Next
|
|
||||||
' KeyLine = path + countDot(countDot.Count - 1)
|
|
||||||
|
|
||||||
Else
|
|
||||||
Dim c() As String = New Uri(m3u8_url_3).Segments
|
|
||||||
Dim path As String = "https://" + New Uri(m3u8_url_3).Host
|
|
||||||
For i3 As Integer = 0 To c.Count - 2
|
|
||||||
path = path + c(i3)
|
|
||||||
Next
|
|
||||||
KeyLine = KeyLine.Replace("URI=" + Chr(34), "URI=" + Chr(34) + path) 'path + textLenght(i)
|
|
||||||
Dim KeyFile() As String = KeyLine.Split(New String() {"URI=" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
||||||
Dim KeyFile2() As String = KeyFile(1).Split(New String() {Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
||||||
If LoadedKeys.Item(LoadedKeys.Count - 1) = KeyFile2(0) Then
|
|
||||||
Else
|
|
||||||
Dim KeyClient As New WebClient
|
|
||||||
KeyClient.Encoding = Encoding.UTF8
|
|
||||||
If Main.WebbrowserCookie = Nothing Then
|
|
||||||
Else
|
|
||||||
KeyClient.Headers.Add(HttpRequestHeader.Cookie, Main.WebbrowserCookie)
|
|
||||||
End If
|
|
||||||
Dim KeyFile3 As String = Einstellungen.GeräteID() + ".key"
|
|
||||||
KeyFileCache = KeyFile3
|
|
||||||
|
|
||||||
Dim retry As Boolean = True
|
|
||||||
Dim retryCount As Integer = 3
|
|
||||||
|
|
||||||
Try
|
|
||||||
KeyClient.DownloadFile(KeyFile2(0), Application.StartupPath + "\" + KeyFile3)
|
|
||||||
retry = False
|
|
||||||
Catch ex As Exception
|
|
||||||
If retryCount > 0 Then
|
|
||||||
retryCount = retryCount - 1
|
|
||||||
Me.Invoke(New Action(Function()
|
|
||||||
Label_percent.Text = "Access Error - retrying"
|
|
||||||
Debug.WriteLine(ex.ToString)
|
|
||||||
Return Nothing
|
|
||||||
End Function))
|
|
||||||
|
|
||||||
Else
|
|
||||||
Me.Invoke(New Action(Function()
|
|
||||||
Label_percent.Text = "Access Error - download canceled"
|
|
||||||
Debug.WriteLine(ex.ToString)
|
|
||||||
Return Nothing
|
|
||||||
End Function))
|
|
||||||
Return Nothing
|
|
||||||
Exit Function
|
|
||||||
'Dim utf8WithoutBom2 As New System.Text.UTF8Encoding(False)
|
|
||||||
'Using sink As New StreamWriter(SubsFile, False, utf8WithoutBom2)
|
|
||||||
' sink.WriteLine(My.Resources.ass_template)
|
|
||||||
'End Using
|
|
||||||
'Retry = False
|
|
||||||
End If
|
|
||||||
End Try
|
|
||||||
'KeyClient.DownloadFile(KeyFile2(0), Application.StartupPath + "\" + KeyFile3)
|
|
||||||
LoadedKeys.Add(KeyFile2(0))
|
|
||||||
End If
|
|
||||||
If KeyFile2.Count > 1 Then
|
|
||||||
KeyLine = KeyFile(0) + "URI=" + Chr(34) + KeyFileCache + Chr(34) + KeyFile2(1)
|
|
||||||
Else
|
|
||||||
KeyLine = KeyFile(0) + "URI=" + Chr(34) + KeyFileCache + Chr(34)
|
|
||||||
End If
|
|
||||||
End If
|
|
||||||
m3u8FFmpeg = m3u8FFmpeg + KeyLine + vbLf
|
|
||||||
Else
|
Else
|
||||||
m3u8FFmpeg = m3u8FFmpeg + textLenght(i) + vbLf
|
m3u8FileContent = m3u8FileContent + zeile + vbNewLine
|
||||||
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
Next
|
Next
|
||||||
|
|
||||||
|
My.Computer.FileSystem.WriteAllText(Application.StartupPath + "\m3u8FileContent.txt", m3u8FileContent, False)
|
||||||
|
|
||||||
Dim utf8WithoutBom As New System.Text.UTF8Encoding(False)
|
Dim utf8WithoutBom As New System.Text.UTF8Encoding(False)
|
||||||
Using sink As New StreamWriter(Pfad2 + "\index" + Folder + ".m3u8", False, utf8WithoutBom)
|
Using sink As New StreamWriter(Folder + "\index.m3u8", False, utf8WithoutBom)
|
||||||
sink.WriteLine(m3u8FFmpeg)
|
sink.WriteLine(m3u8FileContent)
|
||||||
End Using
|
End Using
|
||||||
|
|
||||||
|
Return Folder + "\index.m3u8"
|
||||||
|
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Sub DownloadTSv4(ByVal DL_URL As String, ByVal DL_Pfad As String, ByVal CurrentSize As Integer, ByVal NewBytes As Integer)
|
||||||
|
Dim retry As Boolean = True
|
||||||
|
Dim retryCount As Integer = 3
|
||||||
|
While retry
|
||||||
|
Try
|
||||||
|
|
||||||
|
|
||||||
|
Dim Request As Net.HttpWebRequest = Net.HttpWebRequest.Create(DL_URL)
|
||||||
|
Dim Bytes(NewBytes) As Byte
|
||||||
|
Request.UserAgent = My.Resources.ffmpeg_user_agend.Replace(Chr(34), "").Replace("User-Agent: ", "")
|
||||||
|
Request.Timeout = 30000
|
||||||
|
Request.Method = "GET"
|
||||||
|
Request.AddRange(CurrentSize, CurrentSize + NewBytes)
|
||||||
|
|
||||||
|
|
||||||
|
Dim Response As Net.HttpWebResponse = Request.GetResponse()
|
||||||
|
If Response.StatusCode = Net.HttpStatusCode.PartialContent Or Net.HttpStatusCode.OK Then
|
||||||
|
|
||||||
|
Using binaryReader As New BinaryReader(Response.GetResponseStream())
|
||||||
|
Bytes = binaryReader.ReadBytes(NewBytes)
|
||||||
|
binaryReader.Close()
|
||||||
|
End Using
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
File.WriteAllBytes(DL_Pfad, Bytes)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
retry = False
|
||||||
|
Catch ex As Exception
|
||||||
|
If retryCount > 0 Then
|
||||||
|
retryCount = retryCount - 1
|
||||||
|
Me.Invoke(New Action(Function()
|
||||||
|
Label_percent.Text = "Access Error - retrying"
|
||||||
|
Debug.WriteLine(ex.ToString)
|
||||||
|
Return Nothing
|
||||||
|
End Function))
|
||||||
|
|
||||||
|
Else
|
||||||
|
Me.Invoke(New Action(Function()
|
||||||
|
Label_percent.Text = "Access Error - download canceled"
|
||||||
|
Debug.WriteLine(ex.ToString)
|
||||||
|
Return Nothing
|
||||||
|
End Function))
|
||||||
|
|
||||||
|
|
||||||
|
End If
|
||||||
|
End Try
|
||||||
|
|
||||||
|
End While
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Function DownloadHybrid(ByVal DL_URL As String, ByVal DL_Pfad As String, ByVal Filename As String) As String
|
||||||
|
Dim Folder As String = Einstellungen.GeräteID()
|
||||||
|
|
||||||
|
Dim PauseTime As Integer = 0
|
||||||
|
Dim Pfad2 As String = Path.GetDirectoryName(DL_Pfad.Replace(Chr(34), "")) + "\" + Folder + "\"
|
||||||
|
Dim di As New IO.DirectoryInfo(Pfad2)
|
||||||
|
Dim m3u8_url As String() = DL_URL.Split(New [Char]() {Chr(34)})
|
||||||
|
Dim m3u8FFmpeg As String = Nothing
|
||||||
|
|
||||||
|
Dim InuputStreams As String() = DL_URL.Split(New String() {"-i " + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
|
||||||
|
Me.Invoke(New Action(Function()
|
||||||
|
Label_percent.Text = "Checking input..."
|
||||||
|
Return Nothing
|
||||||
|
End Function))
|
||||||
|
|
||||||
|
For i As Integer = 0 To InuputStreams.Count - 1
|
||||||
|
Dim int As Integer = i
|
||||||
|
Dim InputURL As String() = InuputStreams(i).Split(New [Char]() {Chr(34)})
|
||||||
|
Dim InputClient As New WebClient
|
||||||
|
InputClient.Encoding = Encoding.UTF8
|
||||||
|
If Main.WebbrowserCookie = Nothing Then
|
||||||
|
Else
|
||||||
|
InputClient.Headers.Add(HttpRequestHeader.Cookie, Main.WebbrowserCookie)
|
||||||
|
End If
|
||||||
|
Dim SubsFile As String = Pfad2 + Einstellungen.GeräteID() + ".txt"
|
||||||
|
|
||||||
|
Try
|
||||||
|
Dim InputData As String = InputClient.DownloadString(InputURL(0))
|
||||||
|
|
||||||
|
If InStr(InputData, "#EXT-X-VERSION:3") Then
|
||||||
|
|
||||||
|
ElseIf InStr(InputData, "#EXT-X-VERSION:4") Then
|
||||||
|
ProcessV4(InputData, Pfad2 + "Stream-" + int.ToString + "\")
|
||||||
|
DL_URL = DL_URL.Replace("-i " + Chr(34) + InputURL(0), "-allowed_extensions ALL " + "-i " + Chr(34) + Pfad2 + "Stream-" + int.ToString + "\index.m3u8")
|
||||||
|
Else
|
||||||
|
'write string to file
|
||||||
|
Dim utf8WithoutBom2 As New System.Text.UTF8Encoding(False)
|
||||||
|
Using sink As New StreamWriter(SubsFile, False, utf8WithoutBom2)
|
||||||
|
sink.WriteLine(InputData)
|
||||||
|
End Using
|
||||||
|
'replace url with local file
|
||||||
|
DL_URL = DL_URL.Replace(InputURL(0), SubsFile)
|
||||||
|
End If
|
||||||
|
Catch ex As Exception
|
||||||
|
|
||||||
|
End Try
|
||||||
|
|
||||||
|
|
||||||
|
Next
|
||||||
|
|
||||||
|
|
||||||
For w As Integer = 0 To Integer.MaxValue
|
For w As Integer = 0 To Integer.MaxValue
|
||||||
If ThreadList.Count > 0 Then
|
If ThreadList.Count > 0 Then
|
||||||
Thread.Sleep(250)
|
Thread.Sleep(250)
|
||||||
@ -972,25 +824,22 @@ Public Class CRD_List_Item
|
|||||||
Exit For
|
Exit For
|
||||||
End If
|
End If
|
||||||
Next
|
Next
|
||||||
TS_StatusAsync(100, di, Filename, PauseTime)
|
|
||||||
|
|
||||||
DL_URL = DL_URL.Replace(m3u8_url(1), Pfad2 + "index" + Folder + ".m3u8")
|
|
||||||
|
|
||||||
If InStr(DL_URL, "-headers " + My.Resources.ffmpeg_user_agend) Then
|
TS_StatusAsync(100, di, PauseTime)
|
||||||
DL_URL = DL_URL.Replace("-headers " + My.Resources.ffmpeg_user_agend, "")
|
|
||||||
|
|
||||||
|
|
||||||
|
If InStr(DL_URL, " -headers " + My.Resources.ffmpeg_user_agend) Then
|
||||||
|
DL_URL = DL_URL.Replace(" -headers " + My.Resources.ffmpeg_user_agend, "")
|
||||||
End If
|
End If
|
||||||
|
|
||||||
'Using sink3 As New StreamWriter(Path.GetDirectoryName(DL_Pfad.Replace(Chr(34), "")) + "\hybridelog.log", False, utf8WithoutBom)
|
|
||||||
' sink3.WriteLine(HybrideLog)
|
|
||||||
'End Using
|
|
||||||
|
|
||||||
|
|
||||||
'MsgBox(DL_URL)
|
'MsgBox(DL_URL)
|
||||||
Dim exepath As String = Application.StartupPath + "\ffmpeg.exe"
|
Dim exepath As String = Application.StartupPath + "\ffmpeg.exe"
|
||||||
Dim startinfo As New System.Diagnostics.ProcessStartInfo
|
Dim startinfo As New System.Diagnostics.ProcessStartInfo
|
||||||
|
|
||||||
Dim cmd As String = "-allowed_extensions ALL " + DL_URL + " " + DL_Pfad '+ " " + ffmpeg_command + " " + DL_Pfad 'start ffmpeg with command strFFCMD string
|
Dim cmd As String = DL_URL + " " + DL_Pfad
|
||||||
' MsgBox(cmd) -headers " + Chr(34) + "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0" + Chr(34) +
|
|
||||||
If Debug2 = True Then
|
If Debug2 = True Then
|
||||||
MsgBox(cmd)
|
MsgBox(cmd)
|
||||||
End If
|
End If
|
||||||
@ -1020,6 +869,7 @@ Public Class CRD_List_Item
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
|
|
||||||
|
@ -42,6 +42,10 @@ Public Class ErrorDialog
|
|||||||
|
|
||||||
ElseIf Main.DialogTaskString = "Funimation_Resolution" Then
|
ElseIf Main.DialogTaskString = "Funimation_Resolution" Then
|
||||||
StatusLabel.Text = Main.LabelResoNotFoundText
|
StatusLabel.Text = Main.LabelResoNotFoundText
|
||||||
|
'Try
|
||||||
|
' My.Computer.FileSystem.WriteAllText(Application.StartupPath + "\Funimation-Resolution.log", Main.ResoNotFoundString, True)
|
||||||
|
'Catch ex As Exception
|
||||||
|
'End Try
|
||||||
Dim ResoList As New List(Of String)
|
Dim ResoList As New List(Of String)
|
||||||
Dim m3u8_split As String() = Main.ResoNotFoundString.Split(New String() {vbLf}, System.StringSplitOptions.RemoveEmptyEntries)
|
Dim m3u8_split As String() = Main.ResoNotFoundString.Split(New String() {vbLf}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
For i As Integer = 0 To m3u8_split.Count - 1
|
For i As Integer = 0 To m3u8_split.Count - 1
|
||||||
@ -53,7 +57,12 @@ Public Class ErrorDialog
|
|||||||
Dim Reso_avaible1 As String() = Main.ResoNotFoundString.Split(New String() {"RESOLUTION="}, System.StringSplitOptions.RemoveEmptyEntries)
|
Dim Reso_avaible1 As String() = Main.ResoNotFoundString.Split(New String() {"RESOLUTION="}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
For i As Integer = 0 To ResoList.Count - 1
|
For i As Integer = 0 To ResoList.Count - 1
|
||||||
Dim Reso_avaible As String() = ResoList.Item(i).Split(New String() {"RESOLUTION="}, System.StringSplitOptions.RemoveEmptyEntries)
|
Dim Reso_avaible As String() = ResoList.Item(i).Split(New String() {"RESOLUTION="}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
ComboBox1.Items.Add(Reso_avaible(1))
|
If InStr(Reso_avaible(1), ",") Then
|
||||||
|
Dim Reso_avaible2 As String() = Reso_avaible(1).Split(New String() {","}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
ComboBox1.Items.Add(Reso_avaible2(0))
|
||||||
|
Else
|
||||||
|
ComboBox1.Items.Add(Reso_avaible(1))
|
||||||
|
End If
|
||||||
Next
|
Next
|
||||||
SurroundingSub()
|
SurroundingSub()
|
||||||
Try
|
Try
|
||||||
|
@ -19,6 +19,7 @@ Public Class GeckoFX
|
|||||||
|
|
||||||
|
|
||||||
Private Sub GeckoWebBrowser1_DocumentCompleted(sender As Object, e As EventArgs) Handles WebBrowser1.DocumentCompleted
|
Private Sub GeckoWebBrowser1_DocumentCompleted(sender As Object, e As EventArgs) Handles WebBrowser1.DocumentCompleted
|
||||||
|
Debug.WriteLine(Date.Now.ToString + "." + Date.Now.Millisecond.ToString)
|
||||||
'MsgBox("loaded!")
|
'MsgBox("loaded!")
|
||||||
If ScanTrue = False Then
|
If ScanTrue = False Then
|
||||||
Button2.Enabled = True
|
Button2.Enabled = True
|
||||||
@ -68,6 +69,7 @@ Public Class GeckoFX
|
|||||||
Else
|
Else
|
||||||
|
|
||||||
If CBool(InStr(WebBrowser1.Url.ToString, "beta.crunchyroll.com")) Then
|
If CBool(InStr(WebBrowser1.Url.ToString, "beta.crunchyroll.com")) Then
|
||||||
|
Main.WebbrowserURL = WebBrowser1.Url.ToString
|
||||||
Exit Sub
|
Exit Sub
|
||||||
|
|
||||||
ElseIf CBool(InStr(WebBrowser1.Url.ToString, "crunchyroll.com")) Then
|
ElseIf CBool(InStr(WebBrowser1.Url.ToString, "crunchyroll.com")) Then
|
||||||
@ -208,7 +210,7 @@ Public Class GeckoFX
|
|||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
If Main.UserBowser = False Then
|
If Main.UserBowser = False Then
|
||||||
If Main.b = True Then
|
If Main.b = True Then
|
||||||
Anime_Add.StatusLabel.Text = "Status: idle"
|
Anime_Add.StatusLabel.Text = "Status: idle"
|
||||||
Me.Close()
|
Me.Close()
|
||||||
@ -253,7 +255,7 @@ Public Class GeckoFX
|
|||||||
|
|
||||||
End Try
|
End Try
|
||||||
|
|
||||||
Main.UserBowser = True
|
'Main.UserBowser = True
|
||||||
'Main.Pause(15)
|
'Main.Pause(15)
|
||||||
'For ii As Integer = 19 To 46
|
'For ii As Integer = 19 To 46
|
||||||
' WebBrowser1.Navigate("https://proxer.me/read/22459/" + ii.ToString + "/en/1")
|
' WebBrowser1.Navigate("https://proxer.me/read/22459/" + ii.ToString + "/en/1")
|
||||||
@ -443,21 +445,26 @@ Public Class GeckoFX
|
|||||||
|
|
||||||
If Main.BlockList.Contains(url.Host) Then
|
If Main.BlockList.Contains(url.Host) Then
|
||||||
e.Cancel = True
|
e.Cancel = True
|
||||||
Debug.WriteLine(requesturl)
|
'Debug.WriteLine(requesturl)
|
||||||
Exit Sub
|
Exit Sub
|
||||||
ElseIf requesturl.Contains("ad_") Or requesturl.Contains("ads") Or requesturl.Contains(".swf") Then
|
ElseIf requesturl.Contains("ad_") Or requesturl.Contains("ads") Or requesturl.Contains(".swf") Or requesturl.Contains("unsupported") Then
|
||||||
e.Cancel = True
|
e.Cancel = True
|
||||||
Debug.WriteLine(requesturl)
|
'Debug.WriteLine(requesturl)
|
||||||
Exit Sub
|
Exit Sub
|
||||||
|
|
||||||
|
End If
|
||||||
|
If CBool(InStr(requesturl, ".js")) = True Then
|
||||||
|
|
||||||
|
Debug.WriteLine(requesturl)
|
||||||
End If
|
End If
|
||||||
If CBool(InStr(requesturl, "https://beta-api.crunchyroll.com/")) And CBool(InStr(requesturl, "streams?")) Then
|
If CBool(InStr(requesturl, "https://beta-api.crunchyroll.com/")) And CBool(InStr(requesturl, "streams?")) Then
|
||||||
If Main.b = False Then
|
If Main.b = False Then
|
||||||
Main.GetBetaVideo(requesturl, WebBrowser1.Url.ToString)
|
Main.GetBetaVideo(requesturl, Main.WebbrowserURL)
|
||||||
Exit Sub
|
Exit Sub
|
||||||
End If
|
End If
|
||||||
ElseIf CBool(InStr(requesturl, "https://beta-api.crunchyroll.com/")) And CBool(InStr(requesturl, "seasons?series_id=")) Then
|
ElseIf CBool(InStr(requesturl, "https://beta-api.crunchyroll.com/")) And CBool(InStr(requesturl, "seasons?series_id=")) Then
|
||||||
If Main.b = False Then
|
If Main.b = False Then
|
||||||
Main.WebbrowserURL = WebBrowser1.Url.ToString
|
'Main.WebbrowserURL = WebBrowser1.Url.ToString
|
||||||
Main.GetBetaSeasons(requesturl)
|
Main.GetBetaSeasons(requesturl)
|
||||||
Exit Sub
|
Exit Sub
|
||||||
End If
|
End If
|
||||||
@ -514,6 +521,13 @@ Public Class GeckoFX
|
|||||||
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
If Main.UserBowser = False Then
|
||||||
|
If CBool(InStr(requesturl, ".jpg")) = True Or CBool(InStr(requesturl, ".bmp")) = True Or CBool(InStr(requesturl, ".gif")) = True Or CBool(InStr(requesturl, ".png")) = True Or CBool(InStr(requesturl, ".webp")) = True Then
|
||||||
|
e.Cancel = True
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
@ -546,5 +560,10 @@ Public Class GeckoFX
|
|||||||
CertOverrideService.GetService().RememberValidityOverride(e.Uri, e.Certificate, CertOverride.Mismatch, False)
|
CertOverrideService.GetService().RememberValidityOverride(e.Uri, e.Certificate, CertOverride.Mismatch, False)
|
||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Private Sub WebBrowser1_ConsoleMessage(sender As Object, e As ConsoleMessageEventArgs) Handles WebBrowser1.ConsoleMessage
|
||||||
|
' Debug.WriteLine(e.Message)
|
||||||
|
' MsgBox(e.Message)
|
||||||
|
End Sub
|
||||||
End Class
|
End Class
|
||||||
|
|
||||||
|
@ -304,6 +304,7 @@ Public Class Main
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
Public Declare Function waveOutSetVolume Lib "winmm.dll" (ByVal uDeviceID As Integer, ByVal dwVolume As Integer) As Integer
|
Public Declare Function waveOutSetVolume Lib "winmm.dll" (ByVal uDeviceID As Integer, ByVal dwVolume As Integer) As Integer
|
||||||
|
|
||||||
Public Sub SetSettingsTheme()
|
Public Sub SetSettingsTheme()
|
||||||
@ -1086,6 +1087,7 @@ Public Class Main
|
|||||||
End Function
|
End Function
|
||||||
|
|
||||||
Public Function CCtoMP4CC(ByVal HardSub As String) As String
|
Public Function CCtoMP4CC(ByVal HardSub As String) As String
|
||||||
|
|
||||||
Try
|
Try
|
||||||
If HardSub = "deDE" Then
|
If HardSub = "deDE" Then
|
||||||
Return "ger"
|
Return "ger"
|
||||||
@ -1281,7 +1283,7 @@ Public Class Main
|
|||||||
End If
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
'MsgBox(CR_FilenName)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1311,6 +1313,8 @@ Public Class Main
|
|||||||
' Ordner wurde nich erstellt
|
' Ordner wurde nich erstellt
|
||||||
Pfad2 = Pfad + "\" + CR_FilenName + VideoFormat
|
Pfad2 = Pfad + "\" + CR_FilenName + VideoFormat
|
||||||
End Try
|
End Try
|
||||||
|
Else
|
||||||
|
Pfad2 = Chr(34) + Pfad2 + CR_FilenName + VideoFormat + Chr(34)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
|
||||||
@ -1472,9 +1476,10 @@ Public Class Main
|
|||||||
End If
|
End If
|
||||||
Else
|
Else
|
||||||
For i As Integer = 0 To SoftSubs2.Count - 1
|
For i As Integer = 0 To SoftSubs2.Count - 1
|
||||||
|
Dim ii As Integer = i
|
||||||
Me.Invoke(New Action(Function()
|
Me.Invoke(New Action(Function()
|
||||||
Anime_Add.StatusLabel.Text = "Status: downloading subtitle file " + HardSubValuesToDisplay(SoftSubs2(i))
|
Anime_Add.StatusLabel.Text = "Status: downloading subtitle file " + HardSubValuesToDisplay(SoftSubs2(ii))
|
||||||
Me.Text = "Status: downloading subtitle file " + HardSubValuesToDisplay(SoftSubs2(i))
|
Me.Text = "Status: downloading subtitle file " + HardSubValuesToDisplay(SoftSubs2(ii))
|
||||||
Me.Invalidate()
|
Me.Invalidate()
|
||||||
Return Nothing
|
Return Nothing
|
||||||
End Function))
|
End Function))
|
||||||
@ -1883,11 +1888,17 @@ Public Class Main
|
|||||||
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If Season_Prefix = "[default season prefix]" Then
|
'My.Computer.Clipboard.SetText(ObjectJson)
|
||||||
CR_season_number = CR_season_title
|
'MsgBox(CR_season_title)
|
||||||
Else
|
|
||||||
|
|
||||||
CR_season_number = Season_Prefix + CR_season_number
|
If Season_Prefix = "[default season prefix]" Then
|
||||||
|
If CR_season_title = CR_series_title Then
|
||||||
|
CR_season_number = CR_season_title + "Season " + CR_season_number
|
||||||
|
End If
|
||||||
|
CR_season_number = CR_season_title
|
||||||
|
Else
|
||||||
|
|
||||||
|
CR_season_number = Season_Prefix + CR_season_number
|
||||||
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
@ -1950,82 +1961,17 @@ Public Class Main
|
|||||||
' Ordner wurde nich erstellt
|
' Ordner wurde nich erstellt
|
||||||
Pfad2 = Pfad + "\" + CR_FilenName + VideoFormat
|
Pfad2 = Pfad + "\" + CR_FilenName + VideoFormat
|
||||||
End Try
|
End Try
|
||||||
|
Else
|
||||||
|
Pfad2 = Chr(34) + Pfad2 + CR_FilenName + VideoFormat + Chr(34)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
Pfad2 = Chr(34) + Pfad2 + CR_FilenName + VideoFormat + Chr(34)
|
|
||||||
|
|
||||||
|
|
||||||
#End Region
|
|
||||||
#Region "Subs" 'to be done
|
|
||||||
|
|
||||||
'Dim SoftSubs2 As New List(Of String)
|
|
||||||
'If SoftSubs.Count > 0 Then
|
|
||||||
' For i As Integer = 0 To SoftSubs.Count - 1
|
|
||||||
' If CBool(InStr(WebbrowserText, Chr(34) + "language" + Chr(34) + ":" + Chr(34) + SoftSubs(i) + Chr(34) + ",")) Then
|
|
||||||
' SoftSubs2.Add(SoftSubs(i))
|
|
||||||
' Else
|
|
||||||
' 'MsgBox("Softsubtitle for " + SoftSubs(i) + " is not avalible.", MsgBoxStyle.Information)
|
|
||||||
' End If
|
|
||||||
' Next
|
|
||||||
|
|
||||||
'End If
|
|
||||||
'If SubSprache = "None" Then
|
|
||||||
' If CBool(InStr(WebbrowserText, Chr(34) + "hardsub_lang" + Chr(34) + ":null")) Then
|
|
||||||
' SubSprache2 = "null"
|
|
||||||
' Else
|
|
||||||
' Me.Invoke(New Action(Function()
|
|
||||||
' ResoNotFoundString = WebbrowserText
|
|
||||||
' DialogTaskString = "Language"
|
|
||||||
' ErrorDialog.ShowDialog()
|
|
||||||
' Return Nothing
|
|
||||||
' End Function))
|
|
||||||
' If UserCloseDialog = True Then
|
|
||||||
' Throw New System.Exception(Chr(34) + "UserAbort" + Chr(34))
|
|
||||||
' Else
|
|
||||||
' If ResoBackString = Nothing Then
|
|
||||||
' Else
|
|
||||||
' SubSprache2 = ResoBackString
|
|
||||||
' End If
|
|
||||||
' End If
|
|
||||||
' 'Throw New System.Exception("Could not find the sub language")
|
|
||||||
' End If
|
|
||||||
|
|
||||||
|
|
||||||
'Else
|
|
||||||
' If CBool(InStr(WebbrowserText, Chr(34) + "hardsub_lang" + Chr(34) + ":" + Chr(34) + SubSprache + Chr(34) + ",")) Then
|
|
||||||
' SubSprache2 = Chr(34) + SubSprache + Chr(34)
|
|
||||||
|
|
||||||
' ElseIf CBool(InStr(WebbrowserText, Chr(34) + "language" + Chr(34) + ":" + Chr(34) + SubSprache + Chr(34) + ",")) Then
|
|
||||||
' If MessageBox.Show("It look like only Softsubtitle are avalibe." + vbNewLine + "Are you want to use Softsubtitle this time instead?", "No Hardsubtitle", MessageBoxButtons.YesNo) = DialogResult.Yes Then
|
|
||||||
' SubSprache2 = "null"
|
|
||||||
' SoftSubs2.Add(SubSprache)
|
|
||||||
' Else
|
|
||||||
' Throw New System.Exception("Could not find the sub language")
|
|
||||||
' End If
|
|
||||||
|
|
||||||
|
|
||||||
' Else
|
|
||||||
' Me.Invoke(New Action(Function()
|
|
||||||
' ResoNotFoundString = WebbrowserText
|
|
||||||
' DialogTaskString = "Language"
|
|
||||||
' ErrorDialog.ShowDialog()
|
|
||||||
' Return Nothing
|
|
||||||
' End Function))
|
|
||||||
' If UserCloseDialog = True Then
|
|
||||||
' Throw New System.Exception(Chr(34) + "UserAbort" + Chr(34))
|
|
||||||
' Else
|
|
||||||
' If ResoBackString = Nothing Then
|
|
||||||
' Else
|
|
||||||
' SubSprache2 = ResoBackString
|
|
||||||
' End If
|
|
||||||
' End If
|
|
||||||
' End If
|
|
||||||
'End If
|
|
||||||
|
|
||||||
|
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
#Region "m3u8 suche"
|
#Region "VideoJson"
|
||||||
|
|
||||||
|
|
||||||
Dim VideoJson As String = Nothing
|
Dim VideoJson As String = Nothing
|
||||||
Try
|
Try
|
||||||
@ -2039,7 +1985,106 @@ Public Class Main
|
|||||||
Exit Sub
|
Exit Sub
|
||||||
End Try
|
End Try
|
||||||
|
|
||||||
If CBool(InStr(VideoJson, "audio_locale")) Then ' false on movie true on series
|
Dim hls_type As String = Nothing
|
||||||
|
|
||||||
|
If CBool(InStr(VideoJson, Chr(34) + "adaptive_hls")) = True Then
|
||||||
|
hls_type = "adaptive_hls"
|
||||||
|
ElseIf CBool(InStr(VideoJson, Chr(34) + "multitrack_adaptive_hls_v2")) = True Then
|
||||||
|
hls_type = "multitrack_adaptive_hls_v2"
|
||||||
|
ElseIf CBool(InStr(VideoJson, Chr(34) + "vo_adaptive_hls")) = True Then
|
||||||
|
hls_type = "vo_adaptive_hls"
|
||||||
|
Else
|
||||||
|
MsgBox("No download stream avalible", MsgBoxStyle.Critical)
|
||||||
|
Exit Sub
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim LangNew As String = ConvertCC(SubSprache)
|
||||||
|
|
||||||
|
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
#Region "Download softsub file or build ffmpeg cmd"
|
||||||
|
Dim SoftSubs2 As New List(Of String)
|
||||||
|
If SoftSubs.Count > 0 Then
|
||||||
|
For i As Integer = 0 To SoftSubs.Count - 1
|
||||||
|
If CBool(InStr(VideoJson, Chr(34) + "locale" + Chr(34) + ":" + Chr(34) + ConvertCC(SoftSubs(i)) + Chr(34) + "," + Chr(34) + "url" + Chr(34) + ":" + Chr(34))) Then
|
||||||
|
SoftSubs2.Add(SoftSubs(i))
|
||||||
|
Else
|
||||||
|
'MsgBox("Softsubtitle for " + SoftSubs(i) + " is not avalible.", MsgBoxStyle.Information)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim SoftSubMergeURLs As String = Nothing
|
||||||
|
Dim SoftSubMergeMaps As String = " -map 0:v -map 0:a"
|
||||||
|
Dim SoftSubMergeMetatata As String = Nothing
|
||||||
|
|
||||||
|
If SoftSubs2.Count > 0 Then
|
||||||
|
If MergeSubs = True And SubsOnly = False Then
|
||||||
|
Dim DispositionIndex As Integer
|
||||||
|
For i As Integer = 0 To SoftSubs2.Count - 1
|
||||||
|
Debug.WriteLine(SoftSubs2(i))
|
||||||
|
If SoftSubs2(i) = DefaultSubCR Then
|
||||||
|
DispositionIndex = i
|
||||||
|
End If
|
||||||
|
Dim SoftSub As String() = VideoJson.Split(New String() {Chr(34) + "locale" + Chr(34) + ":" + Chr(34) + ConvertCC(SoftSubs2(i)) + Chr(34) + "," + Chr(34) + "url" + Chr(34) + ":" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
Dim SoftSub_2 As String() = SoftSub(1).Split(New [Char]() {Chr(34)})
|
||||||
|
Dim SoftSub_3 As String = SoftSub_2(0).Replace("&", "&").Replace("/u0026", "&").Replace("\u002F", "/").Replace("\u0026", "&")
|
||||||
|
If SoftSubMergeURLs = Nothing Then
|
||||||
|
SoftSubMergeURLs = " -i " + Chr(34) + SoftSub_3 + Chr(34)
|
||||||
|
Else
|
||||||
|
SoftSubMergeURLs = SoftSubMergeURLs + " -i " + Chr(34) + SoftSub_3 + Chr(34)
|
||||||
|
End If
|
||||||
|
SoftSubMergeMaps = SoftSubMergeMaps + " -map " + (i + 1).ToString
|
||||||
|
If SoftSubMergeMetatata = Nothing Then
|
||||||
|
SoftSubMergeMetatata = " -metadata:s:s:" + i.ToString + " language=" + CCtoMP4CC(SoftSubs2(i)) + " -metadata:s:s:" + i.ToString + " title=" + Chr(34) + HardSubValuesToDisplay(SoftSubs2(i)) + Chr(34) + " -metadata:s:s:" + i.ToString + " handler_name=" + Chr(34) + HardSubValuesToDisplay(SoftSubs2(i)) + Chr(34)
|
||||||
|
Else
|
||||||
|
SoftSubMergeMetatata = SoftSubMergeMetatata + " -metadata:s:s:" + i.ToString + " language=" + CCtoMP4CC(SoftSubs2(i)) + " -metadata:s:s:" + i.ToString + " title=" + Chr(34) + HardSubValuesToDisplay(SoftSubs2(i)) + Chr(34) + " -metadata:s:s:" + i.ToString + " handler_name=" + Chr(34) + HardSubValuesToDisplay(SoftSubs2(i)) + Chr(34)
|
||||||
|
End If
|
||||||
|
|
||||||
|
Next
|
||||||
|
If DispositionIndex = Nothing Then
|
||||||
|
Else
|
||||||
|
SoftSubMergeMetatata = SoftSubMergeMetatata + " -disposition:s:" + DispositionIndex.ToString + " default"
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
For i As Integer = 0 To SoftSubs2.Count - 1
|
||||||
|
Dim i2 As Integer = i
|
||||||
|
Me.Invoke(New Action(Function()
|
||||||
|
Anime_Add.StatusLabel.Text = "Status: downloading subtitle file " + HardSubValuesToDisplay(SoftSubs2(i2))
|
||||||
|
Me.Text = "Status: downloading subtitle file " + HardSubValuesToDisplay(SoftSubs2(i2))
|
||||||
|
Me.Invalidate()
|
||||||
|
Return Nothing
|
||||||
|
End Function))
|
||||||
|
Dim SoftSub As String() = VideoJson.Split(New String() {Chr(34) + "locale" + Chr(34) + ":" + Chr(34) + ConvertCC(SoftSubs2(i)) + Chr(34) + "," + Chr(34) + "url" + Chr(34) + ":" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
Dim SoftSub_2 As String() = SoftSub(1).Split(New [Char]() {Chr(34)})
|
||||||
|
Dim SoftSub_3 As String = SoftSub_2(0).Replace("&", "&").Replace("/u0026", "&").Replace("\u002F", "/").Replace("\u0026", "&")
|
||||||
|
'MsgBox(SoftSub_3)
|
||||||
|
Dim client0 As New WebClient
|
||||||
|
client0.Encoding = Encoding.UTF8
|
||||||
|
Dim str0 As String = client0.DownloadString(SoftSub_3)
|
||||||
|
Dim Pfad3 As String = Pfad2.Replace(Chr(34), "")
|
||||||
|
Dim FN As String = Path.ChangeExtension(Path.Combine(Path.GetFileNameWithoutExtension(Pfad3) + " " + SoftSubs2(i) + Path.GetExtension(Pfad3)), "ass")
|
||||||
|
'MsgBox(FN)
|
||||||
|
If i = 0 Then
|
||||||
|
FN = Path.ChangeExtension(Path.GetFileName(Pfad3), "ass")
|
||||||
|
'MsgBox(FN)
|
||||||
|
End If
|
||||||
|
Dim Pfad4 As String = Path.Combine(Path.GetDirectoryName(Pfad3), FN)
|
||||||
|
'MsgBox(Pfad4)
|
||||||
|
File.WriteAllText(Pfad4, str0, Encoding.UTF8)
|
||||||
|
Pause(3)
|
||||||
|
Next
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
End If
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
#Region "m3u8 suche"
|
||||||
|
|
||||||
|
If CBool(InStr(VideoJson, "audio_locale")) Then
|
||||||
Dim CR_audio As String() = VideoJson.Split(New String() {"audio_locale" + Chr(34) + ":" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
Dim CR_audio As String() = VideoJson.Split(New String() {"audio_locale" + Chr(34) + ":" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
Dim CR_audio2 As String() = CR_audio(1).Split(New String() {Chr(34) + ","}, System.StringSplitOptions.RemoveEmptyEntries) '(New [Char]() {"-"})
|
Dim CR_audio2 As String() = CR_audio(1).Split(New String() {Chr(34) + ","}, System.StringSplitOptions.RemoveEmptyEntries) '(New [Char]() {"-"})
|
||||||
CR_audio_locale = String.Join(" ", CR_audio2(0).Split(invalids, StringSplitOptions.RemoveEmptyEntries)).TrimEnd("."c)
|
CR_audio_locale = String.Join(" ", CR_audio2(0).Split(invalids, StringSplitOptions.RemoveEmptyEntries)).TrimEnd("."c)
|
||||||
@ -2049,11 +2094,9 @@ Public Class Main
|
|||||||
Dim CR_URI_Master As String = Nothing
|
Dim CR_URI_Master As String = Nothing
|
||||||
'If SubsOnly = False Then
|
'If SubsOnly = False Then
|
||||||
Dim ii As Integer = 0
|
Dim ii As Integer = 0
|
||||||
'MsgBox(Chr(34) + "hardsub_lang" + Chr(34) + ":" + SubSprache2 + "," + Chr(34) + "url" + Chr(34) + ":" + Chr(34))
|
Dim CR_VideoJson As String() = VideoJson.Split(New String() {hls_type}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
|
||||||
Dim CR_VideoJson As String() = VideoJson.Split(New String() {"adaptive_hls"}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
||||||
Dim CR_VideoJsonHardSubs As String() = CR_VideoJson(1).Split(New String() {"hardsub_locale" + Chr(34) + ":" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
Dim CR_VideoJsonHardSubs As String() = CR_VideoJson(1).Split(New String() {"hardsub_locale" + Chr(34) + ":" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
Dim LangNew As String = ConvertCC(SubSprache)
|
|
||||||
Debug.WriteLine(LangNew)
|
Debug.WriteLine(LangNew)
|
||||||
Dim hls_List As New List(Of String)
|
Dim hls_List As New List(Of String)
|
||||||
For i As Integer = 0 To CR_VideoJsonHardSubs.Count - 1
|
For i As Integer = 0 To CR_VideoJsonHardSubs.Count - 1
|
||||||
@ -2084,70 +2127,6 @@ Public Class Main
|
|||||||
'End If
|
'End If
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
#Region "Download softsub file or build ffmpeg cmd"
|
|
||||||
'Dim SoftSubMergeURLs As String = Nothing
|
|
||||||
'Dim SoftSubMergeMaps As String = " -map 0:v -map 0:a"
|
|
||||||
'Dim SoftSubMergeMetatata As String = Nothing
|
|
||||||
|
|
||||||
'If SoftSubs2.Count > 0 Then
|
|
||||||
' If MergeSubs = True And SubsOnly = False Then
|
|
||||||
' Dim DispositionIndex As Integer
|
|
||||||
' For i As Integer = 0 To SoftSubs2.Count - 1
|
|
||||||
' Debug.WriteLine(SoftSubs2(i))
|
|
||||||
' If SoftSubs2(i) = DefaultSubCR Then
|
|
||||||
' DispositionIndex = i
|
|
||||||
' End If
|
|
||||||
' Dim SoftSub As String() = WebbrowserText.Split(New String() {Chr(34) + "language" + Chr(34) + ":" + Chr(34) + SoftSubs2(i) + Chr(34) + "," + Chr(34) + "url" + Chr(34) + ":" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
||||||
' Dim SoftSub_2 As String() = SoftSub(1).Split(New [Char]() {Chr(34)})
|
|
||||||
' Dim SoftSub_3 As String = SoftSub_2(0).Replace("\/", "/")
|
|
||||||
' If SoftSubMergeURLs = Nothing Then
|
|
||||||
' SoftSubMergeURLs = " -i " + Chr(34) + SoftSub_3 + Chr(34)
|
|
||||||
' Else
|
|
||||||
' SoftSubMergeURLs = SoftSubMergeURLs + " -i " + Chr(34) + SoftSub_3 + Chr(34)
|
|
||||||
' End If
|
|
||||||
' SoftSubMergeMaps = SoftSubMergeMaps + " -map " + (i + 1).ToString
|
|
||||||
' If SoftSubMergeMetatata = Nothing Then
|
|
||||||
' SoftSubMergeMetatata = " -metadata:s:s:" + i.ToString + " language=" + CCtoMP4CC(SoftSubs2(i)) + " -metadata:s:s:" + i.ToString + " title=" + Chr(34) + HardSubValuesToDisplay(SoftSubs2(i)) + Chr(34) + " -metadata:s:s:" + i.ToString + " handler_name=" + Chr(34) + HardSubValuesToDisplay(SoftSubs2(i)) + Chr(34)
|
|
||||||
' Else
|
|
||||||
' SoftSubMergeMetatata = SoftSubMergeMetatata + " -metadata:s:s:" + i.ToString + " language=" + CCtoMP4CC(SoftSubs2(i)) + " -metadata:s:s:" + i.ToString + " title=" + Chr(34) + HardSubValuesToDisplay(SoftSubs2(i)) + Chr(34) + " -metadata:s:s:" + i.ToString + " handler_name=" + Chr(34) + HardSubValuesToDisplay(SoftSubs2(i)) + Chr(34)
|
|
||||||
' End If
|
|
||||||
|
|
||||||
' Next
|
|
||||||
' If DispositionIndex = Nothing Then
|
|
||||||
' Else
|
|
||||||
' SoftSubMergeMetatata = SoftSubMergeMetatata + " -disposition:s:" + DispositionIndex.ToString + " default"
|
|
||||||
' End If
|
|
||||||
' Else
|
|
||||||
' For i As Integer = 0 To SoftSubs2.Count - 1
|
|
||||||
' Me.Invoke(New Action(Function()
|
|
||||||
' Anime_Add.StatusLabel.Text = "Status: downloading subtitle file " + HardSubValuesToDisplay(SoftSubs2(i))
|
|
||||||
' Me.Text = "Status: downloading subtitle file " + HardSubValuesToDisplay(SoftSubs2(i))
|
|
||||||
' Me.Invalidate()
|
|
||||||
' Return Nothing
|
|
||||||
' End Function))
|
|
||||||
' Dim SoftSub As String() = WebbrowserText.Split(New String() {Chr(34) + "language" + Chr(34) + ":" + Chr(34) + SoftSubs2(i) + Chr(34) + "," + Chr(34) + "url" + Chr(34) + ":" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
||||||
' Dim SoftSub_2 As String() = SoftSub(1).Split(New [Char]() {Chr(34)})
|
|
||||||
' Dim SoftSub_3 As String = SoftSub_2(0).Replace("\/", "/")
|
|
||||||
' Dim client0 As New WebClient
|
|
||||||
' client0.Encoding = Encoding.UTF8
|
|
||||||
' Dim str0 As String = client0.DownloadString(SoftSub_3)
|
|
||||||
' Dim Pfad3 As String = Pfad2.Replace(Chr(34), "")
|
|
||||||
' Dim FN As String = Path.ChangeExtension(Path.Combine(Path.GetFileNameWithoutExtension(Pfad3) + " " + SoftSubs2(i) + Path.GetExtension(Pfad3)), "ass")
|
|
||||||
' 'MsgBox(FN)
|
|
||||||
' If i = 0 Then
|
|
||||||
' FN = Path.ChangeExtension(Path.GetFileName(Pfad3), "ass")
|
|
||||||
' 'MsgBox(FN)
|
|
||||||
' End If
|
|
||||||
' Dim Pfad4 As String = Path.Combine(Path.GetDirectoryName(Pfad3), FN)
|
|
||||||
' 'MsgBox(Pfad4)
|
|
||||||
' File.WriteAllText(Pfad4, str0, Encoding.UTF8)
|
|
||||||
' Pause(3)
|
|
||||||
' Next
|
|
||||||
|
|
||||||
' End If
|
|
||||||
|
|
||||||
'End If
|
|
||||||
#End Region
|
|
||||||
|
|
||||||
#Region "lösche doppel download"
|
#Region "lösche doppel download"
|
||||||
|
|
||||||
@ -2176,10 +2155,10 @@ Public Class Main
|
|||||||
|
|
||||||
If Reso = 42 And HybridMode = False Then
|
If Reso = 42 And HybridMode = False Then
|
||||||
If MergeSubs = True Then
|
If MergeSubs = True Then
|
||||||
' URL_DL = "-i " + Chr(34) + CR_URI_Master + Chr(34) + SoftSubMergeURLs + SoftSubMergeMaps + " " + ffmpeg_command + " -c:s " + MergeSubsFormat + SoftSubMergeMetatata + " -metadata:s:a:0 language=" + CCtoMP4CC(CR_Anime_Dub)
|
URL_DL = "-i " + Chr(34) + CR_URI_Master + Chr(34) + SoftSubMergeURLs + SoftSubMergeMaps + " " + ffmpeg_command + " -c:s " + MergeSubsFormat + SoftSubMergeMetatata + " -metadata:s:a:0 language=" + CCtoMP4CC(ConvertCC(CR_audio_locale))
|
||||||
URL_DL = "-i " + Chr(34) + CR_URI_Master + Chr(34) + " -metadata:s:a:0 language=" + CCtoMP4CC(CR_audio_locale) + " " + ffmpeg_command
|
'URL_DL = "-i " + Chr(34) + CR_URI_Master + Chr(34) + " -metadata:s:a:0 language=" + CCtoMP4CC(ConvertCC(CR_audio_locale)) + " " + ffmpeg_command
|
||||||
Else
|
Else
|
||||||
URL_DL = "-i " + Chr(34) + CR_URI_Master + Chr(34) + " -metadata:s:a:0 language=" + CCtoMP4CC(CR_audio_locale) + " " + ffmpeg_command
|
URL_DL = "-i " + Chr(34) + CR_URI_Master + Chr(34) + " -metadata:s:a:0 language=" + CCtoMP4CC(ConvertCC(CR_audio_locale)) + " " + ffmpeg_command
|
||||||
End If
|
End If
|
||||||
'MsgBox(URL_DL)
|
'MsgBox(URL_DL)
|
||||||
Else
|
Else
|
||||||
@ -2223,11 +2202,12 @@ Public Class Main
|
|||||||
ffmpeg_url_3 = ffmpeg_url_2(2).Split(New [Char]() {System.Convert.ToChar("#")})
|
ffmpeg_url_3 = ffmpeg_url_2(2).Split(New [Char]() {System.Convert.ToChar("#")})
|
||||||
|
|
||||||
If MergeSubs = True Then
|
If MergeSubs = True Then
|
||||||
'URL_DL = "-i " + Chr(34) + ffmpeg_url_3(0).Trim() + Chr(34) + SoftSubMergeURLs + SoftSubMergeMaps + " " + ffmpeg_command + " -c:s " + MergeSubsFormat + SoftSubMergeMetatata + " -metadata:s:a:0 language=" + CCtoMP4CC(CR_Anime_Dub)
|
Debug.WriteLine(ConvertCC(CR_audio_locale))
|
||||||
URL_DL = "-i " + Chr(34) + ffmpeg_url_3(0).Trim() + Chr(34) + " -metadata:s:a:0 language=" + CCtoMP4CC(CR_audio_locale) + " " + ffmpeg_command
|
URL_DL = "-i " + Chr(34) + ffmpeg_url_3(0).Trim() + Chr(34) + SoftSubMergeURLs + SoftSubMergeMaps + " " + ffmpeg_command + " -c:s " + MergeSubsFormat + SoftSubMergeMetatata + " -metadata:s:a:0 language=" + CCtoMP4CC(ConvertCC(CR_audio_locale))
|
||||||
|
'URL_DL = "-i " + Chr(34) + ffmpeg_url_3(0).Trim() + Chr(34) + " -metadata:s:a:0 language=" + CCtoMP4CC(CR_audio_locale) + " " + ffmpeg_command
|
||||||
|
|
||||||
Else
|
Else
|
||||||
URL_DL = "-i " + Chr(34) + ffmpeg_url_3(0).Trim() + Chr(34) + " -metadata:s:a:0 language=" + CCtoMP4CC(CR_audio_locale) + " " + ffmpeg_command
|
URL_DL = "-i " + Chr(34) + ffmpeg_url_3(0).Trim() + Chr(34) + " -metadata:s:a:0 language=" + CCtoMP4CC(ConvertCC(CR_audio_locale)) + " " + ffmpeg_command
|
||||||
End If
|
End If
|
||||||
|
|
||||||
End If
|
End If
|
||||||
@ -2316,8 +2296,8 @@ Public Class Main
|
|||||||
Try
|
Try
|
||||||
If CC = "deDE" Then
|
If CC = "deDE" Then
|
||||||
Return "de-DE"
|
Return "de-DE"
|
||||||
ElseIf CC = "enUS" Then
|
ElseIf CC = "en-US" Then
|
||||||
Return "en-US"
|
Return "enUS"
|
||||||
ElseIf CC = "ptBR" Then
|
ElseIf CC = "ptBR" Then
|
||||||
Return "pt-BR"
|
Return "pt-BR"
|
||||||
ElseIf CC = "esLA" Then
|
ElseIf CC = "esLA" Then
|
||||||
@ -2333,11 +2313,9 @@ Public Class Main
|
|||||||
ElseIf CC = "esES" Then
|
ElseIf CC = "esES" Then
|
||||||
Return "Español (España)"
|
Return "Español (España)"
|
||||||
ElseIf CC = "jaJP" Then
|
ElseIf CC = "jaJP" Then
|
||||||
Return "es-ES"
|
|
||||||
ElseIf CC = "en" Then
|
|
||||||
Return "English"
|
|
||||||
ElseIf CC = "pt" Then
|
|
||||||
Return "ja-JP"
|
Return "ja-JP"
|
||||||
|
ElseIf CC = "None" Then
|
||||||
|
Return ""
|
||||||
Else
|
Else
|
||||||
Return CB_SuB_Nothing
|
Return CB_SuB_Nothing
|
||||||
End If
|
End If
|
||||||
@ -2406,6 +2384,7 @@ Public Class Main
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles Btn_Browser.Click
|
Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles Btn_Browser.Click
|
||||||
|
Debug.WriteLine(Date.Now.ToString + "." + Date.Now.Millisecond.ToString)
|
||||||
UserBowser = True
|
UserBowser = True
|
||||||
GeckoFX.Show()
|
GeckoFX.Show()
|
||||||
End Sub
|
End Sub
|
||||||
@ -2665,6 +2644,7 @@ Public Class Main
|
|||||||
'FontLabel2.Text = RunningDownloads.ToString
|
'FontLabel2.Text = RunningDownloads.ToString
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
Public Sub Funitmation_Grapp()
|
Public Sub Funitmation_Grapp()
|
||||||
Try
|
Try
|
||||||
Me.Invoke(New Action(Function()
|
Me.Invoke(New Action(Function()
|
||||||
@ -2682,6 +2662,7 @@ Public Class Main
|
|||||||
Dim FunimationTitle As String = Nothing
|
Dim FunimationTitle As String = Nothing
|
||||||
Dim FunimationEpisodeTitle As String = Nothing
|
Dim FunimationEpisodeTitle As String = Nothing
|
||||||
Dim FunimationDub As String = Nothing
|
Dim FunimationDub As String = Nothing
|
||||||
|
Dim FunimationAudioMap As String = Nothing
|
||||||
|
|
||||||
Dim FunimationSeason1() As String = WebbrowserText.Split(New String() {"seasonNum: "}, System.StringSplitOptions.RemoveEmptyEntries)
|
Dim FunimationSeason1() As String = WebbrowserText.Split(New String() {"seasonNum: "}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
Dim FunimationSeason2() As String = FunimationSeason1(1).Split(New String() {","}, System.StringSplitOptions.RemoveEmptyEntries)
|
Dim FunimationSeason2() As String = FunimationSeason1(1).Split(New String() {","}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
@ -2724,6 +2705,7 @@ Public Class Main
|
|||||||
DefaultName = RemoveExtraSpaces(FunimationTitle + " " + FunimationEpisodeTitle + " " + FunimationSeason + " " + FunimationEpisode)
|
DefaultName = RemoveExtraSpaces(FunimationTitle + " " + FunimationEpisodeTitle + " " + FunimationSeason + " " + FunimationEpisode)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
DefaultName = DefaultName.Replace("'", "'")
|
||||||
|
|
||||||
'Dim DefaultPath As String = Pfad + "\" + DefaultName + VideoFormat
|
'Dim DefaultPath As String = Pfad + "\" + DefaultName + VideoFormat
|
||||||
'DefaultPath = DefaultPath.Replace("\\", "\")
|
'DefaultPath = DefaultPath.Replace("\\", "\")
|
||||||
@ -2753,14 +2735,14 @@ Public Class Main
|
|||||||
' Nein! Jetzt erstellen...
|
' Nein! Jetzt erstellen...
|
||||||
Try
|
Try
|
||||||
Directory.CreateDirectory(Path.GetDirectoryName(DownloadPfad))
|
Directory.CreateDirectory(Path.GetDirectoryName(DownloadPfad))
|
||||||
DownloadPfad = DownloadPfad + DefaultName + VideoFormat
|
|
||||||
|
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
' Ordner wurde nich erstellt
|
' Ordner wurde nich erstellt
|
||||||
DownloadPfad = Pfad + "\" + DefaultName + VideoFormat
|
DownloadPfad = Pfad + "\" + DefaultName + VideoFormat
|
||||||
End Try
|
End Try
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
DownloadPfad = DownloadPfad + DefaultName + VideoFormat
|
||||||
|
|
||||||
|
|
||||||
#Region "lösche doppel download"
|
#Region "lösche doppel download"
|
||||||
|
|
||||||
@ -2812,12 +2794,15 @@ Public Class Main
|
|||||||
Return Nothing
|
Return Nothing
|
||||||
End Function))
|
End Function))
|
||||||
|
|
||||||
|
If Not WebbrowserCookie = Nothing Then
|
||||||
If WebbrowserCookie = Nothing Then
|
|
||||||
Else
|
|
||||||
client0.Headers.Add(HttpRequestHeader.Cookie, WebbrowserCookie)
|
client0.Headers.Add(HttpRequestHeader.Cookie, WebbrowserCookie)
|
||||||
|
ElseIf Not SystemWebBrowserCookie = Nothing Then
|
||||||
|
client0.Headers.Add(HttpRequestHeader.Cookie, SystemWebBrowserCookie)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
Dim str0 As String = client0.DownloadString("https://www.funimation.com/api/showexperience/" + Player_ID2(0) + "/?pinst_id=fzQc9p9f")
|
Dim str0 As String = client0.DownloadString("https://www.funimation.com/api/showexperience/" + Player_ID2(0) + "/?pinst_id=fzQc9p9f")
|
||||||
|
'MsgBox("https://www.funimation.com/api/showexperience/" + Player_ID2(0) + "/?pinst_id=fzQc9p9f")
|
||||||
|
'MsgBox(str0)
|
||||||
Dim Funimation_m3u8() As String = str0.Split(New String() {My.Resources.Funimation_src_string}, System.StringSplitOptions.RemoveEmptyEntries)
|
Dim Funimation_m3u8() As String = str0.Split(New String() {My.Resources.Funimation_src_string}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
Dim Funimation_m3u8_Main As String = Nothing
|
Dim Funimation_m3u8_Main As String = Nothing
|
||||||
For i As Integer = 0 To Funimation_m3u8.Count - 1
|
For i As Integer = 0 To Funimation_m3u8.Count - 1
|
||||||
@ -2854,88 +2839,107 @@ Public Class Main
|
|||||||
End Function))
|
End Function))
|
||||||
|
|
||||||
Dim str1 As String = client0.DownloadString(Funimation_m3u8_Main.Replace(Chr(34), ""))
|
Dim str1 As String = client0.DownloadString(Funimation_m3u8_Main.Replace(Chr(34), ""))
|
||||||
Dim textLenght() As String = str1.Split(New String() {vbLf}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
||||||
|
If InStr(str1, "# AUDIO groups") Then
|
||||||
|
Dim FunimationAudio() As String = str1.Split(New String() {"# AUDIO groups"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
Dim FunimationAudio2() As String = FunimationAudio(1).Split(New String() {"URI=" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
Dim FunimationAudio3() As String = FunimationAudio2(1).Split(New String() {Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
FunimationAudioMap = " -headers " + My.Resources.ffmpeg_user_agend + " -i " + Chr(34) + FunimationAudio3(0) + Chr(34)
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim Streams() As String = str1.Split(New String() {"RESOLUTION="}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
|
||||||
|
|
||||||
'MsgBox(Funimation_m3u8_Main)
|
'MsgBox(Funimation_m3u8_Main)
|
||||||
Dim FunimationBackupm3u8 As String = Nothing
|
Dim FunimationBackupm3u8 As String = Nothing
|
||||||
For i As Integer = 0 To textLenght.Length - 1
|
For i As Integer = 0 To Streams.Length - 1
|
||||||
|
|
||||||
Try
|
Try
|
||||||
If InStr(textLenght(i), "https") Then
|
|
||||||
If InStr(textLenght(i - 1), "x" + Reso.ToString) Then
|
|
||||||
|
|
||||||
Dim CheckClient As New WebClient
|
If InStr(Streams(i), "x" + Reso.ToString) Then
|
||||||
CheckClient.Encoding = Encoding.UTF8
|
Dim Streams2() As String = Streams(i).Split(New String() {"https://"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
If WebbrowserCookie = Nothing Then
|
Dim Streams3() As String = Streams2(1).Split(New String() {"#EXT-"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
Else
|
Dim StreamURL As String = "https://" + Streams3(0).Trim
|
||||||
CheckClient.Headers.Add(HttpRequestHeader.Cookie, WebbrowserCookie)
|
|
||||||
End If
|
|
||||||
Dim m3u8String As String = CheckClient.DownloadString(textLenght(i))
|
|
||||||
Dim keyfileurl() As String = m3u8String.Split(New String() {"URI=" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
||||||
Dim keyfileurl2() As String = keyfileurl(1).Split(New String() {Chr(34) + ","}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
||||||
Dim keyfileurl3 As String = keyfileurl2(0)
|
|
||||||
|
|
||||||
If InStr(keyfileurl2(0), "https://") Then
|
|
||||||
|
|
||||||
Else
|
|
||||||
Dim c() As String = New Uri(textLenght(i)).Segments
|
|
||||||
Dim path As String = "https://" + New Uri(textLenght(i)).Host
|
|
||||||
|
|
||||||
For i3 As Integer = 0 To c.Count - 2
|
|
||||||
path = path + c(i3)
|
|
||||||
Next
|
|
||||||
keyfileurl3 = path + keyfileurl2(0) 'New Uri(textLenght(i)).LocalPath + keyfileurl2(0)
|
|
||||||
End If
|
|
||||||
|
|
||||||
'MsgBox(keyfileurl3)
|
|
||||||
Try
|
|
||||||
Dim CheckClient2 As New WebClient
|
|
||||||
CheckClient2.Encoding = System.Text.Encoding.UTF8
|
|
||||||
Dim testdl As String = CheckClient2.DownloadString(keyfileurl3)
|
|
||||||
Funimation_m3u8_final = textLenght(i)
|
|
||||||
FunimationBackupm3u8 = textLenght(i)
|
|
||||||
Exit For
|
|
||||||
Catch ex As Exception
|
|
||||||
Debug.WriteLine(keyfileurl3 + vbNewLine + vbNewLine + ex.ToString)
|
|
||||||
End Try
|
|
||||||
ElseIf InStr(textLenght(i - 1), ResoFunBackup) Then
|
|
||||||
|
|
||||||
Dim CheckClient As New WebClient
|
|
||||||
CheckClient.Encoding = Encoding.UTF8
|
|
||||||
If WebbrowserCookie = Nothing Then
|
|
||||||
Else
|
|
||||||
CheckClient.Headers.Add(HttpRequestHeader.Cookie, WebbrowserCookie)
|
|
||||||
End If
|
|
||||||
Dim m3u8String As String = CheckClient.DownloadString(textLenght(i))
|
|
||||||
Dim keyfileurl() As String = m3u8String.Split(New String() {"URI=" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
||||||
Dim keyfileurl2() As String = keyfileurl(1).Split(New String() {Chr(34) + ","}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
||||||
Dim keyfileurl3 As String = keyfileurl2(0)
|
|
||||||
|
|
||||||
If InStr(keyfileurl2(0), "https://") Then
|
|
||||||
|
|
||||||
Else
|
|
||||||
Dim c() As String = New Uri(textLenght(i)).Segments
|
|
||||||
Dim path As String = "https://" + New Uri(textLenght(i)).Host
|
|
||||||
|
|
||||||
For i3 As Integer = 0 To c.Count - 2
|
|
||||||
path = path + c(i3)
|
|
||||||
Next
|
|
||||||
keyfileurl3 = path + keyfileurl2(0) 'New Uri(textLenght(i)).LocalPath + keyfileurl2(0)
|
|
||||||
End If
|
|
||||||
|
|
||||||
'MsgBox(keyfileurl3)
|
|
||||||
Try
|
|
||||||
Dim CheckClient2 As New WebClient
|
|
||||||
CheckClient2.Encoding = System.Text.Encoding.UTF8
|
|
||||||
Dim testdl As String = CheckClient2.DownloadString(keyfileurl3)
|
|
||||||
FunimationBackupm3u8 = textLenght(i)
|
|
||||||
Exit For
|
|
||||||
Catch ex As Exception
|
|
||||||
Debug.WriteLine(keyfileurl3 + vbNewLine + vbNewLine + ex.ToString)
|
|
||||||
End Try
|
|
||||||
|
|
||||||
|
Dim CheckClient As New WebClient
|
||||||
|
CheckClient.Encoding = Encoding.UTF8
|
||||||
|
If Not WebbrowserCookie = Nothing Then
|
||||||
|
CheckClient.Headers.Add(HttpRequestHeader.Cookie, WebbrowserCookie)
|
||||||
|
ElseIf Not SystemWebBrowserCookie = Nothing Then
|
||||||
|
CheckClient.Headers.Add(HttpRequestHeader.Cookie, SystemWebBrowserCookie)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
Dim m3u8String As String = CheckClient.DownloadString(StreamURL)
|
||||||
|
'MsgBox(m3u8String)
|
||||||
|
Dim keyfileurl() As String = m3u8String.Split(New String() {"URI=" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
Dim keyfileurl2() As String = keyfileurl(1).Split(New String() {Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
Dim keyfileurl3 As String = keyfileurl2(0)
|
||||||
|
|
||||||
|
If InStr(keyfileurl2(0), "https://") Then
|
||||||
|
|
||||||
|
Else
|
||||||
|
Dim c() As String = New Uri(StreamURL).Segments
|
||||||
|
Dim path As String = "https://" + New Uri(StreamURL).Host
|
||||||
|
|
||||||
|
For i3 As Integer = 0 To c.Count - 2
|
||||||
|
path = path + c(i3)
|
||||||
|
Next
|
||||||
|
keyfileurl3 = path + keyfileurl2(0) 'New Uri(textLenght(i)).LocalPath + keyfileurl2(0)
|
||||||
|
End If
|
||||||
|
|
||||||
|
'MsgBox(keyfileurl3)
|
||||||
|
Try
|
||||||
|
Dim CheckClient2 As New WebClient
|
||||||
|
CheckClient2.Encoding = System.Text.Encoding.UTF8
|
||||||
|
Dim testdl As String = CheckClient2.DownloadString(keyfileurl3)
|
||||||
|
Funimation_m3u8_final = StreamURL
|
||||||
|
FunimationBackupm3u8 = StreamURL
|
||||||
|
Exit For
|
||||||
|
Catch ex As Exception
|
||||||
|
Debug.WriteLine(keyfileurl3 + vbNewLine + vbNewLine + ex.ToString)
|
||||||
|
End Try
|
||||||
|
ElseIf InStr(Streams(i), ResoFunBackup) Then
|
||||||
|
Dim Streams2() As String = Streams(i).Split(New String() {"https://"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
Dim Streams3() As String = Streams2(1).Split(New String() {"#EXT-"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
Dim StreamURL As String = "https://" + Streams3(0).Trim
|
||||||
|
|
||||||
|
Dim CheckClient As New WebClient
|
||||||
|
CheckClient.Encoding = Encoding.UTF8
|
||||||
|
If Not WebbrowserCookie = Nothing Then
|
||||||
|
CheckClient.Headers.Add(HttpRequestHeader.Cookie, WebbrowserCookie)
|
||||||
|
ElseIf Not SystemWebBrowserCookie = Nothing Then
|
||||||
|
CheckClient.Headers.Add(HttpRequestHeader.Cookie, SystemWebBrowserCookie)
|
||||||
|
End If
|
||||||
|
Dim m3u8String As String = CheckClient.DownloadString(StreamURL)
|
||||||
|
Dim keyfileurl() As String = m3u8String.Split(New String() {"URI=" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
Dim keyfileurl2() As String = keyfileurl(1).Split(New String() {Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
Dim keyfileurl3 As String = keyfileurl2(0)
|
||||||
|
|
||||||
|
If InStr(keyfileurl2(0), "https://") Then
|
||||||
|
|
||||||
|
Else
|
||||||
|
Dim c() As String = New Uri(StreamURL).Segments
|
||||||
|
Dim path As String = "https://" + New Uri(StreamURL).Host
|
||||||
|
|
||||||
|
For i3 As Integer = 0 To c.Count - 2
|
||||||
|
path = path + c(i3)
|
||||||
|
Next
|
||||||
|
keyfileurl3 = path + keyfileurl2(0) 'New Uri(textLenght(i)).LocalPath + keyfileurl2(0)
|
||||||
|
End If
|
||||||
|
|
||||||
|
'MsgBox(keyfileurl3)
|
||||||
|
Try
|
||||||
|
Dim CheckClient2 As New WebClient
|
||||||
|
CheckClient2.Encoding = System.Text.Encoding.UTF8
|
||||||
|
Dim testdl As String = CheckClient2.DownloadString(keyfileurl3)
|
||||||
|
FunimationBackupm3u8 = StreamURL
|
||||||
|
Exit For
|
||||||
|
Catch ex As Exception
|
||||||
|
Debug.WriteLine(keyfileurl3 + vbNewLine + vbNewLine + ex.ToString)
|
||||||
|
End Try
|
||||||
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
|
|
||||||
End Try
|
End Try
|
||||||
@ -2953,45 +2957,49 @@ Public Class Main
|
|||||||
Return Nothing
|
Return Nothing
|
||||||
End Function))
|
End Function))
|
||||||
ResoFunBackup = ResoBackString
|
ResoFunBackup = ResoBackString
|
||||||
For i As Integer = 0 To textLenght.Length - 1
|
For i As Integer = 0 To Streams.Length - 1
|
||||||
If InStr(textLenght(i), "https") Then
|
If InStr(Streams(i), ResoBackString) Then
|
||||||
If InStr(textLenght(i - 1), ResoBackString) Then
|
Dim Streams2() As String = Streams(i).Split(New String() {"https://"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
Dim Streams3() As String = Streams2(1).Split(New String() {"#EXT-"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
Dim StreamURL As String = "https://" + Streams3(0).Trim
|
||||||
|
Dim CheckClient As New WebClient
|
||||||
|
CheckClient.Encoding = Encoding.UTF8
|
||||||
|
|
||||||
Dim CheckClient As New WebClient
|
If Not WebbrowserCookie = Nothing Then
|
||||||
CheckClient.Encoding = Encoding.UTF8
|
CheckClient.Headers.Add(HttpRequestHeader.Cookie, WebbrowserCookie)
|
||||||
If WebbrowserCookie = Nothing Then
|
ElseIf Not SystemWebBrowserCookie = Nothing Then
|
||||||
Else
|
CheckClient.Headers.Add(HttpRequestHeader.Cookie, SystemWebBrowserCookie)
|
||||||
CheckClient.Headers.Add(HttpRequestHeader.Cookie, WebbrowserCookie)
|
|
||||||
End If
|
|
||||||
Dim m3u8String As String = CheckClient.DownloadString(textLenght(i))
|
|
||||||
'MsgBox(textLenght(i))
|
|
||||||
Dim keyfileurl() As String = m3u8String.Split(New String() {"URI=" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
||||||
Dim keyfileurl2() As String = keyfileurl(1).Split(New String() {Chr(34) + ","}, System.StringSplitOptions.RemoveEmptyEntries)
|
|
||||||
Dim keyfileurl3 As String = keyfileurl2(0)
|
|
||||||
If InStr(keyfileurl2(0), "https://") Then
|
|
||||||
Else
|
|
||||||
Dim c() As String = New Uri(textLenght(i)).Segments
|
|
||||||
Dim path As String = "https://" + New Uri(textLenght(i)).Host
|
|
||||||
|
|
||||||
For i3 As Integer = 0 To c.Count - 2
|
|
||||||
path = path + c(i3)
|
|
||||||
Next
|
|
||||||
keyfileurl3 = path + keyfileurl2(0) 'New Uri(textLenght(i)).LocalPath + keyfileurl2(0)
|
|
||||||
End If
|
|
||||||
Try
|
|
||||||
Dim CheckClient2 As New WebClient
|
|
||||||
CheckClient2.Encoding = System.Text.Encoding.UTF8
|
|
||||||
Dim testdl As String = CheckClient2.DownloadString(keyfileurl3)
|
|
||||||
Funimation_m3u8_final = textLenght(i)
|
|
||||||
Exit For
|
|
||||||
Catch ex As Exception
|
|
||||||
Debug.WriteLine(keyfileurl3 + vbNewLine + ex.ToString)
|
|
||||||
End Try
|
|
||||||
|
|
||||||
|
|
||||||
'Funimation_m3u8_final = textLenght(i)
|
|
||||||
'Exit For
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
Dim m3u8String As String = CheckClient.DownloadString(StreamURL)
|
||||||
|
'MsgBox(textLenght(i))
|
||||||
|
Dim keyfileurl() As String = m3u8String.Split(New String() {"URI=" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
Dim keyfileurl2() As String = keyfileurl(1).Split(New String() {Chr(34) + ","}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
Dim keyfileurl3 As String = keyfileurl2(0)
|
||||||
|
If InStr(keyfileurl2(0), "https://") Then
|
||||||
|
Else
|
||||||
|
Dim c() As String = New Uri(StreamURL).Segments
|
||||||
|
Dim path As String = "https://" + New Uri(StreamURL).Host
|
||||||
|
|
||||||
|
For i3 As Integer = 0 To c.Count - 2
|
||||||
|
path = path + c(i3)
|
||||||
|
Next
|
||||||
|
keyfileurl3 = path + keyfileurl2(0) 'New Uri(textLenght(i)).LocalPath + keyfileurl2(0)
|
||||||
|
End If
|
||||||
|
Try
|
||||||
|
Dim CheckClient2 As New WebClient
|
||||||
|
CheckClient2.Encoding = System.Text.Encoding.UTF8
|
||||||
|
Dim testdl As String = CheckClient2.DownloadString(keyfileurl3)
|
||||||
|
Funimation_m3u8_final = StreamURL
|
||||||
|
Exit For
|
||||||
|
Catch ex As Exception
|
||||||
|
Debug.WriteLine(keyfileurl3 + vbNewLine + ex.ToString)
|
||||||
|
End Try
|
||||||
|
|
||||||
|
|
||||||
|
'Funimation_m3u8_final = textLenght(i)
|
||||||
|
'Exit For
|
||||||
|
|
||||||
End If
|
End If
|
||||||
Next
|
Next
|
||||||
ElseIf Funimation_m3u8_final = Nothing Then
|
ElseIf Funimation_m3u8_final = Nothing Then
|
||||||
@ -3026,10 +3034,10 @@ Public Class Main
|
|||||||
|
|
||||||
Dim SubsClient As New WebClient
|
Dim SubsClient As New WebClient
|
||||||
SubsClient.Encoding = Encoding.UTF8
|
SubsClient.Encoding = Encoding.UTF8
|
||||||
If WebbrowserCookie = Nothing Then
|
If Not WebbrowserCookie = Nothing Then
|
||||||
Else
|
|
||||||
'MsgBox(WebbrowserCookie)
|
|
||||||
SubsClient.Headers.Add(HttpRequestHeader.Cookie, WebbrowserCookie)
|
SubsClient.Headers.Add(HttpRequestHeader.Cookie, WebbrowserCookie)
|
||||||
|
ElseIf Not SystemWebBrowserCookie = Nothing Then
|
||||||
|
SubsClient.Headers.Add(HttpRequestHeader.Cookie, SystemWebBrowserCookie)
|
||||||
End If
|
End If
|
||||||
Dim PlayerPage As String = SubsClient.DownloadString("https://www.funimation.com/player/" + Player_ID2(0) + "/?bdub=0&qid=")
|
Dim PlayerPage As String = SubsClient.DownloadString("https://www.funimation.com/player/" + Player_ID2(0) + "/?bdub=0&qid=")
|
||||||
|
|
||||||
@ -3046,6 +3054,8 @@ Public Class Main
|
|||||||
Continue For
|
Continue For
|
||||||
ElseIf InStr(PlayerPage, My.Resources.Funimation_Subtitle_String2 + SubFunimation(i)) Then
|
ElseIf InStr(PlayerPage, My.Resources.Funimation_Subtitle_String2 + SubFunimation(i)) Then
|
||||||
SoftSubs2.Add(My.Resources.Funimation_Subtitle_String2 + SubFunimation(i))
|
SoftSubs2.Add(My.Resources.Funimation_Subtitle_String2 + SubFunimation(i))
|
||||||
|
ElseIf InStr(PlayerPage, My.Resources.Funimation_Subtitle_String3 + SubFunimation(i)) Then
|
||||||
|
SoftSubs2.Add(My.Resources.Funimation_Subtitle_String3 + SubFunimation(i))
|
||||||
End If
|
End If
|
||||||
|
|
||||||
Next
|
Next
|
||||||
@ -3074,6 +3084,9 @@ Public Class Main
|
|||||||
ElseIf InStr(PlayerPage, My.Resources.Funimation_Subtitle_String2 + HardSubFunimation) Then
|
ElseIf InStr(PlayerPage, My.Resources.Funimation_Subtitle_String2 + HardSubFunimation) Then
|
||||||
HardSubFound = True
|
HardSubFound = True
|
||||||
HardSubSplittString = My.Resources.Funimation_Subtitle_String2 + HardSubFunimation
|
HardSubSplittString = My.Resources.Funimation_Subtitle_String2 + HardSubFunimation
|
||||||
|
ElseIf InStr(PlayerPage, My.Resources.Funimation_Subtitle_String3 + HardSubFunimation) Then
|
||||||
|
HardSubFound = True
|
||||||
|
HardSubSplittString = My.Resources.Funimation_Subtitle_String3 + HardSubFunimation
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If HardSubFound = True Then 'anyways not true if hardsub is "Disabled"
|
If HardSubFound = True Then 'anyways not true if hardsub is "Disabled"
|
||||||
@ -3144,25 +3157,35 @@ Public Class Main
|
|||||||
|
|
||||||
Next
|
Next
|
||||||
Dim TempCount As Integer = UsedSubs.Count
|
Dim TempCount As Integer = UsedSubs.Count
|
||||||
If Funimation_srt = True Then
|
Try
|
||||||
UsedSubs.Add(Subs_in_srt.Item(0) + " , " + SoftSubs2.Item(i).Replace(My.Resources.Funimation_Subtitle_String, "").Replace(My.Resources.Funimation_Subtitle_String2, ""))
|
If Funimation_srt = True Then
|
||||||
End If
|
UsedSubs.Add(Subs_in_srt.Item(0) + " , " + SoftSubs2.Item(i).Replace(My.Resources.Funimation_Subtitle_String, "").Replace(My.Resources.Funimation_Subtitle_String2, "").Replace(My.Resources.Funimation_Subtitle_String3, ""))
|
||||||
|
End If
|
||||||
|
Catch ex As Exception
|
||||||
|
End Try
|
||||||
|
|
||||||
If Funimation_vtt = True Then
|
Try
|
||||||
UsedSubs.Add(Subs_in_vtt.Item(0) + " , " + SoftSubs2.Item(i).Replace(My.Resources.Funimation_Subtitle_String, "").Replace(My.Resources.Funimation_Subtitle_String2, ""))
|
If Funimation_vtt = True Then
|
||||||
End If
|
UsedSubs.Add(Subs_in_vtt.Item(0) + " , " + SoftSubs2.Item(i).Replace(My.Resources.Funimation_Subtitle_String, "").Replace(My.Resources.Funimation_Subtitle_String2, "").Replace(My.Resources.Funimation_Subtitle_String3, ""))
|
||||||
|
End If
|
||||||
|
Catch ex As Exception
|
||||||
|
End Try
|
||||||
|
|
||||||
|
Try
|
||||||
|
If Funimation_dfxp = True Then
|
||||||
|
UsedSubs.Add(Subs_in_dfxp.Item(0) + " , " + SoftSubs2.Item(i).Replace(My.Resources.Funimation_Subtitle_String, "").Replace(My.Resources.Funimation_Subtitle_String2, "").Replace(My.Resources.Funimation_Subtitle_String3, ""))
|
||||||
|
End If
|
||||||
|
Catch ex As Exception
|
||||||
|
End Try
|
||||||
|
|
||||||
If Funimation_dfxp = True Then
|
|
||||||
UsedSubs.Add(Subs_in_dfxp.Item(0) + " , " + SoftSubs2.Item(i).Replace(My.Resources.Funimation_Subtitle_String, "").Replace(My.Resources.Funimation_Subtitle_String2, ""))
|
|
||||||
End If
|
|
||||||
|
|
||||||
If TempCount = UsedSubs.Count Then
|
If TempCount = UsedSubs.Count Then
|
||||||
If Subs_in_srt.Count > 0 Then
|
If Subs_in_srt.Count > 0 Then
|
||||||
UsedSubs.Add(Subs_in_srt.Item(0) + " , " + SoftSubs2.Item(i).Replace(My.Resources.Funimation_Subtitle_String, "").Replace(My.Resources.Funimation_Subtitle_String2, ""))
|
UsedSubs.Add(Subs_in_srt.Item(0) + " , " + SoftSubs2.Item(i).Replace(My.Resources.Funimation_Subtitle_String, "").Replace(My.Resources.Funimation_Subtitle_String2, "").Replace(My.Resources.Funimation_Subtitle_String3, ""))
|
||||||
ElseIf Subs_in_vtt.Count > 0 Then
|
ElseIf Subs_in_vtt.Count > 0 Then
|
||||||
UsedSubs.Add(Subs_in_vtt.Item(0) + " , " + SoftSubs2.Item(i).Replace(My.Resources.Funimation_Subtitle_String, "").Replace(My.Resources.Funimation_Subtitle_String2, ""))
|
UsedSubs.Add(Subs_in_vtt.Item(0) + " , " + SoftSubs2.Item(i).Replace(My.Resources.Funimation_Subtitle_String, "").Replace(My.Resources.Funimation_Subtitle_String2, "").Replace(My.Resources.Funimation_Subtitle_String3, ""))
|
||||||
ElseIf Subs_in_dfxp.Count > 0 Then
|
ElseIf Subs_in_dfxp.Count > 0 Then
|
||||||
UsedSubs.Add(Subs_in_dfxp.Item(0) + " , " + SoftSubs2.Item(i).Replace(My.Resources.Funimation_Subtitle_String, "").Replace(My.Resources.Funimation_Subtitle_String2, ""))
|
UsedSubs.Add(Subs_in_dfxp.Item(0) + " , " + SoftSubs2.Item(i).Replace(My.Resources.Funimation_Subtitle_String, "").Replace(My.Resources.Funimation_Subtitle_String2, "").Replace(My.Resources.Funimation_Subtitle_String3, ""))
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
@ -3176,12 +3199,16 @@ Public Class Main
|
|||||||
'
|
'
|
||||||
Dim SoftSubMergeURLs As String = Nothing
|
Dim SoftSubMergeURLs As String = Nothing
|
||||||
Dim SoftSubMergeMaps As String = " -map 0:v -map 0:a"
|
Dim SoftSubMergeMaps As String = " -map 0:v -map 0:a"
|
||||||
|
If Not FunimationAudioMap = Nothing Then
|
||||||
|
SoftSubMergeMaps = " -map 0:v -map 1:a"
|
||||||
|
End If
|
||||||
Dim SoftSubMergeMetatata As String = Nothing
|
Dim SoftSubMergeMetatata As String = Nothing
|
||||||
|
|
||||||
If UsedSubs.Count > 0 Then
|
If UsedSubs.Count > 0 Then
|
||||||
If MergeSubs = True And SubsOnly = False Then
|
If MergeSubs = True And SubsOnly = False Then
|
||||||
Dim DispositionIndex As Integer = 999
|
Dim DispositionIndex As Integer = 999
|
||||||
Dim LastMerged As String = Nothing
|
Dim LastMerged As String = Nothing
|
||||||
|
Dim MapCount As Integer = -1
|
||||||
For i As Integer = 0 To UsedSubs.Count - 1
|
For i As Integer = 0 To UsedSubs.Count - 1
|
||||||
Dim SoftSub As String() = UsedSubs.Item(i).Split(New String() {" , "}, System.StringSplitOptions.RemoveEmptyEntries)
|
Dim SoftSub As String() = UsedSubs.Item(i).Split(New String() {" , "}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||||
If CCtoMP4CC(SoftSub(1)) = LastMerged Then
|
If CCtoMP4CC(SoftSub(1)) = LastMerged Then
|
||||||
@ -3189,21 +3216,28 @@ Public Class Main
|
|||||||
Else
|
Else
|
||||||
LastMerged = CCtoMP4CC(SoftSub(1))
|
LastMerged = CCtoMP4CC(SoftSub(1))
|
||||||
End If
|
End If
|
||||||
|
MapCount = MapCount + 1
|
||||||
If DefaultSubFunimation = SoftSub(1) Then
|
If DefaultSubFunimation = SoftSub(1) Then
|
||||||
'Debug.WriteLine(SoftSub(1))
|
'Debug.WriteLine(SoftSub(1))
|
||||||
DispositionIndex = i
|
DispositionIndex = MapCount
|
||||||
End If
|
End If
|
||||||
If SoftSubMergeURLs = Nothing Then
|
If SoftSubMergeURLs = Nothing Then
|
||||||
SoftSubMergeURLs = " -headers " + My.Resources.ffmpeg_user_agend + " -i " + Chr(34) + SoftSub(0) + Chr(34)
|
SoftSubMergeURLs = " -headers " + My.Resources.ffmpeg_user_agend + " -i " + Chr(34) + SoftSub(0) + Chr(34)
|
||||||
Else
|
Else
|
||||||
SoftSubMergeURLs = SoftSubMergeURLs + " -i " + Chr(34) + SoftSub(0) + Chr(34)
|
SoftSubMergeURLs = SoftSubMergeURLs + " -headers " + My.Resources.ffmpeg_user_agend + " -i " + Chr(34) + SoftSub(0) + Chr(34)
|
||||||
End If
|
End If
|
||||||
SoftSubMergeMaps = SoftSubMergeMaps + " -map " + (i + 1).ToString
|
|
||||||
|
If FunimationAudioMap = Nothing Then
|
||||||
|
SoftSubMergeMaps = SoftSubMergeMaps + " -map " + (MapCount + 1).ToString
|
||||||
|
Else
|
||||||
|
SoftSubMergeMaps = SoftSubMergeMaps + " -map " + (MapCount + 2).ToString
|
||||||
|
End If
|
||||||
|
|
||||||
If SoftSubMergeMetatata = Nothing Then
|
If SoftSubMergeMetatata = Nothing Then
|
||||||
'SoftSubMergeMetatata = " -metadata:s:s:" + i.ToString + " language=" + CCtoMP4CC(SoftSub(1))
|
'SoftSubMergeMetatata = " -metadata:s:s:" + i.ToString + " language=" + CCtoMP4CC(SoftSub(1))
|
||||||
SoftSubMergeMetatata = " -metadata:s:s:" + i.ToString + " language=" + CCtoMP4CC(SoftSub(1)) + " -metadata:s:s:" + i.ToString + " title=" + Chr(34) + HardSubValuesToDisplay(SoftSub(1)) + Chr(34) + " -metadata:s:s:" + i.ToString + " handler_name=" + Chr(34) + HardSubValuesToDisplay(SoftSub(1)) + Chr(34)
|
SoftSubMergeMetatata = " -metadata:s:s:" + MapCount.ToString + " language=" + CCtoMP4CC(SoftSub(1)) + " -metadata:s:s:" + MapCount.ToString + " title=" + Chr(34) + HardSubValuesToDisplay(Chr(34) + SoftSub(1) + Chr(34)) + Chr(34) + " -metadata:s:s:" + MapCount.ToString + " handler_name=" + Chr(34) + HardSubValuesToDisplay(Chr(34) + SoftSub(1) + Chr(34)) + Chr(34)
|
||||||
Else
|
Else
|
||||||
SoftSubMergeMetatata = SoftSubMergeMetatata + " -metadata:s:s:" + i.ToString + " language=" + CCtoMP4CC(SoftSub(1)) + " -metadata:s:s:" + i.ToString + " title=" + Chr(34) + HardSubValuesToDisplay(SoftSub(1)) + Chr(34) + " -metadata:s:s:" + i.ToString + " handler_name=" + Chr(34) + HardSubValuesToDisplay(SoftSub(1)) + Chr(34)
|
SoftSubMergeMetatata = SoftSubMergeMetatata + " -metadata:s:s:" + MapCount.ToString + " language=" + CCtoMP4CC(SoftSub(1)) + " -metadata:s:s:" + MapCount.ToString + " title=" + Chr(34) + HardSubValuesToDisplay(Chr(34) + SoftSub(1) + Chr(34)) + Chr(34) + " -metadata:s:s:" + MapCount.ToString + " handler_name=" + Chr(34) + HardSubValuesToDisplay(Chr(34) + SoftSub(1) + Chr(34)) + Chr(34)
|
||||||
'SoftSubMergeMetatata + " -metadata:s:s:" + i.ToString + " language=" + CCtoMP4CC(SoftSubs2(i))
|
'SoftSubMergeMetatata + " -metadata:s:s:" + i.ToString + " language=" + CCtoMP4CC(SoftSubs2(i))
|
||||||
|
|
||||||
|
|
||||||
@ -3263,15 +3297,15 @@ Public Class Main
|
|||||||
End If
|
End If
|
||||||
|
|
||||||
If HardSubFound = True Then
|
If HardSubFound = True Then
|
||||||
Funimation_m3u8_final = "-i " + Chr(34) + Funimation_m3u8_final + Chr(34) + " -vf subtitles=" + Chr(34) + UsedSub + Chr(34) + " " + ffmpeg_hardsub
|
Funimation_m3u8_final = "-i " + Chr(34) + Funimation_m3u8_final + Chr(34) + FunimationAudioMap + " -vf subtitles=" + Chr(34) + UsedSub + Chr(34) + " " + ffmpeg_hardsub
|
||||||
|
|
||||||
ElseIf MergeSubs = True Then
|
ElseIf MergeSubs = True Then
|
||||||
|
|
||||||
Funimation_m3u8_final = "-i " + Chr(34) + Funimation_m3u8_final + Chr(34) + SoftSubMergeURLs + SoftSubMergeMaps + " " + ffmpeg_command + " -c:s " + MergeSubsFormat + SoftSubMergeMetatata + DubMetatata
|
Funimation_m3u8_final = "-i " + Chr(34) + Funimation_m3u8_final + Chr(34) + FunimationAudioMap + SoftSubMergeURLs + SoftSubMergeMaps + " " + ffmpeg_command + " -c:s " + MergeSubsFormat + SoftSubMergeMetatata + DubMetatata
|
||||||
|
|
||||||
Else
|
Else
|
||||||
|
|
||||||
Funimation_m3u8_final = "-i " + Chr(34) + Funimation_m3u8_final + Chr(34) + DubMetatata + " " + ffmpeg_command
|
Funimation_m3u8_final = "-i " + Chr(34) + Funimation_m3u8_final + Chr(34) + FunimationAudioMap + DubMetatata + " " + ffmpeg_command
|
||||||
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
@ -3311,6 +3345,7 @@ Public Class Main
|
|||||||
Funimation_Grapp_RDY = True
|
Funimation_Grapp_RDY = True
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
Private Sub Timer3_Tick(sender As Object, e As EventArgs) Handles Timer3.Tick
|
Private Sub Timer3_Tick(sender As Object, e As EventArgs) Handles Timer3.Tick
|
||||||
|
|
||||||
Me.Invalidate()
|
Me.Invalidate()
|
||||||
|
@ -32,6 +32,6 @@ Imports System.Runtime.InteropServices
|
|||||||
' übernehmen, indem Sie "*" eingeben:
|
' übernehmen, indem Sie "*" eingeben:
|
||||||
' <Assembly: AssemblyVersion("1.0.*")>
|
' <Assembly: AssemblyVersion("1.0.*")>
|
||||||
|
|
||||||
<Assembly: AssemblyVersion("3.7.8.3")>
|
<Assembly: AssemblyVersion("3.8")>
|
||||||
<Assembly: AssemblyFileVersion("3.7.8.3")>
|
<Assembly: AssemblyFileVersion("3.8")>
|
||||||
<Assembly: NeutralResourcesLanguage("en")>
|
<Assembly: NeutralResourcesLanguage("en")>
|
||||||
|
@ -350,7 +350,7 @@ Namespace My.Resources
|
|||||||
End Property
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Sucht eine lokalisierte Zeichenfolge, die "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0" ähnelt.
|
''' Sucht eine lokalisierte Zeichenfolge, die "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0" ähnelt.
|
||||||
'''</summary>
|
'''</summary>
|
||||||
Friend ReadOnly Property ffmpeg_user_agend() As String
|
Friend ReadOnly Property ffmpeg_user_agend() As String
|
||||||
Get
|
Get
|
||||||
@ -421,6 +421,15 @@ Namespace My.Resources
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Sucht eine lokalisierte Zeichenfolge, die ", "kind": "subtitle", "type": "full", "language": " ähnelt.
|
||||||
|
'''</summary>
|
||||||
|
Friend ReadOnly Property Funimation_Subtitle_String3() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("Funimation_Subtitle_String3", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Sucht eine lokalisierte Zeichenfolge, die <meta property="og:image" content=" ähnelt.
|
''' Sucht eine lokalisierte Zeichenfolge, die <meta property="og:image" content=" ähnelt.
|
||||||
'''</summary>
|
'''</summary>
|
||||||
|
@ -422,7 +422,7 @@ Dialogue: 0,0:00:00.00,0:00:00.00,Default,,0000,0000,0000,,some ideas on how tem
|
|||||||
<value>..\Resources\crdSettings_Button_SafeExit_hover.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\crdSettings_Button_SafeExit_hover.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ffmpeg_user_agend" xml:space="preserve">
|
<data name="ffmpeg_user_agend" xml:space="preserve">
|
||||||
<value>"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0"</value>
|
<value>"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0"</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="crdSettings_Button_SafeExit" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="crdSettings_Button_SafeExit" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\crdSettings_Button_SafeExit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\crdSettings_Button_SafeExit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
@ -538,4 +538,7 @@ Dialogue: 0,0:00:00.00,0:00:00.00,Default,,0000,0000,0000,,some ideas on how tem
|
|||||||
<data name="CR_Season_Nr" xml:space="preserve">
|
<data name="CR_Season_Nr" xml:space="preserve">
|
||||||
<value>seasonNumber":"</value>
|
<value>seasonNumber":"</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Funimation_Subtitle_String3" xml:space="preserve">
|
||||||
|
<value>", "kind": "subtitle", "type": "full", "language": "</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
@ -7,7 +7,7 @@
|
|||||||
Public SubFolder_Value As String = "[ ignore subfolder ]"
|
Public SubFolder_Value As String = "[ ignore subfolder ]"
|
||||||
|
|
||||||
|
|
||||||
Public Function UseSubfolder(ByVal Series As String, ByVal Season As String, ByVal Path As String)
|
Public Function UseSubfolder(ByVal Series As String, ByVal Season As String, ByVal Path As String) As String
|
||||||
Dim newPath As String = Path + "\"
|
Dim newPath As String = Path + "\"
|
||||||
|
|
||||||
If SubFolder_Value = SubFolder_automatic Or SubFolder_Value = SubFolder_automatic_old Then
|
If SubFolder_Value = SubFolder_automatic Or SubFolder_Value = SubFolder_automatic_old Then
|
||||||
|
@ -11,4 +11,5 @@ i.cdn.turner.com
|
|||||||
js-agent.newrelic.com
|
js-agent.newrelic.com
|
||||||
www.googletagmanager.com
|
www.googletagmanager.com
|
||||||
googletagmanager.com
|
googletagmanager.com
|
||||||
ocsp.sca1b.amazontrust.com
|
ocsp.sca1b.amazontrust.com
|
||||||
|
sa.etp-prod.com
|
Binary file not shown.
Binary file not shown.
@ -187,7 +187,7 @@ Video Position: 0
|
|||||||
</member>
|
</member>
|
||||||
<member name="P:Crunchyroll_Downloader.My.Resources.Resources.ffmpeg_user_agend">
|
<member name="P:Crunchyroll_Downloader.My.Resources.Resources.ffmpeg_user_agend">
|
||||||
<summary>
|
<summary>
|
||||||
Sucht eine lokalisierte Zeichenfolge, die "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0" ähnelt.
|
Sucht eine lokalisierte Zeichenfolge, die "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0" ähnelt.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Crunchyroll_Downloader.My.Resources.Resources.Funimation_Player_ID">
|
<member name="P:Crunchyroll_Downloader.My.Resources.Resources.Funimation_Player_ID">
|
||||||
@ -225,6 +225,11 @@ Video Position: 0
|
|||||||
Sucht eine lokalisierte Zeichenfolge, die ", "kind": "subtitle", "type": "Full", "language": " ähnelt.
|
Sucht eine lokalisierte Zeichenfolge, die ", "kind": "subtitle", "type": "Full", "language": " ähnelt.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:Crunchyroll_Downloader.My.Resources.Resources.Funimation_Subtitle_String3">
|
||||||
|
<summary>
|
||||||
|
Sucht eine lokalisierte Zeichenfolge, die ", "kind": "subtitle", "type": "full", "language": " ähnelt.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:Crunchyroll_Downloader.My.Resources.Resources.Funimation_thumbnail">
|
<member name="P:Crunchyroll_Downloader.My.Resources.Resources.Funimation_thumbnail">
|
||||||
<summary>
|
<summary>
|
||||||
Sucht eine lokalisierte Zeichenfolge, die <meta property="og:image" content=" ähnelt.
|
Sucht eine lokalisierte Zeichenfolge, die <meta property="og:image" content=" ähnelt.
|
||||||
|
Binary file not shown.
@ -16,7 +16,7 @@ Public Class Einstellungen
|
|||||||
|
|
||||||
Private Sub Einstellungen_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
Private Sub Einstellungen_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
||||||
|
|
||||||
Label6.Text = "You have: v" + Application.ProductVersion.ToString
|
Label6.Text = "You have: v" + Application.ProductVersion.ToString + " Beta-U1"
|
||||||
BackgroundWorker1.RunWorkerAsync()
|
BackgroundWorker1.RunWorkerAsync()
|
||||||
|
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -187,7 +187,7 @@ Video Position: 0
|
|||||||
</member>
|
</member>
|
||||||
<member name="P:Crunchyroll_Downloader.My.Resources.Resources.ffmpeg_user_agend">
|
<member name="P:Crunchyroll_Downloader.My.Resources.Resources.ffmpeg_user_agend">
|
||||||
<summary>
|
<summary>
|
||||||
Sucht eine lokalisierte Zeichenfolge, die "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0" ähnelt.
|
Sucht eine lokalisierte Zeichenfolge, die "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0" ähnelt.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Crunchyroll_Downloader.My.Resources.Resources.Funimation_Player_ID">
|
<member name="P:Crunchyroll_Downloader.My.Resources.Resources.Funimation_Player_ID">
|
||||||
@ -225,6 +225,11 @@ Video Position: 0
|
|||||||
Sucht eine lokalisierte Zeichenfolge, die ", "kind": "subtitle", "type": "Full", "language": " ähnelt.
|
Sucht eine lokalisierte Zeichenfolge, die ", "kind": "subtitle", "type": "Full", "language": " ähnelt.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:Crunchyroll_Downloader.My.Resources.Resources.Funimation_Subtitle_String3">
|
||||||
|
<summary>
|
||||||
|
Sucht eine lokalisierte Zeichenfolge, die ", "kind": "subtitle", "type": "full", "language": " ähnelt.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:Crunchyroll_Downloader.My.Resources.Resources.Funimation_thumbnail">
|
<member name="P:Crunchyroll_Downloader.My.Resources.Resources.Funimation_thumbnail">
|
||||||
<summary>
|
<summary>
|
||||||
Sucht eine lokalisierte Zeichenfolge, die <meta property="og:image" content=" ähnelt.
|
Sucht eine lokalisierte Zeichenfolge, die <meta property="og:image" content=" ähnelt.
|
||||||
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user