mirror of
https://github.com/hama3254/Crunchyroll-Downloader-v3.0.git
synced 2025-01-13 16:59:09 +01:00
added token reusing, added error handling (.key files)
added reusing the access token (valid 300s in usage for ~270s) added renewing the access token (via refresh token) added .key file error detection (critical issue) minor cleanup
This commit is contained in:
parent
9be37f3904
commit
a8aeceb617
Binary file not shown.
@ -479,7 +479,7 @@ Public Class Anime_Add
|
||||
End Try
|
||||
|
||||
'My.Computer.Clipboard.SetText(EpisodeJson)
|
||||
Debug.WriteLine("EpisodeJson: " + EpisodeJson)
|
||||
'Debug.WriteLine("EpisodeJson: " + EpisodeJson)
|
||||
|
||||
FillCREpisodes(EpisodeJson)
|
||||
|
||||
|
@ -129,9 +129,6 @@
|
||||
<setting name="SaveThumbnail" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="SaveMode" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="DownloadScope" serializeAs="String">
|
||||
<value>0</value>
|
||||
</setting>
|
||||
|
@ -20,8 +20,8 @@ Public Class Browser
|
||||
Private Sub WebView2_CoreWebView2InitializationCompleted(sender As Object, e As CoreWebView2InitializationCompletedEventArgs) Handles WebView2.CoreWebView2InitializationCompleted
|
||||
Try
|
||||
WebView2.CoreWebView2.AddWebResourceRequestedFilter("https://www.crunchyroll.com/*", CoreWebView2WebResourceContext.All)
|
||||
AddHandler WebView2.CoreWebView2.WebResourceResponseReceived, AddressOf ObserveResponse
|
||||
AddHandler WebView2.CoreWebView2.WebResourceRequested, AddressOf ObserveHttp
|
||||
'AddHandler WebView2.CoreWebView2.WebResourceResponseReceived, AddressOf ObserveResponse
|
||||
'AddHandler WebView2.CoreWebView2.WebResourceRequested, AddressOf ObserveHttp 'this is not the data we are looking for (anymore :( )
|
||||
My.Settings.User_Agend = Chr(34) + "User-Agent: " + WebView2.CoreWebView2.Settings.UserAgent + Chr(34)
|
||||
|
||||
If WebView2.CoreWebView2.Source = "about:blank" Or WebView2.CoreWebView2.Source = Nothing Then
|
||||
@ -162,60 +162,6 @@ Public Class Browser
|
||||
End Sub
|
||||
|
||||
|
||||
Private Async Sub ObserveResponse(ByVal sender As Object, ByVal e As CoreWebView2WebResourceResponseReceivedEventArgs)
|
||||
|
||||
|
||||
If CBool(InStr(Main.LoadingUrl, "crunchyroll.com")) Then
|
||||
|
||||
|
||||
|
||||
If CBool(InStr(e.Request.Uri, "crunchyroll.com/")) And CBool(InStr(e.Request.Uri, "v1/token")) And Main.CR_v1Token = "Get" Then
|
||||
Debug.WriteLine("Crunchyroll-v1_token: " + e.Request.Uri)
|
||||
Dim Content As Stream = Await e.Response.GetContentAsync
|
||||
Dim ContentString As String = Nothing
|
||||
Dim reader As New StreamReader(Content)
|
||||
ContentString = reader.ReadToEnd
|
||||
|
||||
Dim Loc_CR_Cookies = " -H " + Chr(34) + Main.CR_Cookies + Chr(34)
|
||||
Dim Token() As String = ContentString.Split(New String() {Chr(34) + "access_token" + Chr(34) + ":" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
Dim Token2() As String = Token(1).Split(New String() {Chr(34) + "," + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
|
||||
Dim Auth As String = "Bearer " + Token2(0)
|
||||
Dim Auth2 As String = " -H " + Chr(34) + "Authorization: " + Auth + Chr(34)
|
||||
Main.ProcessLoading(Main.LoadingUrl, Auth2, Loc_CR_Cookies, 0)
|
||||
Main.CR_v1Token = ""
|
||||
Exit Sub
|
||||
|
||||
|
||||
ElseIf CBool(InStr(e.Request.Uri, "crunchyroll.com/")) And CBool(InStr(e.Request.Uri, "seasons?preferred_audio_language=")) And CBool(InStr(Main.LoadingUrl, "/series/")) Then
|
||||
Debug.WriteLine("Crunchyroll-Season: " + e.Request.Uri)
|
||||
Main.LoadedUrls.Add(e.Request)
|
||||
|
||||
Exit Sub
|
||||
'ElseIf CBool(InStr(e.Request.Uri, "crunchyroll.com/")) And CBool(InStr(e.Request.Uri, "content/v2/cms/objects/")) Then
|
||||
' Debug.WriteLine("Crunchyroll-objects added to cache: " + e.Request.Uri)
|
||||
' Main.LoadedUrls.Add(e.Request)
|
||||
|
||||
' Exit Sub
|
||||
'ElseIf CBool(InStr(e.Request.Uri, "crunchyroll.com/")) And CBool(InStr(e.Request.Uri, "seasons?preferred_audio_language=")) And CBool(InStr(Main.LoadingUrl, "/series/")) Then
|
||||
' Debug.WriteLine("Crunchyroll-objects added to cache: " + e.Request.Uri)
|
||||
' Main.LoadedUrls.Add(e.Request)
|
||||
|
||||
' Exit Sub
|
||||
End If
|
||||
|
||||
|
||||
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Private Sub ObserveHttp(ByVal sender As Object, ByVal e As CoreWebView2WebResourceRequestedEventArgs) 'Handles RequestResource.GetUrl
|
||||
|
||||
|
||||
|
@ -35,6 +35,25 @@ Public Class CR_Beta_Stream
|
||||
|
||||
End Class
|
||||
|
||||
|
||||
Public Class CR_Tokens
|
||||
|
||||
Public access_token As String
|
||||
Public refresh_token As String
|
||||
Public expires_Unix As Integer
|
||||
|
||||
Public Sub New(ByVal access_token As String, ByVal refresh_token As String, ByVal expires_Unix As Integer)
|
||||
Me.access_token = access_token
|
||||
Me.refresh_token = refresh_token
|
||||
Me.expires_Unix = expires_Unix
|
||||
End Sub
|
||||
|
||||
Public Overrides Function ToString() As String
|
||||
Return String.Format("{0}, {1}, {2}", Me.access_token, Me.refresh_token, Me.expires_Unix.ToString)
|
||||
End Function
|
||||
|
||||
End Class
|
||||
|
||||
Public Class CR_MediaVersion
|
||||
|
||||
Public AudioLang As String
|
||||
|
@ -31,10 +31,15 @@ Public Class CRD_List_Item
|
||||
Dim TempFolder As String = Nothing
|
||||
Dim DownloadPfad As String = Nothing
|
||||
Dim ThumbnailSource As String = Nothing
|
||||
|
||||
Dim Failed As Boolean = False
|
||||
Dim FailedCount As Integer = 0
|
||||
|
||||
Dim FailedKey As Boolean = False
|
||||
|
||||
Dim HistoryDL_URL As String
|
||||
Dim HistoryDL_Pfad As String
|
||||
|
||||
Dim HistoryFilename As String
|
||||
Dim Retry As Boolean = False
|
||||
Dim HybridMode As Boolean = False
|
||||
@ -301,6 +306,32 @@ Public Class CRD_List_Item
|
||||
StatusRunning = False
|
||||
bt_pause.BackgroundImage = My.Resources.main_pause_play
|
||||
|
||||
ElseIf Failed = True And FailedKey = True Then
|
||||
If Not Directory.Exists(Path.GetDirectoryName(HybridModePath)) Then
|
||||
' Nein! Jetzt erstellen...
|
||||
Try
|
||||
Directory.Delete(Path.GetDirectoryName(HybridModePath))
|
||||
Catch ex As Exception
|
||||
Debug.WriteLine("folder issue - delete")
|
||||
Exit Sub
|
||||
End Try
|
||||
End If
|
||||
Dim Evaluator = New Thread(Sub() DownloadHybrid(HistoryDL_URL, HistoryDL_Pfad, HistoryFilename))
|
||||
Evaluator.Start()
|
||||
HybridMode = True
|
||||
HybridRunning = True
|
||||
StatusRunning = True
|
||||
Failed = False
|
||||
|
||||
LastDate = Date.Now
|
||||
LastSize = 0
|
||||
LastDataRate1 = 0
|
||||
LastDataRate2 = 0
|
||||
LastDataRate3 = 0
|
||||
FailedSegments.Clear()
|
||||
LogText.Clear()
|
||||
ZeitGesamtInteger = 0
|
||||
|
||||
ElseIf Failed = True Then
|
||||
Dim Result As DialogResult = MessageBox.Show("The hybride mode has failed to download a fragment." + vbNewLine + "Press 'Retry' to retry the fragment or 'Ignore' to continue.", "Download Error", MessageBoxButtons.AbortRetryIgnore) '= DialogResult.Ignore Then
|
||||
|
||||
@ -445,8 +476,6 @@ Public Class CRD_List_Item
|
||||
#Region "Download + Update UI"
|
||||
|
||||
Public Sub StartDownload(ByVal DL_URL As String, ByVal DL_Pfad As String, ByVal Filename As String, ByVal DownloadHybridMode As Boolean, ByVal TempFolder As String)
|
||||
'MsgBox(DL_URL)
|
||||
|
||||
|
||||
|
||||
Me.StyleManager = MetroStyleManager1
|
||||
@ -1073,7 +1102,16 @@ Public Class CRD_List_Item
|
||||
|
||||
Catch ex2 As Exception
|
||||
FailedCount = FailedCount + 1
|
||||
If Item_ErrorTolerance = 0 Then
|
||||
If CBool(InStr(DL_Pfad, ".key")) Then
|
||||
Failed = True
|
||||
FailedKey = True
|
||||
StatusRunning = False
|
||||
bt_pause.BackgroundImage = My.Resources.main_pause_play
|
||||
Me.Invoke(New Action(Function() As Object
|
||||
Label_percent.Text = "fatal! Failed to download 'encryption.key'"
|
||||
Return Nothing
|
||||
End Function))
|
||||
ElseIf Item_ErrorTolerance = 0 Then
|
||||
|
||||
ElseIf FailedCount >= Item_ErrorTolerance Then
|
||||
FailedSegments.Add(New FailedSegemtsWithURL(DL_Pfad, DL_URL))
|
||||
@ -1085,6 +1123,7 @@ Public Class CRD_List_Item
|
||||
Label_percent.Text = "Missing segment detected, retry or resume with the play button"
|
||||
Return Nothing
|
||||
End Function))
|
||||
|
||||
End If
|
||||
|
||||
|
||||
@ -1099,6 +1138,7 @@ Public Class CRD_List_Item
|
||||
#End Region
|
||||
|
||||
Public Function DownloadHybrid(ByVal DL_URL As String, ByVal DL_Pfad As String, ByVal Filename As String) As String
|
||||
'MsgBox(DL_URL)
|
||||
LogText.Add(Date.Now.ToString + " " + DL_URL)
|
||||
|
||||
Dim Folder As String = GeräteID()
|
||||
@ -1147,7 +1187,7 @@ Public Class CRD_List_Item
|
||||
Return Nothing
|
||||
End Function))
|
||||
|
||||
For i As Integer = 0 To InuputStreams.Count - 1
|
||||
For i As Integer = 1 To InuputStreams.Count - 1
|
||||
|
||||
Dim int As Integer = i
|
||||
|
||||
|
21
Crunchyroll Downloader/Main.designer.vb
generated
21
Crunchyroll Downloader/Main.designer.vb
generated
@ -40,7 +40,6 @@ Partial Class Main
|
||||
Me.Btn_Close = New System.Windows.Forms.Button()
|
||||
Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components)
|
||||
Me.QueueToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.SaveModeToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.SaveThumbnailAsImageToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.ToggleDebugModeToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.CheckCRBetaTokenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||
@ -50,9 +49,9 @@ Partial Class Main
|
||||
Me.UrlJsonsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.DummyItemToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.AudioOnlyQualityToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.LoginFormToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.Panel1 = New System.Windows.Forms.Panel()
|
||||
Me.Btn_Queue = New System.Windows.Forms.Button()
|
||||
Me.LoginFormToolStripMenuItem = 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()
|
||||
@ -161,7 +160,7 @@ Partial Class Main
|
||||
'
|
||||
'ContextMenuStrip1
|
||||
'
|
||||
Me.ContextMenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.QueueToolStripMenuItem, Me.SaveModeToolStripMenuItem, 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.ContextMenuStrip1.Name = "ContextMenuStrip1"
|
||||
resources.ApplyResources(Me.ContextMenuStrip1, "ContextMenuStrip1")
|
||||
'
|
||||
@ -170,11 +169,6 @@ Partial Class Main
|
||||
Me.QueueToolStripMenuItem.Name = "QueueToolStripMenuItem"
|
||||
resources.ApplyResources(Me.QueueToolStripMenuItem, "QueueToolStripMenuItem")
|
||||
'
|
||||
'SaveModeToolStripMenuItem
|
||||
'
|
||||
Me.SaveModeToolStripMenuItem.Name = "SaveModeToolStripMenuItem"
|
||||
resources.ApplyResources(Me.SaveModeToolStripMenuItem, "SaveModeToolStripMenuItem")
|
||||
'
|
||||
'SaveThumbnailAsImageToolStripMenuItem
|
||||
'
|
||||
Me.SaveThumbnailAsImageToolStripMenuItem.Name = "SaveThumbnailAsImageToolStripMenuItem"
|
||||
@ -220,6 +214,11 @@ Partial Class Main
|
||||
Me.AudioOnlyQualityToolStripMenuItem.Name = "AudioOnlyQualityToolStripMenuItem"
|
||||
resources.ApplyResources(Me.AudioOnlyQualityToolStripMenuItem, "AudioOnlyQualityToolStripMenuItem")
|
||||
'
|
||||
'LoginFormToolStripMenuItem
|
||||
'
|
||||
Me.LoginFormToolStripMenuItem.Name = "LoginFormToolStripMenuItem"
|
||||
resources.ApplyResources(Me.LoginFormToolStripMenuItem, "LoginFormToolStripMenuItem")
|
||||
'
|
||||
'Panel1
|
||||
'
|
||||
resources.ApplyResources(Me.Panel1, "Panel1")
|
||||
@ -236,11 +235,6 @@ Partial Class Main
|
||||
Me.Btn_Queue.Name = "Btn_Queue"
|
||||
Me.Btn_Queue.UseVisualStyleBackColor = False
|
||||
'
|
||||
'LoginFormToolStripMenuItem
|
||||
'
|
||||
Me.LoginFormToolStripMenuItem.Name = "LoginFormToolStripMenuItem"
|
||||
resources.ApplyResources(Me.LoginFormToolStripMenuItem, "LoginFormToolStripMenuItem")
|
||||
'
|
||||
'Main
|
||||
'
|
||||
Me.ApplyImageInvert = True
|
||||
@ -297,7 +291,6 @@ Partial Class Main
|
||||
Friend WithEvents QueueToolStripMenuItem As ToolStripMenuItem
|
||||
Friend WithEvents Btn_Queue As Button
|
||||
Friend WithEvents SaveThumbnailAsImageToolStripMenuItem As ToolStripMenuItem
|
||||
Friend WithEvents SaveModeToolStripMenuItem As ToolStripMenuItem
|
||||
Friend WithEvents AudioOnlyQualityToolStripMenuItem As ToolStripMenuItem
|
||||
Friend WithEvents LoginFormToolStripMenuItem As ToolStripMenuItem
|
||||
End Class
|
||||
|
@ -489,12 +489,6 @@
|
||||
<data name=">>QueueToolStripMenuItem.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>SaveModeToolStripMenuItem.Name" xml:space="preserve">
|
||||
<value>SaveModeToolStripMenuItem</value>
|
||||
</data>
|
||||
<data name=">>SaveModeToolStripMenuItem.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>SaveThumbnailAsImageToolStripMenuItem.Name" xml:space="preserve">
|
||||
<value>SaveThumbnailAsImageToolStripMenuItem</value>
|
||||
</data>
|
||||
@ -573,12 +567,6 @@
|
||||
<data name="QueueToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>ffmpeg option</value>
|
||||
</data>
|
||||
<data name="SaveModeToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>233, 22</value>
|
||||
</data>
|
||||
<data name="SaveModeToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>*Save Mode*</value>
|
||||
</data>
|
||||
<data name="SaveThumbnailAsImageToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>233, 22</value>
|
||||
</data>
|
||||
@ -640,7 +628,7 @@
|
||||
<value>Login Form</value>
|
||||
</data>
|
||||
<data name="ContextMenuStrip1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>234, 290</value>
|
||||
<value>234, 268</value>
|
||||
</data>
|
||||
<data name=">>ContextMenuStrip1.Name" xml:space="preserve">
|
||||
<value>ContextMenuStrip1</value>
|
||||
|
@ -15,8 +15,7 @@ Imports System.Runtime.InteropServices
|
||||
Imports MyProvider.MyProvider
|
||||
Imports Microsoft.Web.WebView2.Core
|
||||
Imports Crunchyroll_Downloader.CRD_Classes
|
||||
|
||||
|
||||
Imports System.Runtime.CompilerServices
|
||||
|
||||
Public Class Main
|
||||
Inherits MetroForm
|
||||
@ -25,32 +24,21 @@ Public Class Main
|
||||
Dim HTML As String = Nothing
|
||||
Public CR_Cookies As String = "Cookie: "
|
||||
|
||||
Public CheckCRLogin As Boolean = True
|
||||
|
||||
Public CR_AuthToken As String = ""
|
||||
Public CR_v1Token As String = ""
|
||||
|
||||
|
||||
'Public GetBetaSeasonsRetry As Boolean = False
|
||||
'Public GetBetaSeasonSingle As Boolean = False
|
||||
|
||||
Public CR_MassSeasons As New List(Of CR_Seasons)
|
||||
Public CR_MassEpisodes As New List(Of CR_Seasons)
|
||||
|
||||
'Public CrBetaMass As String = Nothing
|
||||
'Public CrBetaMassEpisodes As String = Nothing
|
||||
'Public CrBetaMassParameters As String = Nothing
|
||||
'Public CrBetaMassBaseURL As String = Nothing
|
||||
|
||||
|
||||
Public Mail As String = Nothing
|
||||
Public PW As String = Nothing
|
||||
Public CrBetaBasic As String = "Basic dC1rZGdwMmg4YzNqdWI4Zm4wZnE6eWZMRGZNZnJZdktYaDRKWFMxTEVJMmNDcXUxdjVXYW4="
|
||||
|
||||
Public CR_Token As CR_Tokens = New CR_Tokens(Nothing, "", 0)
|
||||
|
||||
|
||||
Public locale As String = Nothing
|
||||
Public Url_locale As String = Nothing
|
||||
'Public CrBetaObjects As String = Nothing
|
||||
'Public CrBetaStreams As String = Nothing
|
||||
'Public CrBetaStreamsUrl As String = Nothing
|
||||
|
||||
Public LoadingUrl As String = ""
|
||||
Public LoadedUrls As New List(Of CoreWebView2WebResourceRequest)
|
||||
|
||||
@ -61,10 +49,8 @@ Public Class Main
|
||||
Public KodiNaming As Boolean = False
|
||||
Public ErrorTolerance As Integer = 0
|
||||
Public CookieList As New List(Of CoreWebView2Cookie)
|
||||
'Public liList As New List(Of String)
|
||||
Public HTMLString As String = My.Resources.Startuphtml
|
||||
Public ListBoxList As New List(Of String)
|
||||
'Public ItemList As New List(Of CRD_List_Item)
|
||||
Public RunningDownloads As Integer = 0
|
||||
Public UseQueue As Boolean = False
|
||||
Public StartServer As Integer = 0
|
||||
@ -76,17 +62,12 @@ Public Class Main
|
||||
Public LogBrowserData As Boolean = False
|
||||
Public Thumbnail As String = Nothing
|
||||
Public MergeSubs As Boolean = False
|
||||
'Public IgnoreS1 As Boolean = False
|
||||
Public IgnoreSeason As Integer = 0
|
||||
Public HideFLInt As Integer = 0
|
||||
Public KeepCache As Boolean = False
|
||||
'Public SubsOnly As Boolean = False
|
||||
Public DownloadScope As Integer = 0
|
||||
Public VideoFormat As String = ".mp4"
|
||||
Public MergeSubsFormat As String = "mov_text"
|
||||
'Public LoginDialog As Boolean = False
|
||||
'Public NonCR_Timeout As Integer = 5
|
||||
'Public NonCR_URL As String = Nothing
|
||||
Public DlSoftSubsRDY As Boolean = True
|
||||
Public DialogTaskString As String
|
||||
Dim NewAPIString1 As String
|
||||
@ -1073,93 +1054,92 @@ Public Class Main
|
||||
|
||||
|
||||
Dim ObjectsURLBuilder() As String = Streams.Split(New String() {"videos"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
Dim ObjectsURLBuilder2() As String = ObjectsURLBuilder(1).Split(New String() {"/streams"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
Dim ObjectsURLBuilder3() As String = WebsiteURL.Split(New String() {"watch/"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
Dim ObjectsURLBuilder4() As String = ObjectsURLBuilder3(1).Split(New String() {"/"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
Dim ObjectsURL As String = ObjectsURLBuilder(0) + "objects/" + ObjectsURLBuilder4(0) + ObjectsURLBuilder2(1)
|
||||
Dim ObjectsURLBuilder2() As String = ObjectsURLBuilder(1).Split(New String() {"/streams"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
Dim ObjectsURLBuilder3() As String = WebsiteURL.Split(New String() {"watch/"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
Dim ObjectsURLBuilder4() As String = ObjectsURLBuilder3(1).Split(New String() {"/"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
Dim ObjectsURL As String = ObjectsURLBuilder(0) + "objects/" + ObjectsURLBuilder4(0) + ObjectsURLBuilder2(1)
|
||||
|
||||
CR_EpisodeID = ObjectsURLBuilder4(0)
|
||||
CR_EpisodeID = ObjectsURLBuilder4(0)
|
||||
|
||||
Debug.WriteLine(ObjectsURL)
|
||||
'Debug.WriteLine(ObjectsURL)
|
||||
|
||||
ObjectJson = CurlAuthNew(ObjectsURL, Loc_CR_Cookies, Loc_AuthToken)
|
||||
ObjectJson = CurlAuthNew(ObjectsURL, Loc_CR_Cookies, Loc_AuthToken)
|
||||
|
||||
'Filter JSON esqaped characters
|
||||
'Debug.WriteLine(Date.Now.ToString + "before:" + ObjectJson)
|
||||
Debug.WriteLine("1750: " + ObjectJson)
|
||||
ObjectJson = CleanJSON(ObjectJson)
|
||||
'Debug.WriteLine(Date.Now.ToString + "after:" + ObjectJson)
|
||||
'Filter JSON esqaped characters
|
||||
'Debug.WriteLine(Date.Now.ToString + "before:" + ObjectJson)
|
||||
'Debug.WriteLine("1750: " + ObjectJson)
|
||||
ObjectJson = CleanJSON(ObjectJson)
|
||||
'Debug.WriteLine(Date.Now.ToString + "after:" + ObjectJson)
|
||||
|
||||
Dim DubsAvalible As New List(Of CR_MediaVersion)
|
||||
Dim DubsAvalible As New List(Of CR_MediaVersion)
|
||||
|
||||
Dim ser As JObject = JObject.Parse(ObjectJson)
|
||||
Dim data As List(Of JToken) = ser.Children().ToList
|
||||
Dim ser As JObject = JObject.Parse(ObjectJson)
|
||||
Dim data As List(Of JToken) = ser.Children().ToList
|
||||
|
||||
For Each item As JProperty In data
|
||||
item.CreateReader()
|
||||
Select Case item.Name
|
||||
For Each item As JProperty In data
|
||||
item.CreateReader()
|
||||
Select Case item.Name
|
||||
|
||||
Case "data" 'each record is inside the entries array
|
||||
For Each Entry As JObject In item.Values
|
||||
Try
|
||||
Dim Title As String = Entry("title").ToString
|
||||
CR_title = String.Join(" ", Title.Split(invalids, StringSplitOptions.RemoveEmptyEntries)).TrimEnd("."c).Replace(Chr(34), "").Replace("\", "").Replace("/", "").Replace(":", "")
|
||||
Debug.WriteLine(Date.Now.ToString + " CR-Title: " + CR_title)
|
||||
Catch ex As Exception
|
||||
End Try
|
||||
Dim SubData As List(Of JToken) = Entry.Children().ToList
|
||||
For Each SubItem As JProperty In SubData
|
||||
'SubItem.CreateReader()
|
||||
Select Case SubItem.Name
|
||||
Case "episode_metadata"
|
||||
For Each SubEntry As JProperty In SubItem.Values
|
||||
Select Case SubEntry.Name
|
||||
Case "series_title"
|
||||
CR_series_title = SubEntry.Value.ToString.Replace(Chr(34), "").Replace("\", "").Replace("/", "").Replace(":", "")
|
||||
Case "data" 'each record is inside the entries array
|
||||
For Each Entry As JObject In item.Values
|
||||
Try
|
||||
Dim Title As String = Entry("title").ToString
|
||||
CR_title = String.Join(" ", Title.Split(invalids, StringSplitOptions.RemoveEmptyEntries)).TrimEnd("."c).Replace(Chr(34), "").Replace("\", "").Replace("/", "").Replace(":", "")
|
||||
Debug.WriteLine(Date.Now.ToString + " CR-Title: " + CR_title)
|
||||
Catch ex As Exception
|
||||
End Try
|
||||
Dim SubData As List(Of JToken) = Entry.Children().ToList
|
||||
For Each SubItem As JProperty In SubData
|
||||
'SubItem.CreateReader()
|
||||
Select Case SubItem.Name
|
||||
Case "episode_metadata"
|
||||
For Each SubEntry As JProperty In SubItem.Values
|
||||
Select Case SubEntry.Name
|
||||
Case "series_title"
|
||||
CR_series_title = SubEntry.Value.ToString.Replace(Chr(34), "").Replace("\", "").Replace("/", "").Replace(":", "")
|
||||
'Case "season_title"
|
||||
' CR_season_title = SubEntry.Value.ToString
|
||||
Case "season_number"
|
||||
CR_season_number = SubEntry.Value.ToString.Replace(Chr(34), "").Replace("\", "").Replace("/", "").Replace(":", "")
|
||||
Case "episode_number"
|
||||
CR_episode2 = SubEntry.Value.ToString.Replace(Chr(34), "").Replace("\", "").Replace("/", "").Replace(":", "")
|
||||
Case "episode"
|
||||
CR_episode = SubEntry.Value.ToString.Replace(Chr(34), "").Replace("\", "").Replace("/", "").Replace(":", "")
|
||||
Case "duration_ms"
|
||||
CR_episode_duration_ms = SubEntry.Value.ToString.Replace(Chr(34), "").Replace("\", "").Replace("/", "").Replace(":", "")
|
||||
Case "is_dubbed"
|
||||
CR_audio_isDubbed = CBool(SubEntry.Value.ToString.Replace(Chr(34), "").Replace("\", "").Replace("/", "").Replace(":", ""))
|
||||
Case "audio_locale"
|
||||
CR_audio_locale = SubEntry.Value.ToString.Replace(Chr(34), "").Replace("\", "").Replace("/", "").Replace(":", "")
|
||||
Case "versions" 'each record is inside the entries array
|
||||
For Each VersionEntry As JObject In item.Values
|
||||
Case "season_number"
|
||||
CR_season_number = SubEntry.Value.ToString.Replace(Chr(34), "").Replace("\", "").Replace("/", "").Replace(":", "")
|
||||
Case "episode_number"
|
||||
CR_episode2 = SubEntry.Value.ToString.Replace(Chr(34), "").Replace("\", "").Replace("/", "").Replace(":", "")
|
||||
Case "episode"
|
||||
CR_episode = SubEntry.Value.ToString.Replace(Chr(34), "").Replace("\", "").Replace("/", "").Replace(":", "")
|
||||
Case "duration_ms"
|
||||
CR_episode_duration_ms = SubEntry.Value.ToString.Replace(Chr(34), "").Replace("\", "").Replace("/", "").Replace(":", "")
|
||||
Case "is_dubbed"
|
||||
CR_audio_isDubbed = CBool(SubEntry.Value.ToString.Replace(Chr(34), "").Replace("\", "").Replace("/", "").Replace(":", ""))
|
||||
Case "audio_locale"
|
||||
CR_audio_locale = SubEntry.Value.ToString.Replace(Chr(34), "").Replace("\", "").Replace("/", "").Replace(":", "")
|
||||
Case "versions" 'each record is inside the entries array
|
||||
For Each VersionEntry As JObject In item.Values
|
||||
|
||||
Dim VideoSubData As List(Of JToken) = VersionEntry.Children().ToList
|
||||
Dim guid As String = Nothing
|
||||
Dim audio_locale As String = Nothing
|
||||
Dim VideoSubData As List(Of JToken) = VersionEntry.Children().ToList
|
||||
Dim guid As String = Nothing
|
||||
Dim audio_locale As String = Nothing
|
||||
|
||||
For Each VideoSubItem As JProperty In VideoSubData
|
||||
Select Case VideoSubItem.Name
|
||||
Case "audio_locale"
|
||||
audio_locale = VideoSubItem.Value.ToString
|
||||
Case "guid"
|
||||
guid = VideoSubItem.Value.ToString
|
||||
'Debug.WriteLine(guid)
|
||||
End Select
|
||||
For Each VideoSubItem As JProperty In VideoSubData
|
||||
Select Case VideoSubItem.Name
|
||||
Case "audio_locale"
|
||||
audio_locale = VideoSubItem.Value.ToString
|
||||
Case "guid"
|
||||
guid = VideoSubItem.Value.ToString
|
||||
'Debug.WriteLine(guid)
|
||||
End Select
|
||||
Next
|
||||
|
||||
If audio_locale = Nothing Or guid = Nothing Then
|
||||
Else
|
||||
DubsAvalible.Add(New CR_MediaVersion(audio_locale, guid))
|
||||
End If
|
||||
Next
|
||||
|
||||
If audio_locale = Nothing Or guid = Nothing Then
|
||||
Else
|
||||
DubsAvalible.Add(New CR_MediaVersion(audio_locale, guid))
|
||||
End If
|
||||
Next
|
||||
End Select
|
||||
Next '
|
||||
End Select
|
||||
End Select
|
||||
Next '
|
||||
End Select
|
||||
Next
|
||||
Next
|
||||
Next
|
||||
End Select
|
||||
Next
|
||||
|
||||
End Select
|
||||
Next
|
||||
|
||||
#Region "m3u8 suche"
|
||||
|
||||
@ -1167,15 +1147,15 @@ Public Class Main
|
||||
|
||||
#Region "Check for dub override"
|
||||
If My.Settings.OverrideDub = True And CR_audio_locale = DubSprache.CR_Value = False Then 'einstellung ein + kein musikvideo oder Konzert
|
||||
'MsgBox("Trigger on!")
|
||||
For i As Integer = 0 To DubsAvalible.Count - 1
|
||||
If DubsAvalible(i).AudioLang = DubSprache.CR_Value Then
|
||||
page_guid = DubsAvalible(i).guid
|
||||
End If
|
||||
Next
|
||||
'MsgBox("Trigger on!")
|
||||
For i As Integer = 0 To DubsAvalible.Count - 1
|
||||
If DubsAvalible(i).AudioLang = DubSprache.CR_Value Then
|
||||
page_guid = DubsAvalible(i).guid
|
||||
End If
|
||||
Next
|
||||
|
||||
|
||||
End If
|
||||
End If
|
||||
#End Region
|
||||
End If
|
||||
|
||||
@ -1183,7 +1163,7 @@ Public Class Main
|
||||
Debug.WriteLine("NewAPI: " + NewAPI)
|
||||
|
||||
Dim NewAPIData As String = CurlAuthNew(NewAPI, "", Loc_AuthToken)
|
||||
Debug.WriteLine("NewAPIData: " + NewAPIData)
|
||||
'Debug.WriteLine("NewAPIData: " + NewAPIData)
|
||||
|
||||
|
||||
Dim VideoJSON_New As String = CleanJSON(NewAPIData)
|
||||
@ -1217,7 +1197,10 @@ Public Class Main
|
||||
End Select
|
||||
Next
|
||||
|
||||
|
||||
Me.Invoke(New Action(Function() As Object
|
||||
SetStatusLabel("Status: API data received")
|
||||
Return Nothing
|
||||
End Function))
|
||||
|
||||
Dim CR_URI_Master As New List(Of String)
|
||||
|
||||
@ -1273,23 +1256,11 @@ Public Class Main
|
||||
End If
|
||||
End If
|
||||
|
||||
'MsgBox(CR_URI_Master.Count.ToString)
|
||||
Me.Invoke(New Action(Function() As Object
|
||||
SetStatusLabel("Status: Language found")
|
||||
Return Nothing
|
||||
End Function))
|
||||
|
||||
'If CBool(InStr(CR_URI_Master(0), "master.m3u8")) Then
|
||||
' Me.Invoke(New Action(Function() As Object
|
||||
' Anime_Add.StatusLabel.Text = "Status: m3u8 found, looking for resolution"
|
||||
' Me.Text = "Status: m3u8 found, looking for resolution"
|
||||
' Me.Invalidate()
|
||||
' Return Nothing
|
||||
' End Function))
|
||||
'Else
|
||||
' If MessageBox.Show("The Url below failed a check, continue?" + vbNewLine + CR_URI_Master(0), "Mission failed?", MessageBoxButtons.OKCancel) = DialogResult.OK Then
|
||||
|
||||
' Else
|
||||
' Throw New System.Exception("Premium Episode")
|
||||
' End If
|
||||
' Throw New System.Exception("Premium Episode")
|
||||
'End If
|
||||
|
||||
#End Region
|
||||
|
||||
@ -1606,6 +1577,7 @@ Public Class Main
|
||||
|
||||
If DownloadScope = DownloadScopeEnum.SubsOnly Then
|
||||
ffmpegInput = "-i [Subtitles only]"
|
||||
|
||||
Else
|
||||
|
||||
Dim str As String = CurlAuthNew(CR_URI_Master(0), "", Loc_AuthToken)
|
||||
@ -1674,7 +1646,11 @@ Public Class Main
|
||||
|
||||
End If
|
||||
|
||||
|
||||
Me.Invoke(New Action(Function() As Object
|
||||
SetStatusLabel("Status: Resolution found")
|
||||
Pause(2)
|
||||
Return Nothing
|
||||
End Function))
|
||||
|
||||
#End Region
|
||||
|
||||
@ -1686,7 +1662,6 @@ Public Class Main
|
||||
|
||||
|
||||
|
||||
|
||||
'Dim SplitVideo As String() = VideoJson.Split(New String() {Chr(34) + "closed_captions" + Chr(34) + ":"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
|
||||
'If SoftSubs.Count > 0 And My.Settings.Captions = True Then
|
||||
@ -1698,6 +1673,11 @@ Public Class Main
|
||||
'End If
|
||||
'"language":"de-DE"
|
||||
If SoftSubs.Count > 0 Then 'And CCAvailable.Count = 0 Then
|
||||
Me.Invoke(New Action(Function() As Object
|
||||
SetStatusLabel("Status: Checking Soft-Subs")
|
||||
Return Nothing
|
||||
End Function))
|
||||
|
||||
For i As Integer = 0 To SoftSubs.Count - 1
|
||||
If CBool(InStr(VideoJSON_New, Chr(34) + "language" + Chr(34) + ":" + Chr(34) + SoftSubs(i) + Chr(34) + "," + Chr(34) + "url" + Chr(34) + ":" + Chr(34))) Then
|
||||
SoftSubsAvailable.Add(SoftSubs(i))
|
||||
@ -2311,84 +2291,6 @@ Public Class Main
|
||||
#End Region
|
||||
|
||||
|
||||
Public Sub ProcessUrls()
|
||||
Debug.WriteLine(LoadedUrls.Count.ToString)
|
||||
Debug.WriteLine(Date.Now.ToString + " Thread Name: " + Thread.CurrentThread.Name)
|
||||
Dim SavedObjectsUrl = ""
|
||||
For i As Integer = 0 To LoadedUrls.Count - 1
|
||||
|
||||
Dim Request As CoreWebView2WebResourceRequest = LoadedUrls.Item(i)
|
||||
|
||||
|
||||
If CBool(InStr(Request.Uri, "crunchyroll.com/")) And CBool(InStr(Request.Uri, "streams?")) Then
|
||||
|
||||
If b = False Then
|
||||
|
||||
If Application.OpenForms().OfType(Of Anime_Add).Any = True Then
|
||||
Anime_Add.StatusLabel.Text = "Status: Crunchyroll episode found."
|
||||
End If
|
||||
Me.Text = "Status: Crunchyroll episode found."
|
||||
Debug.WriteLine("Crunchyroll episode found")
|
||||
GetCRVideoProxy(Request.Uri, CR_AuthToken, WebbrowserURL, 0)
|
||||
b = True
|
||||
LoadedUrls.Clear()
|
||||
Me.Text = "Crunchyroll Downloader"
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
ElseIf CBool(InStr(Request.Uri, "crunchyroll.com/")) And CBool(InStr(Request.Uri, "seasons?preferred_audio_language=")) And CBool(InStr(WebbrowserURL, "series")) Then
|
||||
|
||||
If b = False Then
|
||||
|
||||
If Application.OpenForms().OfType(Of Anime_Add).Any = True Then
|
||||
Anime_Add.StatusLabel.Text = "Status: Crunchyroll season found."
|
||||
End If
|
||||
Me.Text = "Status: Crunchyroll season found."
|
||||
Debug.WriteLine("Crunchyroll season found")
|
||||
|
||||
Dim Auth As String = " -H " + Chr(34) + "Authorization: " + Request.Headers.GetHeader("Authorization") + Chr(34)
|
||||
Debug.WriteLine(Auth)
|
||||
|
||||
CR_Cookies = "Cookie: " + Request.Headers.GetHeader("Cookie")
|
||||
|
||||
GetBetaSeasons(WebbrowserURL, Request.Uri, Auth)
|
||||
|
||||
'Browser.WebBrowser1.LoadUrl(Request.Uri)
|
||||
b = True
|
||||
LoadedUrls.Clear()
|
||||
Me.Text = "Crunchyroll Downloader"
|
||||
Exit Sub
|
||||
End If
|
||||
ElseIf CBool(InStr(Request.Uri, "crunchyroll.com/")) And CBool(InStr(Request.Uri, "seasons?series_id=")) Then
|
||||
|
||||
If b = False Then
|
||||
|
||||
If Application.OpenForms().OfType(Of Anime_Add).Any = True Then
|
||||
Anime_Add.StatusLabel.Text = "Status: Error found invalid data."
|
||||
End If
|
||||
b = True
|
||||
LoadedUrls.Clear()
|
||||
Me.Text = "Crunchyroll Downloader"
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
|
||||
|
||||
Next
|
||||
|
||||
LoadedUrls.Clear()
|
||||
|
||||
If b = True Then
|
||||
LoadedUrls.Clear()
|
||||
Debug.WriteLine("Just Browsing after all, exiting...")
|
||||
Grapp_RDY = True
|
||||
Me.Text = "Crunchyroll Downloader"
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub Navigate(ByVal Url As String)
|
||||
If Application.OpenForms().OfType(Of Browser).Any = True Then
|
||||
@ -2996,10 +2898,6 @@ Public Class Main
|
||||
LoadedUrls.Clear()
|
||||
Dim NoBrowser As Boolean = False
|
||||
|
||||
If My.Settings.SaveMode = True Then
|
||||
Browser.WebView2.CoreWebView2.Navigate(Url)
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
'CR_v1Token = "Get"
|
||||
'Browser.WebView2.Source = New Uri(Url)
|
||||
@ -3012,153 +2910,167 @@ Public Class Main
|
||||
|
||||
#Region "Get Cookies"
|
||||
|
||||
CR_Cookies = "Cookie: "
|
||||
'MsgBox("Cookies")
|
||||
If File.Exists("cookies.txt") = True Then
|
||||
CR_Cookies = GetCookiesFromFile("crunchyroll.com")
|
||||
NoBrowser = True
|
||||
CrBetaBasic = "Basic bm9haWhkZXZtXzZpeWcwYThsMHE6"
|
||||
'MsgBox(True.ToString)
|
||||
Else
|
||||
Browser.GetCookies(Url)
|
||||
'CR_Cookies = "Cookie: "
|
||||
''MsgBox("Cookies")
|
||||
'If File.Exists("cookies.txt") = True Then
|
||||
' CR_Cookies = GetCookiesFromFile("crunchyroll.com")
|
||||
' NoBrowser = True
|
||||
' CrBetaBasic = "Basic bm9haWhkZXZtXzZpeWcwYThsMHE6"
|
||||
' 'MsgBox(True.ToString)
|
||||
'Else
|
||||
' Browser.GetCookies(Url)
|
||||
|
||||
Debug.WriteLine(CookieList.Count.ToString)
|
||||
If CookieList.Count = 0 Then
|
||||
Browser.WebView2.CoreWebView2.Navigate(Url)
|
||||
SetStatusLabel("Status: loading in browser...")
|
||||
Me.Text = "Status: loading in browser..."
|
||||
Exit Sub
|
||||
End If
|
||||
' Debug.WriteLine(CookieList.Count.ToString)
|
||||
' If CookieList.Count = 0 Then
|
||||
' Browser.WebView2.CoreWebView2.Navigate(Url)
|
||||
' SetStatusLabel("Status: loading in browser...")
|
||||
' Me.Text = "Status: loading in browser..."
|
||||
' Exit Sub
|
||||
' End If
|
||||
|
||||
|
||||
|
||||
For i As Integer = 0 To CookieList.Count - 1
|
||||
' For i As Integer = 0 To CookieList.Count - 1
|
||||
|
||||
If CBool(InStr(CookieList.Item(i).Domain, ".crunchyroll.com")) And CBool(InStr(CookieList.Item(i).Name, "_evidon_suppress")) = False Then
|
||||
CR_Cookies = CR_Cookies + CookieList.Item(i).Name + "=" + CookieList.Item(i).Value + ";"
|
||||
End If
|
||||
' If CBool(InStr(CookieList.Item(i).Domain, ".crunchyroll.com")) And CBool(InStr(CookieList.Item(i).Name, "_evidon_suppress")) = False Then
|
||||
' CR_Cookies = CR_Cookies + CookieList.Item(i).Name + "=" + CookieList.Item(i).Value + ";"
|
||||
' End If
|
||||
|
||||
Next
|
||||
' Next
|
||||
|
||||
End If
|
||||
'End If
|
||||
|
||||
'MsgBox(Main.CR_Cookies)
|
||||
''MsgBox(Main.CR_Cookies)
|
||||
|
||||
Dim DeviceRegion As String = Nothing
|
||||
'Dim DeviceRegion As String = Nothing
|
||||
|
||||
If CBool(InStr(Url, "/series")) Then
|
||||
Dim locale1() As String = Url.Split(New String() {"crunchyroll.com/"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
Dim locale2() As String = locale1(1).Split(New String() {"/series"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
locale = Convert_locale(locale2(0))
|
||||
If locale = "en-US" Then
|
||||
Url_locale = ""
|
||||
Else
|
||||
Url_locale = locale2(0)
|
||||
End If
|
||||
'If CBool(InStr(Url, "/series")) Then
|
||||
' Dim locale1() As String = Url.Split(New String() {"crunchyroll.com/"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
' Dim locale2() As String = locale1(1).Split(New String() {"/series"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
' locale = Convert_locale(locale2(0))
|
||||
' If locale = "en-US" Then
|
||||
' Url_locale = ""
|
||||
' Else
|
||||
' Url_locale = locale2(0)
|
||||
' End If
|
||||
|
||||
|
||||
ElseIf CBool(InStr(Url, "/watch")) Then
|
||||
Dim locale1() As String = Url.Split(New String() {"crunchyroll.com/"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
Dim locale2() As String = locale1(1).Split(New String() {"/watch"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
'MsgBox(locale2(0))
|
||||
'ElseIf CBool(InStr(Url, "/watch")) Then
|
||||
' Dim locale1() As String = Url.Split(New String() {"crunchyroll.com/"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
' Dim locale2() As String = locale1(1).Split(New String() {"/watch"}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
' 'MsgBox(locale2(0))
|
||||
|
||||
locale = Convert_locale(locale2(0))
|
||||
'End If
|
||||
If locale = "en-US" Then
|
||||
Url_locale = ""
|
||||
Else
|
||||
Url_locale = locale2(0)
|
||||
End If
|
||||
' locale = Convert_locale(locale2(0))
|
||||
' 'End If
|
||||
' If locale = "en-US" Then
|
||||
' Url_locale = ""
|
||||
' Else
|
||||
' Url_locale = locale2(0)
|
||||
' End If
|
||||
|
||||
'If CBool(InStr(Url, "musicvideo/")) Then
|
||||
' SetStatusLabel("Status: musicvideo detected - partial support only")
|
||||
' 'If CBool(InStr(Url, "musicvideo/")) Then
|
||||
' ' SetStatusLabel("Status: musicvideo detected - partial support only")
|
||||
|
||||
' Browser.WebView2.CoreWebView2.Navigate(Url)
|
||||
' Exit Sub
|
||||
'Else
|
||||
'If CBool(InStr(Url, "/concert/")) Then
|
||||
' ' Browser.WebView2.CoreWebView2.Navigate(Url)
|
||||
' ' Exit Sub
|
||||
' 'Else
|
||||
' 'If CBool(InStr(Url, "/concert/")) Then
|
||||
|
||||
' SetStatusLabel("Status: concert detected - partial support only")
|
||||
' Browser.WebView2.CoreWebView2.Navigate(Url)
|
||||
' Exit Sub
|
||||
' ' SetStatusLabel("Status: concert detected - partial support only")
|
||||
' ' Browser.WebView2.CoreWebView2.Navigate(Url)
|
||||
' ' Exit Sub
|
||||
|
||||
' End If
|
||||
' ' End If
|
||||
|
||||
|
||||
End If
|
||||
'End If
|
||||
|
||||
'Debug.WriteLine("###" + CR_Cookies + "###")
|
||||
''Debug.WriteLine("###" + CR_Cookies + "###")
|
||||
|
||||
Dim Loc_CR_Cookies = " -H " + Chr(34) + CR_Cookies + Chr(34)
|
||||
'Dim Loc_CR_Cookies = " -H " + Chr(34) + CR_Cookies + Chr(34)
|
||||
|
||||
|
||||
'CR_v1Token = "Get"
|
||||
'Browser.WebView2.Source = New Uri(Url)
|
||||
'Exit Sub
|
||||
''CR_v1Token = "Get"
|
||||
''Browser.WebView2.Source = New Uri(Url)
|
||||
''Exit Sub
|
||||
|
||||
#End Region
|
||||
|
||||
|
||||
Dim Loc_CR_Cookies As String = "" ' do we need that? does not seem like it.
|
||||
|
||||
Dim Auth As String = " -H " + Chr(34) + "Authorization: " + CrBetaBasic + Chr(34)
|
||||
'Dim Post As String = " -d " + Chr(34) + "grant_type=etp_rt_cookie" + Chr(34) + " -X POST"
|
||||
Dim Post As String = " -d " + Chr(34) + "username=" + UrlEncode(Mail) + "&password=" + UrlEncode(PW) + "&grant_type=password&scope=offline_access" + Chr(34) + " -X POST -H " + Chr(34) + "Content-Type: application/x-www-form-urlencoded; charset=utf-8" + Chr(34)
|
||||
|
||||
Dim Post As String = Nothing
|
||||
Dim UnixTime As Integer
|
||||
UnixTime = CInt((DateTime.UtcNow - New DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds)
|
||||
|
||||
If CBool(CR_Token.access_token = Nothing) = True Then ' *insert *First time* meme
|
||||
Post = " -d " + Chr(34) + "username=" + UrlEncode(Mail) + "&password=" + UrlEncode(PW) + "&grant_type=password&scope=offline_access" + Chr(34) + " -X POST -H " + Chr(34) + "Content-Type: application/x-www-form-urlencoded; charset=utf-8" + Chr(34)
|
||||
SetStatusLabel("Status: using login to authenticate")
|
||||
Pause(2)
|
||||
ElseIf CR_Token.expires_Unix + 30 > UnixTime Then 'we are not expired yet (+10% tolleranz)
|
||||
Post = "Skip!"
|
||||
SetStatusLabel("Status: Token not expired - skip auth")
|
||||
Pause(2)
|
||||
ElseIf CR_Token.expires_Unix + 30 < UnixTime Then 'we should renew it
|
||||
Post = " -d " + Chr(34) + "refresh_token=" + CR_Token.refresh_token + "&grant_type=refresh_token&scope=offline_access" + Chr(34) + " -X POST -H " + Chr(34) + "Content-Type: application/x-www-form-urlencoded; charset=utf-8" + Chr(34)
|
||||
SetStatusLabel("Status: Token expired - refreshing")
|
||||
Pause(2)
|
||||
End If
|
||||
|
||||
'
|
||||
Dim CRBetaBearer As String = "Bearer "
|
||||
|
||||
If Post = "Skip!" Then
|
||||
Dim Auth2 As String = " -H " + Chr(34) + "Authorization: " + CRBetaBearer + CR_Token.access_token + Chr(34)
|
||||
ProcessLoading(Url, Auth2, Loc_CR_Cookies, RT_count)
|
||||
Else
|
||||
Dim v1Token As String = CurlPost("https://www.crunchyroll.com/auth/v1/token", Loc_CR_Cookies, Auth, Post, "add_main_4494")
|
||||
|
||||
Dim v1Token As String = CurlPost("https://www.crunchyroll.com/auth/v1/token", Loc_CR_Cookies, Auth, Post, "add_main_4494")
|
||||
If CBool(InStr(v1Token, "curl:")) = True And CBool(InStr(v1Token, "401")) = True Then
|
||||
MsgBox("CR reported error 401, this may mean incorrect login detail, please try again.", MsgBoxStyle.Exclamation, "CR-Error 401")
|
||||
LoginForm.ShowDialog()
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
If CBool(InStr(v1Token, "curl:")) = True And CBool(InStr(v1Token, "401")) = True Then
|
||||
MsgBox("CR reported error 401, this may mean incorrect login detail, please try again.", MsgBoxStyle.Exclamation, "CR-Error 401")
|
||||
LoginForm.ShowDialog()
|
||||
Exit Sub
|
||||
End If
|
||||
If CBool(InStr(v1Token, "curl:")) = True And CBool(InStr(v1Token, "400")) = True Then
|
||||
MsgBox("CR reported error 400, idk why tbh", MsgBoxStyle.Exclamation, "CR-Error 400")
|
||||
SetStatusLabel("Status: Unknown error. #3038")
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
If CBool(InStr(v1Token, "curl:")) = True And CBool(InStr(v1Token, "400")) = True Then
|
||||
Debug.WriteLine("Post error!, 400")
|
||||
Post = " -d " + Chr(34) + "grant_type=client_id&scope=offline_access" + Chr(34) + " -X POST"
|
||||
|
||||
Debug.WriteLine(Post.Replace("etp_rt_cookie", "client_id"))
|
||||
v1Token = CurlPost("https://www.crunchyroll.com/auth/v1/token", Loc_CR_Cookies, Auth, Post.Replace("etp_rt_cookie", "client_id"), "add_main-4499")
|
||||
If CBool(InStr(v1Token, "curl: (60)")) = True Then
|
||||
SetStatusLabel("Status: Critical error. #3043")
|
||||
MsgBox("Please try the '--insecure' option found on the 'Main' page of the settings.")
|
||||
Exit Sub
|
||||
'ElseIf CBool(InStr(v1Token, "curl:")) Then
|
||||
|
||||
ElseIf CBool(InStr(v1Token, "curl:")) = True Then
|
||||
' Browser.WebView2.CoreWebView2.Navigate(Url)
|
||||
SetStatusLabel("Status: Unknown error. #3050")
|
||||
Exit Sub
|
||||
|
||||
End If
|
||||
|
||||
Dim Token() As String = v1Token.Split(New String() {Chr(34) + "access_token" + Chr(34) + ":" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
Dim Token2() As String = Token(1).Split(New String() {Chr(34) + "," + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
CRBetaBearer = CRBetaBearer + Token2(0)
|
||||
|
||||
Dim RefrehToken() As String = v1Token.Split(New String() {Chr(34) + "refresh_token" + Chr(34) + ":" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
Dim RefrehToken2() As String = RefrehToken(1).Split(New String() {Chr(34) + "," + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
|
||||
Dim TokenUnixTime As Integer
|
||||
TokenUnixTime = CInt((DateTime.UtcNow - New DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds) + 300
|
||||
|
||||
CR_Token = New CR_Tokens(Token2(0), RefrehToken2(0), TokenUnixTime)
|
||||
|
||||
Dim Auth2 As String = " -H " + Chr(34) + "Authorization: " + CRBetaBearer + Chr(34)
|
||||
|
||||
ProcessLoading(Url, Auth2, Loc_CR_Cookies, RT_count)
|
||||
|
||||
End If
|
||||
|
||||
|
||||
|
||||
'MsgBox(v1Token)
|
||||
|
||||
If CBool(InStr(v1Token, "curl:")) = True And CBool(InStr(v1Token, "400")) = True Then
|
||||
SetStatusLabel("Status: Failed - bad request, check CR login")
|
||||
Me.Text = "Status: Failed - bad request, check CR login"
|
||||
Debug.WriteLine("Status: Failed - bad request, check CR login")
|
||||
|
||||
b = True
|
||||
Exit Sub
|
||||
|
||||
ElseIf CBool(InStr(v1Token, "curl:")) = True Then
|
||||
v1Token = CurlPost("https://www.crunchyroll.com/auth/v1/token", Loc_CR_Cookies, Auth, Post, "add_main_4516")
|
||||
End If
|
||||
|
||||
'MsgBox(v1Token)
|
||||
If CBool(InStr(v1Token, "curl: (60)")) = True Then
|
||||
SetStatusLabel("Status: Critical error. #4478")
|
||||
MsgBox("Please try the '--insecure' option found on the 'Main' page of the settings.")
|
||||
Exit Sub
|
||||
'ElseIf CBool(InStr(v1Token, "curl:")) Then
|
||||
|
||||
ElseIf CBool(InStr(v1Token, "curl:")) = True Then
|
||||
Browser.WebView2.CoreWebView2.Navigate(Url)
|
||||
Exit Sub
|
||||
|
||||
End If
|
||||
|
||||
Dim Token() As String = v1Token.Split(New String() {Chr(34) + "access_token" + Chr(34) + ":" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
Dim Token2() As String = Token(1).Split(New String() {Chr(34) + "," + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries)
|
||||
CRBetaBearer = CRBetaBearer + Token2(0)
|
||||
|
||||
Dim Auth2 As String = " -H " + Chr(34) + "Authorization: " + CRBetaBearer + Chr(34)
|
||||
|
||||
ProcessLoading(Url, Auth2, Loc_CR_Cookies, RT_count)
|
||||
|
||||
Else
|
||||
'to do
|
||||
End If
|
||||
@ -3181,7 +3093,7 @@ Public Class Main
|
||||
|
||||
ElseIf CBool(InStr(url, "crunchyroll.com")) = True And CBool(InStr(url, "watch/")) = True And CBool(CrBetaBasic = Nothing) = False And CBool(InStr(url, "/musicvideo/")) = False And CBool(InStr(url, "/concert/")) = False Then
|
||||
#Region "Anime"
|
||||
|
||||
SetStatusLabel("Status: Url match - Anime episode")
|
||||
|
||||
Dim ObjectsUrl As String = Nothing
|
||||
|
||||
@ -3254,7 +3166,7 @@ Public Class Main
|
||||
#End Region
|
||||
ElseIf CBool(InStr(url, "crunchyroll.com")) = True And CBool(InStr(url, "musicvideo/")) = True And CBool(CrBetaBasic = Nothing) = False Then
|
||||
#Region "musik videos"
|
||||
|
||||
SetStatusLabel("Status: Url match - Music video")
|
||||
|
||||
Dim ObjectsUrl As String = Nothing
|
||||
|
||||
@ -3307,6 +3219,8 @@ Public Class Main
|
||||
GetCRVideoProxy(StreamsUrl, Auth2, url, RT_Count)
|
||||
#End Region
|
||||
ElseIf CBool(InStr(url, "crunchyroll.com")) = True And CBool(InStr(url, "concert/")) = True And CBool(CrBetaBasic = Nothing) = False Then
|
||||
#Region "concert"
|
||||
SetStatusLabel("Status: Url match - Concert")
|
||||
|
||||
Dim ObjectsUrl As String = Nothing
|
||||
|
||||
@ -3357,8 +3271,10 @@ Public Class Main
|
||||
|
||||
|
||||
GetCRVideoProxy(StreamsUrl, Auth2, url, RT_Count)
|
||||
#End Region
|
||||
Else
|
||||
Browser.WebView2.CoreWebView2.Navigate(url)
|
||||
|
||||
'Browser.WebView2.CoreWebView2.Navigate(url)
|
||||
End If
|
||||
|
||||
|
||||
@ -3411,9 +3327,9 @@ Public Class Main
|
||||
Sub SetStatusLabel(ByVal txt As String)
|
||||
If Application.OpenForms().OfType(Of Anime_Add).Any = True Then
|
||||
Anime_Add.StatusLabel.Text = txt
|
||||
|
||||
End If
|
||||
|
||||
Me.Text = txt
|
||||
Debug.WriteLine("StatusLabel: " + Date.Now.ToString + " - " + txt)
|
||||
End Sub
|
||||
|
||||
Private Sub SaveThumbnailAsImageToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SaveThumbnailAsImageToolStripMenuItem.Click
|
||||
@ -3430,20 +3346,6 @@ Public Class Main
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub SaveModeToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SaveModeToolStripMenuItem.Click
|
||||
If My.Settings.SaveMode = False Then
|
||||
My.Settings.SaveMode = True
|
||||
MsgBox("SaveMode enabled")
|
||||
My.Settings.Save()
|
||||
|
||||
Else
|
||||
My.Settings.SaveMode = False
|
||||
MsgBox("SaveMode disabled")
|
||||
My.Settings.Save()
|
||||
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub Panel1_Paint(sender As Object, e As PaintEventArgs) Handles Panel1.Paint
|
||||
|
||||
End Sub
|
||||
|
@ -32,6 +32,6 @@ Imports System.Runtime.InteropServices
|
||||
' übernehmen, indem Sie "*" eingeben:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("3.22.2")>
|
||||
<Assembly: AssemblyFileVersion("3.22.2")>
|
||||
<Assembly: AssemblyVersion("3.23")>
|
||||
<Assembly: AssemblyFileVersion("3.23")>
|
||||
<Assembly: NeutralResourcesLanguage("en")>
|
||||
|
@ -486,18 +486,6 @@ Namespace My
|
||||
End Set
|
||||
End Property
|
||||
|
||||
<Global.System.Configuration.UserScopedSettingAttribute(), _
|
||||
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||
Global.System.Configuration.DefaultSettingValueAttribute("False")> _
|
||||
Public Property SaveMode() As Boolean
|
||||
Get
|
||||
Return CType(Me("SaveMode"),Boolean)
|
||||
End Get
|
||||
Set
|
||||
Me("SaveMode") = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
<Global.System.Configuration.UserScopedSettingAttribute(), _
|
||||
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||
Global.System.Configuration.DefaultSettingValueAttribute("0")> _
|
||||
|
@ -110,9 +110,6 @@
|
||||
<Setting Name="SaveThumbnail" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="SaveMode" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="DownloadScope" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
|
Loading…
x
Reference in New Issue
Block a user