Crunchyroll-Downloader-v3.0/Crunchyroll Downloader/Anime_Add.vb
hama3254 50583b3986 m3u8 grabber update
m3u8 grabber uses now the network traffic to find the m3u8 files after the website has loaded if that fails it look like before in the html document
2020-01-12 16:25:55 +01:00

424 lines
18 KiB
VB.net

Imports Microsoft.Win32
Imports System.Net
Imports Gecko
Imports System.IO
Public Class Anime_Add
Public Mass_DL_Cancel As Boolean = False
Public List_DL_Cancel As Boolean = False
Private Sub ComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox2.SelectedIndexChanged
Try
If ComboBox2.Text = Main.SubFolder_Nothing Then
Dim rk As RegistryKey = Registry.CurrentUser.CreateSubKey("Software\CRDownloader")
rk.SetValue("SubFolder_Value", Main.SubFolder_Nothing, RegistryValueKind.String)
ElseIf ComboBox2.Text = Main.SubFolder_automatic Then
Dim rk As RegistryKey = Registry.CurrentUser.CreateSubKey("Software\CRDownloader")
rk.SetValue("SubFolder_Value", Main.SubFolder_automatic, RegistryValueKind.String)
Else
Dim rk As RegistryKey = Registry.CurrentUser.CreateSubKey("Software\CRDownloader")
rk.SetValue("SubFolder_Value", ComboBox2.Text, RegistryValueKind.String)
End If
Catch ex As Exception
ComboBox2.Text = Main.SubFolder_Nothing
End Try
End Sub
Private Sub Anime_Add_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
Main.waveOutSetVolume(0, 0)
Catch ex As Exception
End Try
Me.Location = New Point(Main.Location.X + Main.Width / 2 - Me.Width / 2, Main.Location.Y + Main.Height / 2 - Me.Height / 2)
TextBox4.Text = Main.Pfad
Dim SubFolder_Value As String
Try
Dim rkg As RegistryKey = Registry.CurrentUser.OpenSubKey("Software\CRDownloader")
SubFolder_Value = rkg.GetValue("SubFolder_Value").ToString
If SubFolder_Value = Main.SubFolder_Nothing Then
ComboBox2.Items.Add(Main.SubFolder_automatic)
ComboBox2.Items.Add(Main.SubFolder_Nothing)
ElseIf SubFolder_Value = Main.SubFolder_automatic Then
ComboBox2.Items.Add(Main.SubFolder_automatic)
ComboBox2.Items.Add(Main.SubFolder_Nothing)
Else
ComboBox2.Items.Add(Main.SubFolder_automatic)
ComboBox2.Items.Add(Main.SubFolder_Nothing)
ComboBox2.Items.Add(SubFolder_Value)
End If
Catch ex As Exception
ComboBox2.Items.Add(Main.SubFolder_automatic)
ComboBox2.Items.Add(Main.SubFolder_Nothing)
ComboBox2.SelectedItem = Main.SubFolder_Nothing
SubFolder_Value = Main.SubFolder_Nothing
End Try
Try
Dim di As New System.IO.DirectoryInfo(Main.Pfad)
For Each fi As System.IO.DirectoryInfo In di.EnumerateDirectories("*.*", System.IO.SearchOption.TopDirectoryOnly)
If fi.Attributes.HasFlag(System.IO.FileAttributes.Hidden) Then
Else
ComboBox2.Items.Add(fi.Name)
End If
Next
Dim Result As New List(Of String)
'Jeder Eintrag in der Combobox durchgehen
For Each item As String In ComboBox2.Items
'Wenn der Combobox-Eintrag noch nicht in der Result-List vorhanden ist, Eintrag der Result-List hinzufügen
If Result.Contains(item) = False Then
Result.Add(item)
End If
Next
'In der Result-List sind jetzt alle Einträge einmal vorhanden
'Combobox leeren
ComboBox2.Items.Clear()
'Die Result-List der Combobox hinzufügen
ComboBox2.Items.AddRange(Result.ToArray)
ComboBox2.SelectedItem = SubFolder_Value
Catch ex As Exception
End Try
End Sub
Private Sub TextBox4_DoubleClick(sender As Object, e As EventArgs) Handles TextBox4.DoubleClick
'MsgBox(DL_Path_String, MsgBoxStyle.OkOnly)
Dim FolderBrowserDialog1 As New FolderBrowserDialog()
If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then
ComboBox2.Items.Clear()
Main.Pfad = FolderBrowserDialog1.SelectedPath
Dim rk0 As RegistryKey = Registry.CurrentUser.CreateSubKey("Software\CRDownloader")
rk0.SetValue("Ordner", Main.Pfad, RegistryValueKind.String)
ComboBox2.Items.Add(Main.SubFolder_automatic)
ComboBox2.Items.Add(Main.SubFolder_Nothing)
ComboBox2.SelectedItem = Main.SubFolder_Nothing
TextBox4.Text = Main.Pfad
Try
Dim di As New System.IO.DirectoryInfo(Main.Pfad)
For Each fi As System.IO.DirectoryInfo In di.EnumerateDirectories("*.*", System.IO.SearchOption.TopDirectoryOnly)
If fi.Attributes.HasFlag(System.IO.FileAttributes.Hidden) Then
Else
ComboBox2.Items.Add(fi.Name)
End If
Next
Dim Result As New List(Of String)
'Jeder Eintrag in der Combobox durchgehen
For Each item As String In ComboBox2.Items
'Wenn der Combobox-Eintrag noch nicht in der Result-List vorhanden ist, Eintrag der Result-List hinzufügen
If Result.Contains(item) = False Then
Result.Add(item)
End If
Next
'In der Result-List sind jetzt alle Einträge einmal vorhanden
'Combobox leeren
'ComboBox2.Items.Clear()
'Die Result-List der Combobox hinzufügen
'ComboBox2.Items.AddRange(Result.ToArray)
Catch ex As Exception
End Try
End If
End Sub
#Region " Move Form "
' [ Move Form ]
'
' // By Elektro
Public MoveForm As Boolean
Public MoveForm_MousePosition As Point
Public Sub MoveForm_MouseDown(sender As Object, e As MouseEventArgs) Handles _
MyBase.MouseDown ' Add more handles here (Example: PictureBox1.MouseDown)
If e.Button = MouseButtons.Left Then
MoveForm = True
Me.Cursor = Cursors.NoMove2D
MoveForm_MousePosition = e.Location
End If
End Sub
Public Sub MoveForm_MouseMove(sender As Object, e As MouseEventArgs) Handles _
MyBase.MouseMove ' Add more handles here (Example: PictureBox1.MouseMove)
If MoveForm Then
Me.Location = Me.Location + (e.Location - MoveForm_MousePosition)
End If
End Sub
Public Sub MoveForm_MouseUp(sender As Object, e As MouseEventArgs) Handles _
MyBase.MouseUp ' Add more handles here (Example: PictureBox1.MouseUp)
If e.Button = MouseButtons.Left Then
MoveForm = False
Me.Cursor = Cursors.Default
End If
End Sub
#End Region
Private Sub PictureBox3_MouseEnter(sender As Object, e As EventArgs) Handles pictureBox3.MouseEnter
pictureBox3.BackColor = SystemColors.Control
End Sub
Private Sub PictureBox3_MouseLeave(sender As Object, e As EventArgs) Handles pictureBox3.MouseLeave
pictureBox3.BackColor = Color.Transparent
End Sub
Private Sub PictureBox3_Click(sender As Object, e As EventArgs) Handles pictureBox3.Click
Me.Close()
End Sub
Private Sub PictureBox4_Click(sender As Object, e As EventArgs) Handles pictureBox4.Click
'pictureBox4.Enabled = False
Main.RemoveFinishedTask()
If groupBox1.Visible = True Then
Try
If CBool(InStr(textBox1.Text, "crunchyroll.com")) Then
If StatusLabel.Text = "Status: waiting for episode selection" Then
If MessageBox.Show("Are you sure you want cancel the advanced download?", "confirm?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
StatusLabel.Text = "Status: idle"
Else
Exit Sub
pictureBox4.Enabled = True
End If
'ElseIf LabelUpdate = "Status: looking for video file" Then
' Exit Sub
' pictureBox4.Enabled = True
Else
If Main.PR_List.Count >= Main.MaxDL Then
ListBox1.Items.Add(textBox1.Text)
textBox1.ForeColor = Color.FromArgb(9248044)
Main.Pause(1)
textBox1.ForeColor = Color.Black
textBox1.Text = "URL"
Else
If Main.Grapp_RDY = True Then
GeckoFX.WebBrowser1.Navigate(textBox1.Text)
StatusLabel.Text = "Status: looking for video file"
Main.b = False
End If
End If
End If
ElseIf CBool(InStr(textBox1.Text, "Test=true")) Then
GeckoFX.WebBrowser1.Navigate(textBox1.Text)
Else 'If CBool(InStr(textBox1.Text, "vrv.co")) Then
If MessageBox.Show("This in NOT a Crunchyroll URL, try anyway?", "confirm?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
Dim FileLocation As DirectoryInfo = New DirectoryInfo(Application.StartupPath)
Dim CurrentFile As String = Nothing
For Each File In FileLocation.GetFiles()
If InStr(File.FullName, "log.txt") Then
CurrentFile = File.FullName
Exit For
End If
Next
If CurrentFile = Nothing Then
Else
Dim logFileStream As FileStream = New FileStream(CurrentFile, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)
Dim logFileReader As StreamReader = New StreamReader(logFileStream)
logFileStream.SetLength(0)
logFileReader.Close()
logFileStream.Close()
End If
Main.LoggingBrowser = True
GeckoPreferences.Default("logging.config.LOG_FILE") = "log.txt"
GeckoPreferences.Default("logging.nsHttp") = 3
GeckoFX.WebBrowser1.Navigate(textBox1.Text)
StatusLabel.Text = "Status: looking for non CR video file"
Main.b = False
Else
Exit Sub
pictureBox4.Enabled = True
End If
'Else
'MsgBox(Main.URL_Invaild, MsgBoxStyle.OkOnly)
End If
Catch ex As Exception
MsgBox(ex.ToString)
Main.b = True
MsgBox(Main.URL_Invaild, MsgBoxStyle.OkOnly)
End Try
ElseIf groupBox2.Visible = True Then
If Mass_DL_Cancel = True Then
Mass_DL_Cancel = False
GroupBox3.Visible = False
groupBox2.Visible = False
Main.Grapp_Abord = True
Main.b = True
groupBox1.Visible = True
pictureBox4.Image = My.Resources.main_button_download_default
Else
StatusLabel.Text = "Status: idle"
pictureBox4.Image = My.Resources.add_mass_running_cancel
Mass_DL_Cancel = True
PictureBox1.Enabled = False
PictureBox1.Visible = False
Main.MassDL()
comboBox4.Enabled = False
comboBox3.Enabled = False
ComboBox1.Enabled = False
End If
ElseIf GroupBox3.Visible = True Then
GroupBox3.Visible = False
groupBox2.Visible = False
groupBox1.Visible = True
List_DL_Cancel = False
pictureBox4.Image = My.Resources.main_button_download_default
End If
pictureBox4.Enabled = True
End Sub
Private Sub ComboBox1_DrawItem(sender As Object, e As DrawItemEventArgs) Handles ComboBox1.DrawItem, ComboBox2.DrawItem, comboBox3.DrawItem, comboBox4.DrawItem
sender.BackColor = Color.White
If e.Index >= 0 Then
Using st As New StringFormat With {.Alignment = StringAlignment.Center}
' e.DrawBackground()
' e.DrawFocusRectangle()
e.Graphics.FillRectangle(SystemBrushes.ControlLightLight, e.Bounds)
e.Graphics.DrawString(sender.Items(e.Index).ToString, e.Font, Brushes.Black, e.Bounds, st)
End Using
End If
End Sub
Private Sub PictureBox4_MouseEnter(sender As Object, e As EventArgs) Handles pictureBox4.MouseEnter
If Mass_DL_Cancel = True Then
pictureBox4.Image = My.Resources.add_mass_running_cancel_hover
ElseIf List_DL_Cancel = True Then
pictureBox4.Image = My.Resources.add_mass_running_cancel_hover
Else
pictureBox4.Image = My.Resources.main_button_download_hovert
End If
End Sub
Private Sub PictureBox4_MouseLeave(sender As Object, e As EventArgs) Handles pictureBox4.MouseLeave
If Mass_DL_Cancel = True Then
pictureBox4.Image = My.Resources.add_mass_running_cancel
ElseIf List_DL_Cancel = True Then
pictureBox4.Image = My.Resources.add_mass_running_cancel
Else
pictureBox4.Image = My.Resources.main_button_download_default
End If
End Sub
Private Sub TextBox1_Click(sender As Object, e As EventArgs) Handles textBox1.Click
If textBox1.Text = "URL" Then
textBox1.Text = Nothing
End If
End Sub
Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
groupBox1.Visible = True
groupBox2.Visible = False
End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
'MsgBox("Test")
comboBox3.Items.Clear()
comboBox4.Items.Clear()
'comboBox3.Items.Add("Test")
Dim SeasonDropdownAnzahl As String() = Main.WebbrowserText.Split(New String() {"season-dropdown content-menu block"}, System.StringSplitOptions.RemoveEmptyEntries)
Array.Reverse(SeasonDropdownAnzahl)
Dim SDV As Integer = 0
For i As Integer = 0 To SeasonDropdownAnzahl.Count - 1
If InStr(SeasonDropdownAnzahl(i), Chr(34) + ">" + ComboBox1.SelectedItem.ToString + "</a>") Then
SDV = i
End If
Next
'MsgBox(SDV)
Dim Anzahl As String() = SeasonDropdownAnzahl(SDV).Split(New String() {"wrapper container-shadow hover-classes"}, System.StringSplitOptions.RemoveEmptyEntries)
'MsgBox(Anzahl(0))
Dim c As Integer = Anzahl.Count - 1
Array.Reverse(Anzahl)
For i As Integer = 0 To Anzahl.Count - 2
Dim URLGrapp As String() = Anzahl(i).Split(New String() {"title=" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
Dim URLGrapp2 As String() = URLGrapp(1).Split(New String() {Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
comboBox3.Items.Add(URLGrapp2(0))
comboBox4.Items.Add(URLGrapp2(0))
Next
End Sub
Private Sub PictureBox1_MouseEnter(sender As Object, e As EventArgs) Handles PictureBox1.MouseEnter
PictureBox1.Image = My.Resources.add_mass_cancel_hover
End Sub
Private Sub PictureBox1_MouseLeave(sender As Object, e As EventArgs) Handles PictureBox1.MouseLeave
PictureBox1.Image = My.Resources.add_mass_cancel
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
If ListBox1.Items.Count > 0 Then
If StatusLabel.Text = "Status: idle" Then
StatusLabel.Text = "Status: items in queue, click to work off."
End If
End If
End Sub
#Region "Listbox"
Private Sub ListBox1_DoubleClick(sender As Object, e As EventArgs)
ListBox1.Items.Remove(ListBox1.SelectedItem)
End Sub
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
If GroupBox3.Visible = True Then
If ListBox1.Items.Count = 0 Then
GroupBox3.Visible = False
groupBox2.Visible = False
groupBox1.Visible = True
List_DL_Cancel = False
pictureBox4.Image = My.Resources.main_button_download_default
End If
End If
If Main.PR_List.Count >= Main.MaxDL Then
Main.RemoveFinishedTask()
Else
If ListBox1.Items.Count > 0 Then
If GroupBox3.Visible = True Then
If Main.Grapp_RDY = True Then
GeckoFX.WebBrowser1.Navigate(ListBox1.GetItemText(ListBox1.Items(0)))
ListBox1.Items.Remove(ListBox1.Items(0))
Main.Grapp_RDY = False
Main.b = False
End If
End If
End If
End If
End Sub
Private Sub StatusLabel_Click(sender As Object, e As EventArgs) Handles StatusLabel.Click
If StatusLabel.Text = "Status: items in queue, click to work off." Then
groupBox1.Visible = False
groupBox2.Visible = False
GroupBox3.Visible = True
pictureBox4.Image = My.Resources.add_mass_running_cancel
List_DL_Cancel = True
End If
End Sub
Private Sub TextBox2_Click(sender As Object, e As EventArgs) Handles textBox2.Click
If textBox2.Text = "Name of the Anime" Then
textBox2.Text = Nothing
End If
End Sub
#End Region
End Class