From 28d971b359b1a3ec6578dddde5fa9bb32c8c0b69 Mon Sep 17 00:00:00 2001 From: hama3254 <52826614+hama3254@users.noreply.github.com> Date: Sun, 26 May 2024 14:34:45 +0200 Subject: [PATCH] added error dialog added error dialog #961 --- .vs/Crunchyroll Downloader/v17/.suo | Bin 228352 -> 240128 bytes .../Crunchyroll Downloader.vbproj | 11 ++ Crunchyroll Downloader/Error_msg.Designer.vb | 183 ++++++++++++++++++ Crunchyroll Downloader/Error_msg.resx | 123 ++++++++++++ Crunchyroll Downloader/Error_msg.vb | 98 ++++++++++ Crunchyroll Downloader/Main.designer.vb | 9 +- Crunchyroll Downloader/Main.resx | 14 +- Crunchyroll Downloader/Main.vb | 62 +++--- .../My Project/AssemblyInfo.vb | 4 +- .../My Project/Resources.Designer.vb | 10 + .../My Project/Resources.resx | 3 + .../Resources/error_dis.png | Bin 0 -> 5462 bytes 12 files changed, 475 insertions(+), 42 deletions(-) create mode 100644 Crunchyroll Downloader/Error_msg.Designer.vb create mode 100644 Crunchyroll Downloader/Error_msg.resx create mode 100644 Crunchyroll Downloader/Error_msg.vb create mode 100644 Crunchyroll Downloader/Resources/error_dis.png diff --git a/.vs/Crunchyroll Downloader/v17/.suo b/.vs/Crunchyroll Downloader/v17/.suo index e19e6b8683a773dc6d83ad25b52f1833a9158958..691e8cf0286c81b5476b86058f2741ed49fe3343 100644 GIT binary patch delta 10883 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%0APMdm#AyfBxu zCJ}dxVnow0B})_*utHD!4HFR{XUo}LqRBw_sE&EepQuKReGL_*MnDtkJAGP3(d3HB z;`Mp#Hrg(mU3Q&L^e$s(!h7 z{|62B_XR96;0MJ|74h{J5fcPUO6ilHx=4<(;}xYLe1&XkSEaapyy=`DPsHFmYVyod zIiUHT0rA>PzAQ1;GZvYqL@{|4bBL!_v+R&rZ7=_tD0el|{=&L~&FEn4@DOin=KF_~ zRxGG2FP?}eczeU*uMTEli9Op}_bA%Bm?&6~tH={8zaT<gPErE#WWwrFEMF2LL7p3yuSFGiswU? zC*23BRLy|5aHtrIk7!5}7DztMp&!S|Vlm{%P#izw6nQ`7yEw6I2*fXaIDNbjgr5L$ zzPOR8*JiLRx>cG}K6tF24y@iskQKUY&F%O*RQ?kWjb_n4o+CQ3cQ#A)n}T2GrsIc; zh2pJQ%<4Ijy5*;ad5OQB{}#9^UKV&Vzu6za0 ziZOMpt2kZ97UGB492q9@4PW48E-zPEBHVvv-PKoiuzYeIWk>XC^BHFL6|Jr>HYI|u8LLMvBW$Z!dizfV ziR#c&RzsJpQUUH{@J0rLixu#6LETC{*T~4 YD2Nq%sk_*0P->(L5^uKJZ*h40KMGvj4gdfE diff --git a/Crunchyroll Downloader/Crunchyroll Downloader.vbproj b/Crunchyroll Downloader/Crunchyroll Downloader.vbproj index 8d89303..5ea0ad5 100644 --- a/Crunchyroll Downloader/Crunchyroll Downloader.vbproj +++ b/Crunchyroll Downloader/Crunchyroll Downloader.vbproj @@ -152,6 +152,12 @@ + + Error_msg.vb + + + Form + LoginForm.vb @@ -241,6 +247,10 @@ + + Error_msg.vb + Designer + LoginForm.vb @@ -392,6 +402,7 @@ + diff --git a/Crunchyroll Downloader/Error_msg.Designer.vb b/Crunchyroll Downloader/Error_msg.Designer.vb new file mode 100644 index 0000000..2a5271b --- /dev/null +++ b/Crunchyroll Downloader/Error_msg.Designer.vb @@ -0,0 +1,183 @@ + +Partial Class Error_msg + Inherits MetroFramework.Forms.MetroForm + + 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. + + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Wird vom Windows Form-Designer benötigt. + Private components As System.ComponentModel.IContainer + + 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. + 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. + 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. + + Private Sub InitializeComponent() + Me.components = New System.ComponentModel.Container() + Me.GroupBox3 = New System.Windows.Forms.GroupBox() + Me.btn_cl = New System.Windows.Forms.Button() + Me.btn_ign = New System.Windows.Forms.Button() + Me.btn_ok = New System.Windows.Forms.Button() + Me.ErrorLabel = New MetroFramework.Controls.MetroLabel() + Me.Delay = New System.Windows.Forms.Timer(Me.components) + Me.Btn_Close = New System.Windows.Forms.Button() + Me.GroupBox1 = New System.Windows.Forms.GroupBox() + Me.ErrorBox = New System.Windows.Forms.RichTextBox() + Me.GroupBox3.SuspendLayout() + Me.GroupBox1.SuspendLayout() + Me.SuspendLayout() + ' + 'GroupBox3 + ' + Me.GroupBox3.BackColor = System.Drawing.Color.Transparent + Me.GroupBox3.Controls.Add(Me.btn_cl) + Me.GroupBox3.Controls.Add(Me.btn_ign) + Me.GroupBox3.Controls.Add(Me.btn_ok) + Me.GroupBox3.Controls.Add(Me.ErrorLabel) + Me.GroupBox3.Location = New System.Drawing.Point(13, 60) + Me.GroupBox3.Name = "GroupBox3" + Me.GroupBox3.Size = New System.Drawing.Size(613, 203) + Me.GroupBox3.TabIndex = 38 + Me.GroupBox3.TabStop = False + ' + 'btn_cl + ' + Me.btn_cl.BackgroundImage = Global.Crunchyroll_Downloader.My.Resources.Resources.ffmpeg_OK_cL + Me.btn_cl.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch + Me.btn_cl.DialogResult = System.Windows.Forms.DialogResult.Cancel + Me.btn_cl.FlatAppearance.BorderSize = 0 + Me.btn_cl.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btn_cl.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.btn_cl.ForeColor = System.Drawing.SystemColors.Control + Me.btn_cl.Location = New System.Drawing.Point(28, 121) + Me.btn_cl.Name = "btn_cl" + Me.btn_cl.Size = New System.Drawing.Size(150, 40) + Me.btn_cl.TabIndex = 77 + Me.btn_cl.Text = "Details" + Me.btn_cl.UseVisualStyleBackColor = True + ' + 'btn_ign + ' + Me.btn_ign.BackgroundImage = Global.Crunchyroll_Downloader.My.Resources.Resources.ffmpeg_OK_cL + Me.btn_ign.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch + Me.btn_ign.FlatAppearance.BorderSize = 0 + Me.btn_ign.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btn_ign.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.btn_ign.ForeColor = System.Drawing.SystemColors.Control + Me.btn_ign.Location = New System.Drawing.Point(235, 121) + Me.btn_ign.Name = "btn_ign" + Me.btn_ign.Size = New System.Drawing.Size(150, 40) + Me.btn_ign.TabIndex = 78 + Me.btn_ign.Text = "Ignore" + Me.btn_ign.UseVisualStyleBackColor = True + ' + 'btn_ok + ' + Me.btn_ok.BackgroundImage = Global.Crunchyroll_Downloader.My.Resources.Resources.ffmpeg_OK_cL + Me.btn_ok.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch + Me.btn_ok.FlatAppearance.BorderSize = 0 + Me.btn_ok.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btn_ok.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.btn_ok.ForeColor = System.Drawing.SystemColors.Control + Me.btn_ok.Location = New System.Drawing.Point(424, 121) + Me.btn_ok.Name = "btn_ok" + Me.btn_ok.Size = New System.Drawing.Size(150, 40) + Me.btn_ok.TabIndex = 78 + Me.btn_ok.Text = "Ok" + Me.btn_ok.UseVisualStyleBackColor = True + ' + 'ErrorLabel + ' + Me.ErrorLabel.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.ErrorLabel.BackColor = System.Drawing.Color.Transparent + Me.ErrorLabel.FontSize = MetroFramework.MetroLabelSize.Tall + Me.ErrorLabel.FontWeight = MetroFramework.MetroLabelWeight.Bold + Me.ErrorLabel.ForeColor = System.Drawing.Color.Black + Me.ErrorLabel.Location = New System.Drawing.Point(6, 16) + Me.ErrorLabel.Name = "ErrorLabel" + Me.ErrorLabel.Size = New System.Drawing.Size(601, 53) + Me.ErrorLabel.TabIndex = 34 + Me.ErrorLabel.Text = "Status: idle" + Me.ErrorLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'Delay + ' + Me.Delay.Interval = 2000 + ' + 'Btn_Close + ' + Me.Btn_Close.BackColor = System.Drawing.Color.Transparent + Me.Btn_Close.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None + Me.Btn_Close.Cursor = System.Windows.Forms.Cursors.Hand + Me.Btn_Close.FlatAppearance.BorderSize = 0 + Me.Btn_Close.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent + Me.Btn_Close.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.Btn_Close.ForeColor = System.Drawing.Color.Transparent + Me.Btn_Close.Image = Global.Crunchyroll_Downloader.My.Resources.Resources.main_close + Me.Btn_Close.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.Btn_Close.Location = New System.Drawing.Point(581, 8) + Me.Btn_Close.Name = "Btn_Close" + Me.Btn_Close.Size = New System.Drawing.Size(35, 35) + Me.Btn_Close.TabIndex = 39 + Me.Btn_Close.UseVisualStyleBackColor = False + ' + 'GroupBox1 + ' + Me.GroupBox1.BackColor = System.Drawing.Color.Transparent + Me.GroupBox1.Controls.Add(Me.ErrorBox) + Me.GroupBox1.Location = New System.Drawing.Point(13, 286) + Me.GroupBox1.Name = "GroupBox1" + Me.GroupBox1.Size = New System.Drawing.Size(613, 203) + Me.GroupBox1.TabIndex = 79 + Me.GroupBox1.TabStop = False + ' + 'ErrorBox + ' + Me.ErrorBox.BackColor = System.Drawing.SystemColors.ButtonHighlight + Me.ErrorBox.BorderStyle = System.Windows.Forms.BorderStyle.None + Me.ErrorBox.Location = New System.Drawing.Point(10, 19) + Me.ErrorBox.Name = "ErrorBox" + Me.ErrorBox.ReadOnly = True + Me.ErrorBox.Size = New System.Drawing.Size(593, 170) + Me.ErrorBox.TabIndex = 0 + Me.ErrorBox.Text = "" + ' + 'Error_msg + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(640, 275) + Me.Controls.Add(Me.GroupBox1) + Me.Controls.Add(Me.Btn_Close) + Me.Controls.Add(Me.GroupBox3) + Me.MaximizeBox = False + Me.MinimizeBox = False + Me.Name = "Error_msg" + Me.Text = "CRD-Error" + Me.TextAlign = MetroFramework.Forms.MetroFormTextAlign.Center + Me.GroupBox3.ResumeLayout(False) + Me.GroupBox1.ResumeLayout(False) + Me.ResumeLayout(False) + + End Sub + Private WithEvents GroupBox3 As GroupBox + Public WithEvents ErrorLabel As MetroFramework.Controls.MetroLabel + Friend WithEvents Delay As Timer + Friend WithEvents Btn_Close As Button + Friend WithEvents btn_cl As Button + Friend WithEvents btn_ok As Button + Private WithEvents GroupBox1 As GroupBox + Friend WithEvents ErrorBox As RichTextBox + Friend WithEvents btn_ign As Button +End Class diff --git a/Crunchyroll Downloader/Error_msg.resx b/Crunchyroll Downloader/Error_msg.resx new file mode 100644 index 0000000..2c036a2 --- /dev/null +++ b/Crunchyroll Downloader/Error_msg.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/Crunchyroll Downloader/Error_msg.vb b/Crunchyroll Downloader/Error_msg.vb new file mode 100644 index 0000000..c32d35d --- /dev/null +++ b/Crunchyroll Downloader/Error_msg.vb @@ -0,0 +1,98 @@ +Option Strict On +Imports Crunchyroll_Downloader.CRD_Classes +Imports MetroFramework +Imports MetroFramework.Components + +Public Class Error_msg + + Dim Manager As MetroStyleManager = Main.Manager + + Private Sub Btn_Close_MouseEnter(sender As Object, e As EventArgs) Handles Btn_Close.MouseEnter, Btn_Close.GotFocus + If Manager.Theme = MetroThemeStyle.Dark Then + Btn_Close.Image = My.Resources.main_close_dark_hover + Else + Btn_Close.Image = My.Resources.main_close_hover + End If + End Sub + + Private Sub Btn_Close_MouseLeave(sender As Object, e As EventArgs) Handles Btn_Close.MouseLeave, Btn_Close.LostFocus + Btn_Close.Image = Main.CloseImg + End Sub + + Private Sub Btn_Close_Click(sender As Object, e As EventArgs) Handles Btn_Close.Click + Me.Close() + End Sub + + Private Sub Error_msg_Resize(sender As Object, e As EventArgs) Handles Me.Resize + Btn_Close.Location = New Point(Me.Width - 36, 1) + + End Sub + + Private Sub btn_cl_Click(sender As Object, e As EventArgs) Handles btn_cl.Click + If Me.Height = 500 Then + Me.Height = 275 + Else + Me.Height = 500 + End If + End Sub + Private Sub Reso_Load(sender As Object, e As EventArgs) Handles MyBase.Load + Me.TopMost = True + Manager.Owner = Me + Me.StyleManager = Manager + + Btn_Close.Image = Main.CloseImg + + Try + Me.Icon = My.Resources.icon + Catch ex As Exception + + End Try + + Me.Location = New Point(CInt(Main.Location.X + Main.Width / 2 - Me.Width / 2), CInt(Main.Location.Y + Main.Height / 2 - Me.Height / 2)) + + End Sub + + Public Sub ShowErrorDia(ByVal Details As String, ShortError As String, Optional ByVal IgnoreOption As Boolean = False) + Me.Show() + ErrorBox.Text = Details + ErrorLabel.Text = ShortError + If IgnoreOption = False Then + btn_ign.BackgroundImage = My.Resources.error_dis + btn_ign.Cursor = Cursors.No + btn_ign.Enabled = False + End If + End Sub + + Private Sub btn_ok_Click(sender As Object, e As EventArgs) Handles btn_ok.Click + Me.Close() + End Sub + + + Private Sub Btn_ok_MouseEnter(sender As Object, e As EventArgs) Handles btn_ok.MouseEnter + btn_ok.BackgroundImage = My.Resources.ffmpeg_OK_cL_hover + End Sub + + Private Sub Btn_ok_MouseLeave(sender As Object, e As EventArgs) Handles btn_ok.MouseLeave + btn_ok.BackgroundImage = My.Resources.ffmpeg_OK_cL + End Sub + + Private Sub Btn_cl_MouseEnter(sender As Object, e As EventArgs) Handles btn_cl.MouseEnter + btn_cl.BackgroundImage = My.Resources.ffmpeg_OK_cL_hover + End Sub + + Private Sub Btn_cl_MouseLeave(sender As Object, e As EventArgs) Handles btn_cl.MouseLeave + btn_cl.BackgroundImage = My.Resources.ffmpeg_OK_cL + End Sub + Private Sub Btn_ign_MouseEnter(sender As Object, e As EventArgs) Handles btn_ign.MouseEnter + btn_ign.BackgroundImage = My.Resources.ffmpeg_OK_cL_hover + End Sub + + Private Sub Btn_ign_MouseLeave(sender As Object, e As EventArgs) Handles btn_ign.MouseLeave + btn_ign.BackgroundImage = My.Resources.ffmpeg_OK_cL + End Sub + + Private Sub btn_ign_Click(sender As Object, e As EventArgs) Handles btn_ign.Click + Main.IgnoreErrorDia = True + Me.Close() + End Sub +End Class \ No newline at end of file diff --git a/Crunchyroll Downloader/Main.designer.vb b/Crunchyroll Downloader/Main.designer.vb index 7eb97fd..6b3a830 100644 --- a/Crunchyroll Downloader/Main.designer.vb +++ b/Crunchyroll Downloader/Main.designer.vb @@ -52,6 +52,7 @@ Partial Class Main Me.LoginFormToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.Panel1 = New System.Windows.Forms.Panel() Me.Btn_Queue = New System.Windows.Forms.Button() + Me.ErrorDiaTestToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() CType(Me.PictureBox5, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.ConsoleBar, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.MetroStyleManager1, System.ComponentModel.ISupportInitialize).BeginInit() @@ -160,7 +161,7 @@ Partial Class Main ' 'ContextMenuStrip1 ' - Me.ContextMenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.QueueToolStripMenuItem, Me.SaveThumbnailAsImageToolStripMenuItem, Me.ToggleDebugModeToolStripMenuItem, Me.CheckCRBetaTokenToolStripMenuItem, Me.Timer3OffToolStripMenuItem, Me.ThreadCount, Me.CRCookieToolStripMenuItem, Me.UrlJsonsToolStripMenuItem, Me.DummyItemToolStripMenuItem, Me.AudioOnlyQualityToolStripMenuItem, Me.LoginFormToolStripMenuItem}) + Me.ContextMenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.QueueToolStripMenuItem, Me.SaveThumbnailAsImageToolStripMenuItem, Me.ToggleDebugModeToolStripMenuItem, Me.CheckCRBetaTokenToolStripMenuItem, Me.Timer3OffToolStripMenuItem, Me.ThreadCount, Me.CRCookieToolStripMenuItem, Me.UrlJsonsToolStripMenuItem, Me.DummyItemToolStripMenuItem, Me.AudioOnlyQualityToolStripMenuItem, Me.LoginFormToolStripMenuItem, Me.ErrorDiaTestToolStripMenuItem}) Me.ContextMenuStrip1.Name = "ContextMenuStrip1" resources.ApplyResources(Me.ContextMenuStrip1, "ContextMenuStrip1") ' @@ -235,6 +236,11 @@ Partial Class Main Me.Btn_Queue.Name = "Btn_Queue" Me.Btn_Queue.UseVisualStyleBackColor = False ' + 'ErrorDiaTestToolStripMenuItem + ' + Me.ErrorDiaTestToolStripMenuItem.Name = "ErrorDiaTestToolStripMenuItem" + resources.ApplyResources(Me.ErrorDiaTestToolStripMenuItem, "ErrorDiaTestToolStripMenuItem") + ' 'Main ' Me.ApplyImageInvert = True @@ -293,4 +299,5 @@ Partial Class Main Friend WithEvents SaveThumbnailAsImageToolStripMenuItem As ToolStripMenuItem Friend WithEvents AudioOnlyQualityToolStripMenuItem As ToolStripMenuItem Friend WithEvents LoginFormToolStripMenuItem As ToolStripMenuItem + Friend WithEvents ErrorDiaTestToolStripMenuItem As ToolStripMenuItem End Class diff --git a/Crunchyroll Downloader/Main.resx b/Crunchyroll Downloader/Main.resx index a3e54c3..da0f931 100644 --- a/Crunchyroll Downloader/Main.resx +++ b/Crunchyroll Downloader/Main.resx @@ -549,6 +549,12 @@ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ErrorDiaTestToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + Main @@ -627,8 +633,14 @@ Login Form + + 233, 22 + + + ErrorDiaTest + - 234, 268 + 234, 290 ContextMenuStrip1 diff --git a/Crunchyroll Downloader/Main.vb b/Crunchyroll Downloader/Main.vb index 5125cf7..4c2604a 100644 --- a/Crunchyroll Downloader/Main.vb +++ b/Crunchyroll Downloader/Main.vb @@ -69,6 +69,7 @@ Public Class Main Public MergeSubsFormat As String = "mov_text" Public DlSoftSubsRDY As Boolean = True Public DialogTaskString As String + Public IgnoreErrorDia As Boolean = False 'Dim NewAPIString1 As String 'Dim NewAPIString2 As String @@ -1703,16 +1704,16 @@ Public Class Main Dim ToCancel_0 As String() = NewAPIData.Split(New String() {Chr(34) + "token" + Chr(34) + ":" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries) ' - Dim ToCancel_1 As String() = ToCancel_0(1).Split(New String() {Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries) ' - Dim ToCancel As String = ToCancel_1(0) - CurlDeleteNew("https://cr-play-service.prd.crunchyrollsvc.com/v1/token/" + page_guid + "/" + ToCancel, Loc_AuthToken) - Debug.WriteLine("Delete Token: " + ToCancel + " for " + page_guid + " - " + CR_FilenName) + Dim ToCancel_1 As String() = ToCancel_0(1).Split(New String() {Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries) ' + Dim ToCancel As String = ToCancel_1(0) + CurlDeleteNew("https://cr-play-service.prd.crunchyrollsvc.com/v1/token/" + page_guid + "/" + ToCancel, Loc_AuthToken) + Debug.WriteLine("Delete Token: " + ToCancel + " for " + page_guid + " - " + CR_FilenName) #End Region #Region "GetSoftsubs" - Dim SoftSubsAvailable As New List(Of String) + Dim SoftSubsAvailable As New List(Of String) 'Dim CCAvailable As New List(Of String) Dim SoftSubsList As New List(Of CR_Subtiles) @@ -1989,38 +1990,12 @@ Public Class Main MsgBox(ex.ToString, MsgBoxStyle.Information) ElseIf CBool(InStr(ex.ToString, "Error - Getting")) Then - MsgBox(ex.ToString) - 'If RT_count = 0 Then - ' If File.Exists("cookies.txt") = True Then - ' MsgBox("Request refused, try a new cookies.txt", MsgBoxStyle.Exclamation) - ' Exit Sub - ' End If - ' Me.Invoke(New Action(Function() As Object - ' Anime_Add.StatusLabel.Text = "Browser reset..." - ' Me.Text = "Browser reset..." - ' ResoBackString = Nothing - ' Me.Invalidate() - ' Return Nothing - ' End Function)) + Dim OutputBody() As String = ex.ToString.Split(New String() {"HTTP Status:"}, System.StringSplitOptions.RemoveEmptyEntries) + Dim Output As String = OutputBody(0) + Dim Status As String = OutputBody(1) + Error_msg.ShowErrorDia(Output, "CR returnd : HTTP Status - " + Status) + 'MsgBox(ex.ToString) - ' If Application.OpenForms().OfType(Of Browser).Any = True Then - ' Browser.Close() - ' Startseite = WebsiteURL - ' Pause(5) - ' UserBowser = False - ' Browser.Show() - ' 'Anime_Add.btn_dl.Cursor = Cursors.Default - ' 'Anime_Add.btn_dl.BackgroundImage = My.Resources.main_button_download_default - ' End If - - ' 'Navigate(WebsiteURL) - ' 'Pause(5) - ' 'LoadBrowser(WebsiteURL, 1) - ' Exit Sub - 'End If - ' MsgBox(ex.ToString) - ' b = False - ' Navigate(WebsiteURL) Else MsgBox(ex.ToString, MsgBoxStyle.Information) End If @@ -3150,11 +3125,18 @@ Public Class Main Exit Sub ElseIf CBool(InStr(ObjectJson, "videos/")) = False Then 'MsgBox(ObjectJson) + + Error_msg.ShowErrorDia(ObjectJson, "Status: Failed - no video, check CR login", True) + SetStatusLabel("Status: Failed - no video, check CR login") Me.Text = "Status: Failed - no video, check CR login" - Debug.WriteLine("Status: Failed - no video, check CR login") + 'Debug.WriteLine("Status: Failed - no video, check CR login") + If IgnoreErrorDia = True Then + IgnoreErrorDia = False + Else + Exit Sub + End If - Exit Sub End If Try @@ -3407,6 +3389,10 @@ Public Class Main LoginForm.ShowDialog() End Sub + Private Sub ErrorDiaTestToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ErrorDiaTestToolStripMenuItem.Click + Error_msg.ShowErrorDia("Error-Error", "CR returnd : HTTP Status - " + "400") + End Sub + #End Region diff --git a/Crunchyroll Downloader/My Project/AssemblyInfo.vb b/Crunchyroll Downloader/My Project/AssemblyInfo.vb index b55f751..37d14bb 100644 --- a/Crunchyroll Downloader/My Project/AssemblyInfo.vb +++ b/Crunchyroll Downloader/My Project/AssemblyInfo.vb @@ -32,6 +32,6 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + diff --git a/Crunchyroll Downloader/My Project/Resources.Designer.vb b/Crunchyroll Downloader/My Project/Resources.Designer.vb index 953bdec..81b4101 100644 --- a/Crunchyroll Downloader/My Project/Resources.Designer.vb +++ b/Crunchyroll Downloader/My Project/Resources.Designer.vb @@ -210,6 +210,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + ''' + Friend ReadOnly Property error_dis() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("error_dis", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Sucht eine lokalisierte Zeichenfolge, die ;FFMETADATA1 ''' diff --git a/Crunchyroll Downloader/My Project/Resources.resx b/Crunchyroll Downloader/My Project/Resources.resx index 8945c3b..637f1fb 100644 --- a/Crunchyroll Downloader/My Project/Resources.resx +++ b/Crunchyroll Downloader/My Project/Resources.resx @@ -490,4 +490,7 @@ title=Ending ..\Resources\ffmpeg_OK_cL_hover.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\error_dis.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/Crunchyroll Downloader/Resources/error_dis.png b/Crunchyroll Downloader/Resources/error_dis.png new file mode 100644 index 0000000000000000000000000000000000000000..c8d4c489ac32c6977281d6ae3984f0d76428fa95 GIT binary patch literal 5462 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