From 91096532eedf396920d69932638f667cbf850cbe Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Thu, 28 Sep 2023 04:47:40 +0200 Subject: [PATCH] feat(YouTube): Add `Bypass URL redirects` patch --- .../patches/BypassURLRedirectsPatch.java | 29 +++++++++++++++++++ .../integrations/settings/SettingsEnum.java | 1 + 2 files changed, 30 insertions(+) create mode 100644 app/src/main/java/app/revanced/integrations/patches/BypassURLRedirectsPatch.java diff --git a/app/src/main/java/app/revanced/integrations/patches/BypassURLRedirectsPatch.java b/app/src/main/java/app/revanced/integrations/patches/BypassURLRedirectsPatch.java new file mode 100644 index 00000000..dd062e03 --- /dev/null +++ b/app/src/main/java/app/revanced/integrations/patches/BypassURLRedirectsPatch.java @@ -0,0 +1,29 @@ +package app.revanced.integrations.patches; + +import android.net.Uri; +import app.revanced.integrations.settings.SettingsEnum; +import app.revanced.integrations.utils.LogHelper; + +public class BypassURLRedirectsPatch { + private static final String YOUTUBE_REDIRECT_PATH = "/redirect"; + + /** + * Convert the YouTube redirect URI string to the redirect query URI. + * + * @param uri The YouTube redirect URI string. + * @return The redirect query URI. + */ + public static Uri parseRedirectUri(String uri) { + final var parsed = Uri.parse(uri); + + if (SettingsEnum.BYPASS_URL_REDIRECTS.getBoolean() && parsed.getPath().equals(YOUTUBE_REDIRECT_PATH)) { + var query = Uri.parse(Uri.decode(parsed.getQueryParameter("q"))); + + LogHelper.printDebug(() -> "Bypassing YouTube redirect URI: " + query); + + return query; + } + + return parsed; + } +} diff --git a/app/src/main/java/app/revanced/integrations/settings/SettingsEnum.java b/app/src/main/java/app/revanced/integrations/settings/SettingsEnum.java index 3ab42ddd..699abe4d 100644 --- a/app/src/main/java/app/revanced/integrations/settings/SettingsEnum.java +++ b/app/src/main/java/app/revanced/integrations/settings/SettingsEnum.java @@ -169,6 +169,7 @@ public enum SettingsEnum { "revanced_spoof_signature_verification_enabled_user_dialog_message"), SPOOF_SIGNATURE_IN_FEED("revanced_spoof_signature_in_feed_enabled", BOOLEAN, FALSE, false, parents(SPOOF_SIGNATURE)), + BYPASS_URL_REDIRECTS("revanced_bypass_url_redirects", BOOLEAN, TRUE), // Swipe controls SWIPE_BRIGHTNESS("revanced_swipe_brightness", BOOLEAN, TRUE),