From cfb3f41700c6b550a4a922d7393d9c102fec7caa Mon Sep 17 00:00:00 2001 From: hama3254 <52826614+hama3254@users.noreply.github.com> Date: Fri, 15 Dec 2023 16:53:07 +0100 Subject: [PATCH] change api changed the api to another version (yt-dlp) --- .vs/Crunchyroll Downloader/v17/.suo | Bin 200192 -> 224768 bytes Crunchyroll Downloader/Browser.vb | 2 + Crunchyroll Downloader/Main.vb | 197 +++++++++++++--------- Crunchyroll Downloader/einstellungen.resx | 3 - Crunchyroll Downloader/einstellungen.vb | 4 + 5 files changed, 126 insertions(+), 80 deletions(-) diff --git a/.vs/Crunchyroll Downloader/v17/.suo b/.vs/Crunchyroll Downloader/v17/.suo index ab19cca119efd4995dbd40d78626e4810757c154..6a84639a6d476941556cd430ef74473146c3020e 100644 GIT binary patch delta 12552 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 diff --git a/Crunchyroll Downloader/Browser.vb b/Crunchyroll Downloader/Browser.vb index 4bb5e22..a1d49cc 100644 --- a/Crunchyroll Downloader/Browser.vb +++ b/Crunchyroll Downloader/Browser.vb @@ -30,6 +30,8 @@ Public Class Browser ' 'WebView2.CoreWebView2.Settings.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko" My.Settings.User_Agend = Chr(34) + "User-Agent: " + WebView2.CoreWebView2.Settings.UserAgent + Chr(34) + 'My.Settings.User_Agend = Chr(34) + "User-Agent: " + "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0" + Chr(34) + 'MsgBox(My.Settings.User_Agend) If WebView2.CoreWebView2.Source = "about:blank" Or WebView2.CoreWebView2.Source = Nothing Then diff --git a/Crunchyroll Downloader/Main.vb b/Crunchyroll Downloader/Main.vb index 68b8f36..b616a21 100644 --- a/Crunchyroll Downloader/Main.vb +++ b/Crunchyroll Downloader/Main.vb @@ -126,7 +126,7 @@ Public Class Main Public LangValueEnum As New List(Of NameValuePair) Public DubSprache As NameValuePair = New NameValuePair("Japanese", "jpn", "ja-JP", Nothing) - Public SubSprache As NameValuePair = New NameValuePair("[ null ]", "", "", Nothing) + Public SubSprache As NameValuePair = New NameValuePair("[ null ]", "", "null", Nothing) Public SoftSubs As New List(Of String) Public IncludeLangName As Boolean = False @@ -977,8 +977,9 @@ Public Class Main Dim CR_Anime_Staffel_int As String = Nothing Dim CR_episode_int As String = Nothing Dim CR_title As String = Nothing - Dim CR_audio_locale As String = Nothing + Dim CR_audio_locale As String = "ja-JP" Dim CR_audio_isDubbed As Boolean = False + Dim CR_Region As String = "DE" Dim ResoUsed As String = "x" + Reso.ToString Dim ffmpegInput As String = "-i [Subtitles only]" @@ -1097,6 +1098,8 @@ Public Class Main 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 "eligible_region" + ' CR_Region = SubEntry.Value.ToString.Replace(Chr(34), "").Replace("\", "").Replace("/", "").Replace(":", "") End Select Next ' End Select @@ -1108,11 +1111,39 @@ Public Class Main End If #Region "VideoJson" + + Dim cms As String = CurlAuthNew("https://www.crunchyroll.com/index/v2", Loc_CR_Cookies, Loc_AuthToken) + + Dim cms_web() As String = cms.Split(New String() {Chr(34) + "cms_web" + Chr(34) + ":"}, System.StringSplitOptions.RemoveEmptyEntries) + + Dim bucket1() As String = cms_web(1).Split(New String() {Chr(34) + "bucket" + Chr(34) + ":" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries) + Dim bucket2() As String = bucket1(1).Split(New String() {Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries) + Dim bucket As String = bucket2(0) + + Dim policy1() As String = cms_web(1).Split(New String() {Chr(34) + "policy" + Chr(34) + ":" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries) + Dim policy2() As String = policy1(1).Split(New String() {Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries) + Dim policy As String = policy2(0) + + Dim signature1() As String = cms_web(1).Split(New String() {Chr(34) + "signature" + Chr(34) + ":" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries) + Dim signature2() As String = signature1(1).Split(New String() {Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries) + Dim signature As String = signature2(0) + + Dim key_pair_id1() As String = cms_web(1).Split(New String() {Chr(34) + "key_pair_id" + Chr(34) + ":" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries) + Dim key_pair_id2() As String = key_pair_id1(1).Split(New String() {Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries) + Dim key_pair_id As String = key_pair_id2(0) + + 'key_pair_id + 'cms_web + Dim Videos1() As String = Streams.Split(New String() {"v2/cms"}, System.StringSplitOptions.RemoveEmptyEntries) + Dim Videos2() As String = Videos1(1).Split(New String() {"streams"}, System.StringSplitOptions.RemoveEmptyEntries) + Dim Videos As String = Videos2(0) + Dim VideoJson As String = Nothing + Dim StreamUrl As String = "https://www.crunchyroll.com/cms/v2" + bucket + Videos + "streams?Policy=" + policy + "&Signature=" + signature + "&Key-Pair-Id=" + key_pair_id - VideoJson = CurlAuthNew(Streams, Loc_CR_Cookies, Loc_AuthToken) - + VideoJson = CurlAuthNew(StreamUrl, Loc_CR_Cookies, Loc_AuthToken) 'Curl(StreamUrl) ' + 'VideoJson = CurlAuthNew(Streams, Loc_CR_Cookies, Loc_AuthToken) Debug.WriteLine("VideoJson: " + VideoJson) Debug.WriteLine("VideoStreams: " + Streams) @@ -1125,45 +1156,45 @@ Public Class Main #Region "Check for dub override" - If My.Settings.OverrideDub = True And CBool(InStr(Streams, "/videos/")) Then 'einstellung ein + kein musikvideo oder Konzert + 'If My.Settings.OverrideDub = True And CBool(InStr(Streams, "/videos/")) Then 'einstellung ein + kein musikvideo oder Konzert - Dim Meta() As String = VideoJson.Split(New String() {Chr(34) + "meta" + Chr(34) + ":"}, System.StringSplitOptions.RemoveEmptyEntries) - Dim Meta2() As String = Meta(1).Split(New String() {Chr(34) + "audio_locale" + Chr(34) + ":" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries) + ' Dim Meta() As String = VideoJson.Split(New String() {Chr(34) + "meta" + Chr(34) + ":"}, System.StringSplitOptions.RemoveEmptyEntries) + ' Dim Meta2() As String = Meta(1).Split(New String() {Chr(34) + "audio_locale" + Chr(34) + ":" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries) - 'MsgBox(DubSprache.CR_Value) + ' 'MsgBox(DubSprache.CR_Value) - For i As Integer = 0 To Meta2.Count - 1 + ' For i As Integer = 0 To Meta2.Count - 1 - If CBool(InStr(Meta2(i), Chr(34) + "media_guid" + Chr(34) + ":" + Chr(34))) And CBool(InStr(Meta2(i), DubSprache.CR_Value)) Then + ' If CBool(InStr(Meta2(i), Chr(34) + "media_guid" + Chr(34) + ":" + Chr(34))) And CBool(InStr(Meta2(i), DubSprache.CR_Value)) Then - Dim media_guid() As String = Meta2(i).Split(New String() {Chr(34) + "media_guid" + Chr(34) + ":" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries) + ' Dim media_guid() As String = Meta2(i).Split(New String() {Chr(34) + "media_guid" + Chr(34) + ":" + Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries) - Dim media_guid2() As String = media_guid(1).Split(New String() {Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries) + ' Dim media_guid2() As String = media_guid(1).Split(New String() {Chr(34)}, System.StringSplitOptions.RemoveEmptyEntries) - If CBool(InStr(Streams, media_guid2(0))) Then - 'MsgBox("done") - 'done - Exit For - Else - ' overriding ' https://www.crunchyroll.com/content/v2/cms/videos/GPPFKG08N/streams?locale=de-DE + ' If CBool(InStr(Streams, media_guid2(0))) Then + ' 'MsgBox("done") + ' 'done + ' Exit For + ' Else + ' ' overriding ' https://www.crunchyroll.com/content/v2/cms/videos/GPPFKG08N/streams?locale=de-DE - Streams = "https://www.crunchyroll.com/content/v2/cms/videos/" + media_guid2(0) + "/streams?locale=" + locale + ' Streams = "https://www.crunchyroll.com/content/v2/cms/videos/" + media_guid2(0) + "/streams?locale=" + locale - 'MsgBox(Streams) + ' 'MsgBox(Streams) - VideoJson = CurlAuthNew(Streams, Loc_CR_Cookies, Loc_AuthToken) + ' VideoJson = CurlAuthNew(Streams, Loc_CR_Cookies, Loc_AuthToken) - End If + ' End If - End If - Next + ' End If + ' Next - End If + 'End If #End Region @@ -1180,66 +1211,75 @@ Public Class Main For Each item As JProperty In VideoData item.CreateReader() Select Case item.Name - Case "data" 'each record is inside the entries array - For Each Entry As JObject In item.Values + Case "streams" 'each record is inside the entries array + For Each Entry As JProperty In item.Values - Dim VideoSubData As List(Of JToken) = Entry.Children().ToList - For Each VideoSubItem As JProperty In VideoSubData - - Dim JsonEntryFormat As String = VideoSubItem.Name - If CBool(InStr(JsonEntryFormat, "drm")) Or CBool(InStr(JsonEntryFormat, "dash")) Or CBool(InStr(JsonEntryFormat, "urls")) Then ' Or CBool(InStr(JsonEntryFormat, "download")) workaround http 502 / false http 400 - Continue For - End If - - Dim SubData As List(Of JToken) = VideoSubItem.Children().ToList - For Each SubItem As JObject In SubData - SubItem.CreateReader() - - Dim StreamFormats As List(Of JToken) = SubItem.Children().ToList - - - For Each HardsubStreams As JProperty In StreamFormats - HardsubStreams.CreateReader() - Dim SubLang As String = HardsubStreams.Name - Dim Url As String = HardsubStreams.Value("url").ToString - If SubLang = Nothing Or SubLang = "" Then - SubLang = "" - End If - - If CBool(InStr(JsonEntryFormat, "download")) Then - download_hls = New CR_Beta_Stream(SubLang, JsonEntryFormat, Url) - Continue For - End If - - CR_Streams.Add(New CR_Beta_Stream(SubLang, JsonEntryFormat, Url)) - - Next - Next - - - Next - If download_hls IsNot Nothing Then - CR_Streams.Add(download_hls) + Dim JsonEntryFormat As String = Entry.Name + If CBool(InStr(Entry.Name, "drm")) Or CBool(InStr(Entry.Name, "dash")) Or CBool(InStr(Entry.Name, "download")) Then + Continue For End If - Next - Case "meta" 'each record is inside the entries array - For Each MetaEntrys As JProperty In item.Values - Select Case MetaEntrys.Name - Case "audio_locale" - If CR_audio_isDubbed = True Then - Dim AudioTag As String = MetaEntrys.Value.ToString - CR_audio_locale = String.Join(" ", AudioTag.Split(invalids, StringSplitOptions.RemoveEmptyEntries)).TrimEnd("."c).Replace(Chr(34), "").Replace("\", "").Replace("/", "").Replace(":", "") - Else - CR_audio_locale = "ja-JP" + + + + + Dim SubData As List(Of JToken) = Entry.Children().ToList + For Each SubItem As JObject In SubData + SubItem.CreateReader() + + Dim StreamFormats As List(Of JToken) = SubItem.Children().ToList + + + For Each Formats As JProperty In StreamFormats + Formats.CreateReader() + Dim SubLang As String = Formats.Name + If SubLang = Nothing Or SubLang = "" Then + SubLang = "null" End If - End Select + Dim Url As String = CStr(Formats.Value("url")) + + If CBool(InStr(JsonEntryFormat, "download")) Then + download_hls = New CR_Beta_Stream(SubLang, JsonEntryFormat, Url) + Continue For + End If + + CR_Streams.Add(New CR_Beta_Stream(SubLang, JsonEntryFormat, Url)) + + + Next + Next Next + 'Case "meta" 'each record is inside the entries array + ' For Each MetaEntrys As JProperty In item.Values + ' Select Case MetaEntrys.Name + ' Case "audio_locale" + ' If CR_audio_isDubbed = True Then + ' Dim AudioTag As String = MetaEntrys.Value.ToString + ' CR_audio_locale = String.Join(" ", AudioTag.Split(invalids, StringSplitOptions.RemoveEmptyEntries)).TrimEnd("."c).Replace(Chr(34), "").Replace("\", "").Replace("/", "").Replace(":", "") + ' Else + ' CR_audio_locale = "ja-JP" + ' End If + ' End Select + + ' Next + Case "audio_locale" 'each record is inside the entries array + 'MsgBox(item.Value) + If CR_audio_isDubbed = True Then + Dim AudioTag As String = CStr(item.Value) + CR_audio_locale = String.Join(" ", AudioTag.Split(invalids, StringSplitOptions.RemoveEmptyEntries)).TrimEnd("."c).Replace(Chr(34), "").Replace("\", "").Replace("/", "").Replace(":", "") + Else + CR_audio_locale = "ja-JP" + End If End Select Next + + 'MsgBox(CR_Streams.Count.ToString) + + MsgBox(CR_HardSubLang) + Dim CR_URI_Master As New List(Of String) @@ -1447,7 +1487,7 @@ Public Class Main #Region "Chapters" Dim Mdata_File As String = Application.StartupPath + "\" + CR_EpisodeID + "-mdata.txt" - + Debug.WriteLine("Checking chapters") If CR_EpisodeID = "" Then 'ignore for music video Else @@ -1535,6 +1575,7 @@ Public Class Main End If End If End If + Debug.WriteLine("Checking chapters ended") #End Region @@ -4301,7 +4342,7 @@ Public Class Main Sub FillArray() ' - LangValueEnum.Add(New NameValuePair("[ null ]", "", "", Nothing)) + LangValueEnum.Add(New NameValuePair("[ null ]", "", "null", Nothing)) LangValueEnum.Add(New NameValuePair("Deutsch", "ger", "de-DE", Nothing)) ' @@ -4878,6 +4919,8 @@ Public Class Main End Function)) End Sub + + #End Region End Class diff --git a/Crunchyroll Downloader/einstellungen.resx b/Crunchyroll Downloader/einstellungen.resx index f49b9b4..e809bf5 100644 --- a/Crunchyroll Downloader/einstellungen.resx +++ b/Crunchyroll Downloader/einstellungen.resx @@ -126,9 +126,6 @@ 118, 20 - - 118, 20 - 332, 20 diff --git a/Crunchyroll Downloader/einstellungen.vb b/Crunchyroll Downloader/einstellungen.vb index 643cfe7..8b785de 100644 --- a/Crunchyroll Downloader/einstellungen.vb +++ b/Crunchyroll Downloader/einstellungen.vb @@ -939,6 +939,9 @@ Public Class Einstellungen GroupBox18.ForeColor = color GroupBox19.ForeColor = color GroupBox20.ForeColor = color + GroupBox21.ForeColor = color + GroupBox22.ForeColor = color + GroupBox23.ForeColor = color End Sub @@ -1255,6 +1258,7 @@ Public Class Einstellungen + 'Private Sub CB_CR_Audio_Click(sender As Object, e As EventArgs) Handles CB_CR_Audio.Click ' Dim Popup As New CheckBoxComboBox ' Popup.Text = "CR Dub selection"