From 5cfc28a527ca477abfc2414ba4a2612d743352e0 Mon Sep 17 00:00:00 2001 From: Emilien Devos <4016501+unixfox@users.noreply.github.com> Date: Wed, 14 Aug 2024 19:43:21 +0200 Subject: [PATCH] remove patch PR 4789 --- patches/022-4789.patch | 123 ----------------------------------------- 1 file changed, 123 deletions(-) delete mode 100644 patches/022-4789.patch diff --git a/patches/022-4789.patch b/patches/022-4789.patch deleted file mode 100644 index 4cbe36b..0000000 --- a/patches/022-4789.patch +++ /dev/null @@ -1,123 +0,0 @@ -From 53223f99b03ac1a51cb35f7c33d4939083dc6f1a Mon Sep 17 00:00:00 2001 -From: Emilien Devos <4016501+unixfox@users.noreply.github.com> -Date: Wed, 24 Jul 2024 19:28:47 +0200 -Subject: [PATCH] Add ability to set po_token and visitordata ID - ---- - config/config.example.yml | 12 ++++++++++++ - src/invidious/config.cr | 5 +++++ - src/invidious/videos/parser.cr | 11 ++++++++--- - src/invidious/yt_backend/youtube_api.cr | 11 +++++++++++ - 4 files changed, 36 insertions(+), 3 deletions(-) - -diff --git a/config/config.example.yml b/config/config.example.yml -index 38085a20b..f666405e3 100644 ---- a/config/config.example.yml -+++ b/config/config.example.yml -@@ -173,6 +173,18 @@ https_only: false - ## - # use_innertube_for_captions: false - -+## -+## Send Google session informations. This is useful when Invidious is blocked -+## by the message "This helps protect our community." -+## See https://github.com/iv-org/invidious/issues/4734. -+## -+## Warning: These strings gives much more identifiable information to Google! -+## -+## Accepted values: String -+## Default: -+## -+# po_token: "" -+# visitor_data: "" - - # ----------------------------- - # Logging -diff --git a/src/invidious/config.cr b/src/invidious/config.cr -index 09c2168b8..5340d4f5a 100644 ---- a/src/invidious/config.cr -+++ b/src/invidious/config.cr -@@ -130,6 +130,11 @@ class Config - # Use Innertube's transcripts API instead of timedtext for closed captions - property use_innertube_for_captions : Bool = false - -+ # visitor data ID for Google session -+ property visitor_data : String? = nil -+ # poToken for passing bot attestation -+ property po_token : String? = nil -+ - # Saved cookies in "name1=value1; name2=value2..." format - @[YAML::Field(converter: Preferences::StringToCookies)] - property cookies : HTTP::Cookies = HTTP::Cookies.new -diff --git a/src/invidious/videos/parser.cr b/src/invidious/videos/parser.cr -index 4bdb25122..95fa3d799 100644 ---- a/src/invidious/videos/parser.cr -+++ b/src/invidious/videos/parser.cr -@@ -55,7 +55,7 @@ def extract_video_info(video_id : String) - client_config = YoutubeAPI::ClientConfig.new - - # Fetch data from the player endpoint -- player_response = YoutubeAPI.player(video_id: video_id, params: "", client_config: client_config) -+ player_response = YoutubeAPI.player(video_id: video_id, params: "2AMB", client_config: client_config) - - playability_status = player_response.dig?("playabilityStatus", "status").try &.as_s - -@@ -102,7 +102,9 @@ def extract_video_info(video_id : String) - - new_player_response = nil - -- if reason.nil? -+ # Don't use Android client if po_token is passed because po_token doesn't -+ # work for Android client. -+ if reason.nil? && CONFIG.po_token.nil? - # Fetch the video streams using an Android client in order to get the - # decrypted URLs and maybe fix throttling issues (#2194). See the - # following issue for an explanation about decrypted URLs: -@@ -112,7 +114,10 @@ def extract_video_info(video_id : String) - end - - # Last hope -- if new_player_response.nil? -+ # Only trigger if reason found and po_token or didn't work wth Android client. -+ # TvHtml5ScreenEmbed now requires sig helper for it to work but po_token is not required -+ # if the IP address is not blocked. -+ if CONFIG.po_token && reason || CONFIG.po_token.nil? && new_player_response.nil? - client_config.client_type = YoutubeAPI::ClientType::TvHtml5ScreenEmbed - new_player_response = try_fetch_streaming_data(video_id, client_config) - end -diff --git a/src/invidious/yt_backend/youtube_api.cr b/src/invidious/yt_backend/youtube_api.cr -index c8b037c8c..0efbe949b 100644 ---- a/src/invidious/yt_backend/youtube_api.cr -+++ b/src/invidious/yt_backend/youtube_api.cr -@@ -320,6 +320,10 @@ module YoutubeAPI - client_context["client"]["platform"] = platform - end - -+ if CONFIG.visitor_data.is_a?(String) -+ client_context["client"]["visitorData"] = CONFIG.visitor_data.as(String) -+ end -+ - return client_context - end - -@@ -467,6 +471,9 @@ module YoutubeAPI - "html5Preference": "HTML5_PREF_WANTS", - }, - }, -+ "serviceIntegrityDimensions" => { -+ "poToken" => CONFIG.po_token, -+ }, - } - - # Append the additional parameters if those were provided -@@ -599,6 +606,10 @@ module YoutubeAPI - headers["User-Agent"] = user_agent - end - -+ if CONFIG.visitor_data.is_a?(String) -+ headers["X-Goog-Visitor-Id"] = CONFIG.visitor_data.as(String) -+ end -+ - # Logging - LOGGER.debug("YoutubeAPI: Using endpoint: \"#{endpoint}\"") - LOGGER.trace("YoutubeAPI: ClientConfig: #{client_config}")