feat(YouTube): Add support for 20.45.36

Co-authored-by: LisoUseInAIKyrios <118716522+lisouseinaikyrios@users.noreply.github.com>
This commit is contained in:
oSumAtrIX 2026-03-21 20:00:24 +01:00
parent 467a62f4ac
commit 14a16efa0f
No known key found for this signature in database
GPG key ID: A9B3094ACDB604B4
63 changed files with 123 additions and 63 deletions

View file

@ -28,7 +28,7 @@ public enum ClientType {
Build.VERSION.RELEASE, Build.VERSION.RELEASE,
String.valueOf(Build.VERSION.SDK_INT), String.valueOf(Build.VERSION.SDK_INT),
Build.ID, Build.ID,
"20.44.38", "20.45.36",
// This client has been used by most open-source YouTube stream extraction tools since 2024, including NewPipe Extractor, SmartTube, and Grayjay. // This client has been used by most open-source YouTube stream extraction tools since 2024, including NewPipe Extractor, SmartTube, and Grayjay.
// This client can log in, but if an access token is used in the request, GVS can more easily identify the request as coming from ReVanced. // This client can log in, but if an access token is used in the request, GVS can more easily identify the request as coming from ReVanced.
// This means that the GVS server can strengthen its validation of the ANDROID_REEL client. // This means that the GVS server can strengthen its validation of the ANDROID_REEL client.

View file

@ -97,7 +97,8 @@ val hideAdsPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -35,7 +35,8 @@ val videoAdsPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -59,7 +59,8 @@ val copyVideoURLPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -46,7 +46,8 @@ val removeViewerDiscretionDialogPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -23,7 +23,8 @@ val addMoreDoubleTapToSeekLengthOptionsPatch = resourcePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
) )
) )

View file

@ -38,7 +38,8 @@ val disableDoubleTapActionsPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -81,7 +81,8 @@ val downloadsPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -59,7 +59,8 @@ val disableHapticFeedbackPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -24,7 +24,8 @@ val seekbarPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )
} }

View file

@ -110,7 +110,8 @@ val swipeControlsPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -32,7 +32,8 @@ val disableAutoCaptionsPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -32,7 +32,8 @@ val customBrandingPatch = baseCustomBrandingPatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )
}, },

View file

@ -87,7 +87,8 @@ val changeHeaderPatch = changeHeaderPatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
) )
), ),
variants = variants, variants = variants,

View file

@ -34,7 +34,8 @@ val hideVideoActionButtonsPatch = resourcePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -70,7 +70,8 @@ val overrideOpenInYouTubeMusicButtonPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -61,7 +61,8 @@ val navigationBarPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -44,7 +44,8 @@ val hidePlayerOverlayButtonsPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -42,7 +42,8 @@ val changeFormFactorPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -40,7 +40,8 @@ val hideAutoplayPreviewPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
) )
) )

View file

@ -69,7 +69,8 @@ val hideEndScreenCardsPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -36,7 +36,8 @@ val hideEndScreenSuggestedVideoPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -36,7 +36,8 @@ val disableFullscreenAmbientModePatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -106,7 +106,8 @@ val hideLayoutComponentsPatch = hideLayoutComponentsPatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
), ),
) { ) {

View file

@ -53,7 +53,8 @@ val hideInfoCardsPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -31,7 +31,8 @@ val hidePlayerFlyoutMenuItemsPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -32,7 +32,8 @@ val disablePlayerPopupPanelsPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -36,7 +36,8 @@ val hideRelatedVideoOverlayPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -36,7 +36,8 @@ val disableRollingNumberAnimationsPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -167,7 +167,8 @@ val hideShortsComponentsPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -33,7 +33,8 @@ val disableSignInToTVPopupPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -31,7 +31,8 @@ val hideTimestampPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -83,7 +83,8 @@ val miniplayerPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -28,7 +28,8 @@ val exitFullscreenPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -28,7 +28,8 @@ val openVideosFullscreenPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -34,7 +34,8 @@ val customPlayerOverlayOpacityPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -68,7 +68,8 @@ val returnYouTubeDislikePatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -57,7 +57,8 @@ val shortsAutoplayPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -58,7 +58,8 @@ val openShortsInRegularPlayerPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -44,7 +44,8 @@ val disableResumingShortsOnStartupPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -135,7 +135,8 @@ val sponsorBlockPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -43,7 +43,8 @@ val spoofAppVersionPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -37,7 +37,8 @@ val changeStartPagePatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -199,7 +199,8 @@ val themePatch = baseThemePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )
}, },

View file

@ -40,7 +40,8 @@ val alternativeThumbnailsPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -34,7 +34,8 @@ val bypassImageRegionRestrictionsPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -30,7 +30,8 @@ val announcementsPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -33,7 +33,8 @@ val pauseOnAudioInterruptPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -51,7 +51,8 @@ val removeBackgroundPlaybackRestrictionsPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -25,7 +25,8 @@ val enableDebuggingPatch = enableDebuggingPatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
) )
) )
}, },

View file

@ -33,7 +33,8 @@ val spoofDeviceDimensionsPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -19,7 +19,8 @@ val checkWatchHistoryDomainNameResolutionPatch = checkWatchHistoryDomainNameReso
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )
}, },

View file

@ -42,7 +42,8 @@ val gmsCoreSupportPatch = gmsCoreSupportPatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )
} }

View file

@ -36,7 +36,8 @@ val bypassURLRedirectsPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -48,7 +48,8 @@ val openLinksExternallyPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -37,7 +37,8 @@ val loopVideoPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -21,7 +21,8 @@ val sanitizeSharingLinksPatch = sanitizeSharingLinksPatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
) )
) )
}, },

View file

@ -39,7 +39,8 @@ val spoofVideoStreamsPatch = spoofVideoStreamsPatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -48,7 +48,6 @@ internal val BytecodePatchContext.backgroundPlaybackManagerShortsMethod by getti
} }
internal fun BytecodePatchContext.getEngagementPanelControllerMethodMatch() = firstMethodComposite { internal fun BytecodePatchContext.getEngagementPanelControllerMethodMatch() = firstMethodComposite {
accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL)
returnType("L") returnType("L")
parameterTypes("L", "L", "Z", "Z") parameterTypes("L", "L", "Z", "Z")
instructions( instructions(

View file

@ -26,7 +26,8 @@ val forceOriginalAudioPatch = forceOriginalAudioPatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )
}, },

View file

@ -62,7 +62,8 @@ val disableVideoCodecsPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -33,7 +33,8 @@ val videoQualityPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
), ),
) )

View file

@ -34,7 +34,8 @@ val playbackSpeedPatch = bytecodePatch(
"20.31.42", "20.31.42",
"20.37.48", "20.37.48",
"20.40.45", "20.40.45",
"20.44.38" "20.44.38",
"20.45.36"
) )
) )