diff --git a/src/main/kotlin/app/revanced/patches/youtube/overlaybutton/general/patch/OverlayButtonsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/overlaybutton/general/patch/OverlayButtonsPatch.kt index c17624eac..a9196d9f6 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/overlaybutton/general/patch/OverlayButtonsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/overlaybutton/general/patch/OverlayButtonsPatch.kt @@ -16,7 +16,7 @@ import app.revanced.patches.youtube.utils.overridespeed.patch.OverrideSpeedHookP import app.revanced.patches.youtube.utils.playercontrols.patch.PlayerControlsPatch import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch import app.revanced.patches.youtube.utils.settings.resource.patch.SettingsPatch -import app.revanced.patches.youtube.utils.videoid.mainstream.patch.MainstreamVideoIdPatch +import app.revanced.patches.youtube.utils.videoid.general.patch.VideoIdPatch import app.revanced.util.integrations.Constants.BUTTON_PATH import app.revanced.util.resources.ResourceUtils import app.revanced.util.resources.ResourceUtils.copyResources @@ -29,11 +29,11 @@ import org.w3c.dom.Element @DependsOn( [ AutoRepeatPatch::class, - MainstreamVideoIdPatch::class, OverrideSpeedHookPatch::class, PlayerControlsPatch::class, SettingsPatch::class, - SharedResourceIdPatch::class + SharedResourceIdPatch::class, + VideoIdPatch::class ] ) @YouTubeCompatibility diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/parameter/patch/SpoofPlayerParameterPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/parameter/patch/SpoofPlayerParameterPatch.kt index a6fbdb301..100207835 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/parameter/patch/SpoofPlayerParameterPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/parameter/patch/SpoofPlayerParameterPatch.kt @@ -19,15 +19,15 @@ import app.revanced.patches.youtube.utils.fix.parameter.fingerprints.ProtobufPar import app.revanced.patches.youtube.utils.fix.parameter.fingerprints.SubtitleWindowFingerprint import app.revanced.patches.youtube.utils.playertype.patch.PlayerTypeHookPatch import app.revanced.patches.youtube.utils.settings.resource.patch.SettingsPatch -import app.revanced.patches.youtube.utils.videoid.mainstream.patch.MainstreamVideoIdPatch +import app.revanced.patches.youtube.utils.videoid.general.patch.VideoIdPatch import app.revanced.util.integrations.Constants.MISC_PATH @Name("spoof-player-parameters") @Description("Spoofs player parameters to prevent playback issues.") @DependsOn( [ - MainstreamVideoIdPatch::class, - PlayerTypeHookPatch::class + PlayerTypeHookPatch::class, + VideoIdPatch::class ] ) @YouTubeCompatibility @@ -53,7 +53,7 @@ class SpoofPlayerParameterPatch : BytecodePatch( addInstructions( 0, """ - invoke-static {p$protobufParam}, $MISC_PATH/SpoofPlayerParameterPatch;->overridePlayerParameter(Ljava/lang/String;)Ljava/lang/String; + invoke-static {p$protobufParam}, $INTEGRATIONS_CLASS_DESCRIPTOR->overridePlayerParameter(Ljava/lang/String;)Ljava/lang/String; move-result-object p$protobufParam """ ) @@ -63,14 +63,14 @@ class SpoofPlayerParameterPatch : BytecodePatch( // hook video playback result BadResponseFingerprint.result?.mutableMethod?.addInstruction( 0, - "invoke-static {}, $MISC_PATH/SpoofPlayerParameterPatch;->switchPlayerParameters()V" + "invoke-static {}, $INTEGRATIONS_CLASS_DESCRIPTOR->switchPlayerParameters()V" ) ?: return BadResponseFingerprint.toErrorResult() // fix protobuf spoof side issue SubtitleWindowFingerprint.result?.mutableMethod?.addInstructions( 0, """ - invoke-static {p1, p2, p3, p4, p5}, $MISC_PATH/SpoofPlayerParameterPatch;->getSubtitleWindowSettingsOverride(IIIZZ)[I + invoke-static {p1, p2, p3, p4, p5}, $INTEGRATIONS_CLASS_DESCRIPTOR->getSubtitleWindowSettingsOverride(IIIZZ)[I move-result-object v0 const/4 v1, 0x0 aget p1, v0, v1 # ap, anchor position @@ -82,7 +82,7 @@ class SpoofPlayerParameterPatch : BytecodePatch( ) ?: return SubtitleWindowFingerprint.toErrorResult() // Hook video id, required for subtitle fix. - MainstreamVideoIdPatch.injectCall("$MISC_PATH/SpoofPlayerParameterPatch;->setCurrentVideoId(Ljava/lang/String;)V") + VideoIdPatch.injectCall("$MISC_PATH/SpoofPlayerParameterPatch;->setCurrentVideoId(Ljava/lang/String;)V") /** * Add settings @@ -95,4 +95,8 @@ class SpoofPlayerParameterPatch : BytecodePatch( return PatchResultSuccess() } + private companion object { + const val INTEGRATIONS_CLASS_DESCRIPTOR = + "$MISC_PATH/SpoofPlayerParameterPatch;" + } } diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/returnyoutubedislike/general/patch/ReturnYouTubeDislikePatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/returnyoutubedislike/general/patch/ReturnYouTubeDislikePatch.kt index 86074c6d9..a0d11859d 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/returnyoutubedislike/general/patch/ReturnYouTubeDislikePatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/returnyoutubedislike/general/patch/ReturnYouTubeDislikePatch.kt @@ -26,7 +26,7 @@ import app.revanced.patches.youtube.utils.returnyoutubedislike.general.fingerpri import app.revanced.patches.youtube.utils.returnyoutubedislike.oldlayout.patch.ReturnYouTubeDislikeOldLayoutPatch import app.revanced.patches.youtube.utils.returnyoutubedislike.shorts.patch.ReturnYouTubeDislikeShortsPatch import app.revanced.patches.youtube.utils.settings.resource.patch.SettingsPatch -import app.revanced.patches.youtube.utils.videoid.mainstream.patch.MainstreamVideoIdPatch +import app.revanced.patches.youtube.utils.videoid.general.patch.VideoIdPatch import app.revanced.util.integrations.Constants.UTILS_PATH import org.jf.dexlib2.iface.instruction.FiveRegisterInstruction import org.jf.dexlib2.iface.instruction.ReferenceInstruction @@ -38,10 +38,10 @@ import org.jf.dexlib2.iface.reference.Reference @Description("Shows the dislike count of videos using the Return YouTube Dislike API.") @DependsOn( [ - MainstreamVideoIdPatch::class, ReturnYouTubeDislikeOldLayoutPatch::class, ReturnYouTubeDislikeShortsPatch::class, - SettingsPatch::class + SettingsPatch::class, + VideoIdPatch::class ] ) @YouTubeCompatibility @@ -134,7 +134,7 @@ class ReturnYouTubeDislikePatch : BytecodePatch( } ?: return TextComponentConstructorFingerprint.toErrorResult() - MainstreamVideoIdPatch.injectCall("$INTEGRATIONS_RYD_CLASS_DESCRIPTOR->newVideoLoaded(Ljava/lang/String;)V") + VideoIdPatch.injectCall("$INTEGRATIONS_RYD_CLASS_DESCRIPTOR->newVideoLoaded(Ljava/lang/String;)V") /** * Add ReVanced Settings diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/sponsorblock/bytecode/patch/SponsorBlockBytecodePatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/sponsorblock/bytecode/patch/SponsorBlockBytecodePatch.kt index a3ce8db8c..9305ebea5 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/sponsorblock/bytecode/patch/SponsorBlockBytecodePatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/sponsorblock/bytecode/patch/SponsorBlockBytecodePatch.kt @@ -27,8 +27,8 @@ import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch import app.revanced.patches.youtube.utils.sponsorblock.bytecode.fingerprints.EndScreenEngagementPanelsFingerprint import app.revanced.patches.youtube.utils.sponsorblock.bytecode.fingerprints.PlayerControllerFingerprint import app.revanced.patches.youtube.utils.sponsorblock.bytecode.fingerprints.RectangleFieldInvalidatorFingerprint -import app.revanced.patches.youtube.utils.videoid.legacy.patch.LegacyVideoIdPatch -import app.revanced.patches.youtube.utils.videoid.mainstream.patch.MainstreamVideoIdPatch +import app.revanced.patches.youtube.utils.videoid.general.patch.VideoIdPatch +import app.revanced.patches.youtube.utils.videoid.withoutshorts.patch.VideoIdWithoutShortsPatch import app.revanced.util.bytecode.BytecodeHelper.injectInit import app.revanced.util.bytecode.BytecodeHelper.updatePatchStatus import app.revanced.util.bytecode.getWideLiteralIndex @@ -45,11 +45,11 @@ import org.jf.dexlib2.iface.reference.MethodReference @Name("sponsorblock-bytecode-patch") @DependsOn( [ - LegacyVideoIdPatch::class, - MainstreamVideoIdPatch::class, OverrideSpeedHookPatch::class, PlayerControlsPatch::class, - SharedResourceIdPatch::class + SharedResourceIdPatch::class, + VideoIdPatch::class, + VideoIdWithoutShortsPatch::class ] ) @YouTubeCompatibility @@ -67,7 +67,7 @@ class SponsorBlockBytecodePatch : BytecodePatch( /** * Hook the video time methods */ - MainstreamVideoIdPatch.apply { + VideoIdPatch.apply { videoTimeHook( INTEGRATIONS_PLAYER_CONTROLLER_CLASS_DESCRIPTOR, "setVideoTime" @@ -217,7 +217,7 @@ class SponsorBlockBytecodePatch : BytecodePatch( /** * Inject VideoIdPatch */ - LegacyVideoIdPatch.injectCall("$INTEGRATIONS_PLAYER_CONTROLLER_CLASS_DESCRIPTOR->setCurrentVideoId(Ljava/lang/String;)V") + VideoIdWithoutShortsPatch.injectCall("$INTEGRATIONS_PLAYER_CONTROLLER_CLASS_DESCRIPTOR->setCurrentVideoId(Ljava/lang/String;)V") context.injectInit("FirstRun", "initializationSB") context.updatePatchStatus("SponsorBlock") diff --git a/src/main/kotlin/app/revanced/patches/youtube/video/speed/fingerprints/OrganicPlaybackContextModelFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/videocpn/fingerprint/OrganicPlaybackContextModelFingerprint.kt similarity index 76% rename from src/main/kotlin/app/revanced/patches/youtube/video/speed/fingerprints/OrganicPlaybackContextModelFingerprint.kt rename to src/main/kotlin/app/revanced/patches/youtube/utils/videocpn/fingerprint/OrganicPlaybackContextModelFingerprint.kt index 9509a6c11..363a739d1 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/video/speed/fingerprints/OrganicPlaybackContextModelFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/videocpn/fingerprint/OrganicPlaybackContextModelFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.video.speed.fingerprints +package app.revanced.patches.youtube.utils.videocpn.fingerprint import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/videocpn/patch/VideoCpnPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/videocpn/patch/VideoCpnPatch.kt new file mode 100644 index 000000000..c8b550665 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/videocpn/patch/VideoCpnPatch.kt @@ -0,0 +1,39 @@ +package app.revanced.patches.youtube.utils.videocpn.patch + +import app.revanced.extensions.toErrorResult +import app.revanced.patcher.annotation.Name +import app.revanced.patcher.annotation.Version +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.patch.BytecodePatch +import app.revanced.patcher.patch.PatchResult +import app.revanced.patcher.patch.PatchResultSuccess +import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod +import app.revanced.patches.youtube.utils.videocpn.fingerprint.OrganicPlaybackContextModelFingerprint + +@Name("video-cpn-hook") +@Version("0.0.1") +class VideoCpnPatch : BytecodePatch( + listOf(OrganicPlaybackContextModelFingerprint) +) { + override fun execute(context: BytecodeContext): PatchResult { + + insertMethod = OrganicPlaybackContextModelFingerprint.result?.mutableMethod?: return OrganicPlaybackContextModelFingerprint.toErrorResult() + + return PatchResultSuccess() + } + + companion object { + private lateinit var insertMethod: MutableMethod + + fun injectCall( + methodDescriptor: String + ) { + insertMethod.addInstructions( + 2, + "invoke-static {p1,p2}, $methodDescriptor" + ) + } + } +} + diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/PlayerControllerSetTimeReferenceFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/PlayerControllerSetTimeReferenceFingerprint.kt similarity index 82% rename from src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/PlayerControllerSetTimeReferenceFingerprint.kt rename to src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/PlayerControllerSetTimeReferenceFingerprint.kt index 5fbb13b0e..c739491aa 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/PlayerControllerSetTimeReferenceFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/PlayerControllerSetTimeReferenceFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.utils.videoid.mainstream.fingerprint +package app.revanced.patches.youtube.utils.videoid.general.fingerprint import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import org.jf.dexlib2.Opcode diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/PlayerInitFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/PlayerInitFingerprint.kt similarity index 74% rename from src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/PlayerInitFingerprint.kt rename to src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/PlayerInitFingerprint.kt index b59316891..a2fbd6abd 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/PlayerInitFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/PlayerInitFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.utils.videoid.mainstream.fingerprint +package app.revanced.patches.youtube.utils.videoid.general.fingerprint import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/SeekFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/SeekFingerprint.kt similarity index 70% rename from src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/SeekFingerprint.kt rename to src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/SeekFingerprint.kt index 020c6f149..6cedf6c8f 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/SeekFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/SeekFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.utils.videoid.mainstream.fingerprint +package app.revanced.patches.youtube.utils.videoid.general.fingerprint import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/MainstreamVideoIdFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/VideoIdFingerprint.kt similarity index 77% rename from src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/MainstreamVideoIdFingerprint.kt rename to src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/VideoIdFingerprint.kt index 6dd8008b4..1660604fe 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/MainstreamVideoIdFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/VideoIdFingerprint.kt @@ -1,11 +1,11 @@ -package app.revanced.patches.youtube.utils.videoid.mainstream.fingerprint +package app.revanced.patches.youtube.utils.videoid.general.fingerprint import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import org.jf.dexlib2.AccessFlags import org.jf.dexlib2.Opcode -object MainstreamVideoIdFingerprint : MethodFingerprint( +object VideoIdFingerprint : MethodFingerprint( returnType = "V", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, parameters = listOf("L"), diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/MainstreamVideoIdParentFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/VideoIdParentFingerprint.kt similarity index 57% rename from src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/MainstreamVideoIdParentFingerprint.kt rename to src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/VideoIdParentFingerprint.kt index 9751f5463..f46c2d25a 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/MainstreamVideoIdParentFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/VideoIdParentFingerprint.kt @@ -1,8 +1,8 @@ -package app.revanced.patches.youtube.utils.videoid.mainstream.fingerprint +package app.revanced.patches.youtube.utils.videoid.general.fingerprint import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint -object MainstreamVideoIdParentFingerprint : MethodFingerprint( +object VideoIdParentFingerprint : MethodFingerprint( returnType = "V", parameters = listOf("L", "L"), strings = listOf("error retrieving subtitle"), diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/VideoLengthFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/VideoLengthFingerprint.kt similarity index 88% rename from src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/VideoLengthFingerprint.kt rename to src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/VideoLengthFingerprint.kt index ab6d722e1..d61aa1a2a 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/VideoLengthFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/VideoLengthFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.utils.videoid.mainstream.fingerprint +package app.revanced.patches.youtube.utils.videoid.general.fingerprint import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/VideoTimeHighPrecisionFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/VideoTimeHighPrecisionFingerprint.kt similarity index 88% rename from src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/VideoTimeHighPrecisionFingerprint.kt rename to src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/VideoTimeHighPrecisionFingerprint.kt index 555b16761..aee591484 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/VideoTimeHighPrecisionFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/VideoTimeHighPrecisionFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.utils.videoid.mainstream.fingerprint +package app.revanced.patches.youtube.utils.videoid.general.fingerprint import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/VideoTimeHighPrecisionParentFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/VideoTimeHighPrecisionParentFingerprint.kt similarity index 74% rename from src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/VideoTimeHighPrecisionParentFingerprint.kt rename to src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/VideoTimeHighPrecisionParentFingerprint.kt index 195f65451..61d5dffd2 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/VideoTimeHighPrecisionParentFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/VideoTimeHighPrecisionParentFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.utils.videoid.mainstream.fingerprint +package app.revanced.patches.youtube.utils.videoid.general.fingerprint import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/patch/MainstreamVideoIdPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/patch/VideoIdPatch.kt similarity index 85% rename from src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/patch/MainstreamVideoIdPatch.kt rename to src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/patch/VideoIdPatch.kt index caa207510..f7233f3c9 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/patch/MainstreamVideoIdPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/patch/VideoIdPatch.kt @@ -1,7 +1,6 @@ -package app.revanced.patches.youtube.utils.videoid.mainstream.patch +package app.revanced.patches.youtube.utils.videoid.general.patch import app.revanced.extensions.toErrorResult -import app.revanced.patcher.annotation.Description import app.revanced.patcher.annotation.Name import app.revanced.patcher.annotation.Version import app.revanced.patcher.data.BytecodeContext @@ -17,17 +16,15 @@ import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.annotations.DependsOn import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable -import app.revanced.patches.youtube.utils.annotations.YouTubeCompatibility import app.revanced.patches.youtube.utils.playertype.patch.PlayerTypeHookPatch -import app.revanced.patches.youtube.utils.videoid.mainstream.fingerprint.MainstreamVideoIdFingerprint -import app.revanced.patches.youtube.utils.videoid.mainstream.fingerprint.MainstreamVideoIdParentFingerprint -import app.revanced.patches.youtube.utils.videoid.mainstream.fingerprint.PlayerControllerSetTimeReferenceFingerprint -import app.revanced.patches.youtube.utils.videoid.mainstream.fingerprint.PlayerInitFingerprint -import app.revanced.patches.youtube.utils.videoid.mainstream.fingerprint.SeekFingerprint -import app.revanced.patches.youtube.utils.videoid.mainstream.fingerprint.TimebarFingerprint -import app.revanced.patches.youtube.utils.videoid.mainstream.fingerprint.VideoLengthFingerprint -import app.revanced.patches.youtube.utils.videoid.mainstream.fingerprint.VideoTimeHighPrecisionFingerprint -import app.revanced.patches.youtube.utils.videoid.mainstream.fingerprint.VideoTimeHighPrecisionParentFingerprint +import app.revanced.patches.youtube.utils.videoid.general.fingerprint.PlayerControllerSetTimeReferenceFingerprint +import app.revanced.patches.youtube.utils.videoid.general.fingerprint.PlayerInitFingerprint +import app.revanced.patches.youtube.utils.videoid.general.fingerprint.SeekFingerprint +import app.revanced.patches.youtube.utils.videoid.general.fingerprint.VideoIdFingerprint +import app.revanced.patches.youtube.utils.videoid.general.fingerprint.VideoIdParentFingerprint +import app.revanced.patches.youtube.utils.videoid.general.fingerprint.VideoLengthFingerprint +import app.revanced.patches.youtube.utils.videoid.general.fingerprint.VideoTimeHighPrecisionFingerprint +import app.revanced.patches.youtube.utils.videoid.general.fingerprint.VideoTimeHighPrecisionParentFingerprint import app.revanced.util.integrations.Constants.VIDEO_PATH import org.jf.dexlib2.AccessFlags import org.jf.dexlib2.builder.MutableMethodImplementation @@ -36,18 +33,15 @@ import org.jf.dexlib2.immutable.ImmutableMethod import org.jf.dexlib2.immutable.ImmutableMethodParameter import org.jf.dexlib2.util.MethodUtil -@Name("video-id-hook-mainstream") -@Description("Hook to detect when the video id changes (mainstream)") -@YouTubeCompatibility +@Name("video-id-hook") @Version("0.0.1") @DependsOn([PlayerTypeHookPatch::class]) -class MainstreamVideoIdPatch : BytecodePatch( +class VideoIdPatch : BytecodePatch( listOf( - MainstreamVideoIdParentFingerprint, PlayerControllerSetTimeReferenceFingerprint, PlayerInitFingerprint, SeekFingerprint, - TimebarFingerprint, + VideoIdParentFingerprint, VideoLengthFingerprint, VideoTimeHighPrecisionFingerprint, VideoTimeHighPrecisionParentFingerprint @@ -134,8 +128,8 @@ class MainstreamVideoIdPatch : BytecodePatch( } } ?: return VideoLengthFingerprint.toErrorResult() - MainstreamVideoIdParentFingerprint.result?.let { parentResult -> - MainstreamVideoIdFingerprint.also { + VideoIdParentFingerprint.result?.let { parentResult -> + VideoIdFingerprint.also { it.resolve( context, parentResult.classDef @@ -147,8 +141,8 @@ class MainstreamVideoIdPatch : BytecodePatch( videoIdRegister = getInstruction(insertIndex).registerA } offset++ // offset so setVideoId is called before any injected call - } ?: return MainstreamVideoIdFingerprint.toErrorResult() - } ?: return MainstreamVideoIdParentFingerprint.toErrorResult() + } ?: return VideoIdFingerprint.toErrorResult() + } ?: return VideoIdParentFingerprint.toErrorResult() return PatchResultSuccess() } diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/TimebarFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/TimebarFingerprint.kt deleted file mode 100644 index a5673fade..000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/mainstream/fingerprint/TimebarFingerprint.kt +++ /dev/null @@ -1,16 +0,0 @@ -package app.revanced.patches.youtube.utils.videoid.mainstream.fingerprint - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint -import org.jf.dexlib2.AccessFlags - -object TimebarFingerprint : MethodFingerprint( - returnType = "V", - accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf("L"), - customFingerprint = { methodDef, _ -> - methodDef.definingClass.endsWith("/TimeBar;") && methodDef.name.contains( - "draw" - ) - } -) diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/legacy/fingerprint/LegacyVideoIdParentFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/withoutshorts/fingerprint/VideoIdWithoutShortsParentFingerprint.kt similarity index 80% rename from src/main/kotlin/app/revanced/patches/youtube/utils/videoid/legacy/fingerprint/LegacyVideoIdParentFingerprint.kt rename to src/main/kotlin/app/revanced/patches/youtube/utils/videoid/withoutshorts/fingerprint/VideoIdWithoutShortsParentFingerprint.kt index c03065fbf..fadbf21c2 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/legacy/fingerprint/LegacyVideoIdParentFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/withoutshorts/fingerprint/VideoIdWithoutShortsParentFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.utils.videoid.legacy.fingerprint +package app.revanced.patches.youtube.utils.videoid.withoutshorts.fingerprint import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint @@ -6,7 +6,7 @@ import app.revanced.util.bytecode.isWideLiteralExists import org.jf.dexlib2.AccessFlags import org.jf.dexlib2.Opcode -object LegacyVideoIdParentFingerprint : MethodFingerprint( +object VideoIdWithoutShortsParentFingerprint : MethodFingerprint( returnType = "V", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, parameters = listOf("L"), diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/legacy/patch/LegacyVideoIdPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/withoutshorts/patch/VideoIdWithoutShortsPatch.kt similarity index 72% rename from src/main/kotlin/app/revanced/patches/youtube/utils/videoid/legacy/patch/LegacyVideoIdPatch.kt rename to src/main/kotlin/app/revanced/patches/youtube/utils/videoid/withoutshorts/patch/VideoIdWithoutShortsPatch.kt index c36222d56..be96c0141 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/legacy/patch/LegacyVideoIdPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/withoutshorts/patch/VideoIdWithoutShortsPatch.kt @@ -1,7 +1,6 @@ -package app.revanced.patches.youtube.utils.videoid.legacy.patch +package app.revanced.patches.youtube.utils.videoid.withoutshorts.patch import app.revanced.extensions.toErrorResult -import app.revanced.patcher.annotation.Description import app.revanced.patcher.annotation.Name import app.revanced.patcher.annotation.Version import app.revanced.patcher.data.BytecodeContext @@ -12,22 +11,19 @@ import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.PatchResult import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod -import app.revanced.patches.youtube.utils.annotations.YouTubeCompatibility -import app.revanced.patches.youtube.utils.videoid.legacy.fingerprint.LegacyVideoIdParentFingerprint +import app.revanced.patches.youtube.utils.videoid.withoutshorts.fingerprint.VideoIdWithoutShortsParentFingerprint import app.revanced.util.integrations.Constants.VIDEO_PATH import org.jf.dexlib2.Opcode import org.jf.dexlib2.iface.instruction.OneRegisterInstruction -@Name("video-id-hook-legacy") -@Description("Hook to detect when the video id changes (legacy)") -@YouTubeCompatibility +@Name("video-id-without-shorts-hook") @Version("0.0.1") -class LegacyVideoIdPatch : BytecodePatch( - listOf(LegacyVideoIdParentFingerprint) +class VideoIdWithoutShortsPatch : BytecodePatch( + listOf(VideoIdWithoutShortsParentFingerprint) ) { override fun execute(context: BytecodeContext): PatchResult { - LegacyVideoIdParentFingerprint.result?.let { + VideoIdWithoutShortsParentFingerprint.result?.let { insertMethod = context .toMethodWalker(it.method) .nextMethod(it.scanResult.patternScanResult!!.startIndex + 3, true) @@ -39,15 +35,14 @@ class LegacyVideoIdPatch : BytecodePatch( insertRegister = insertMethod.getInstruction(insertIndex + 1).registerA - } ?: return LegacyVideoIdParentFingerprint.toErrorResult() + } ?: return VideoIdWithoutShortsParentFingerprint.toErrorResult() - injectCall("$INTEGRATIONS_CLASS_DESCRIPTOR->setVideoId(Ljava/lang/String;)V") + injectCall("$VIDEO_PATH/VideoInformation;->setVideoId(Ljava/lang/String;)V") return PatchResultSuccess() } companion object { - const val INTEGRATIONS_CLASS_DESCRIPTOR = "$VIDEO_PATH/VideoInformation;" private var offset = 2 private var insertIndex: Int = 0 diff --git a/src/main/kotlin/app/revanced/patches/youtube/video/quality/patch/VideoQualityPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/video/quality/patch/VideoQualityPatch.kt index 3ef9fea3d..433f788d1 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/video/quality/patch/VideoQualityPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/video/quality/patch/VideoQualityPatch.kt @@ -17,7 +17,7 @@ import app.revanced.patcher.patch.annotations.Patch import app.revanced.patches.youtube.utils.annotations.YouTubeCompatibility import app.revanced.patches.youtube.utils.settings.resource.patch.SettingsPatch import app.revanced.patches.youtube.utils.settings.resource.patch.SettingsPatch.Companion.contexts -import app.revanced.patches.youtube.utils.videoid.legacy.patch.LegacyVideoIdPatch +import app.revanced.patches.youtube.utils.videocpn.patch.VideoCpnPatch import app.revanced.patches.youtube.video.quality.fingerprints.VideoQualityReferenceFingerprint import app.revanced.patches.youtube.video.quality.fingerprints.VideoQualitySetterFingerprint import app.revanced.patches.youtube.video.quality.fingerprints.VideoQualitySettingsFingerprint @@ -33,8 +33,8 @@ import org.jf.dexlib2.iface.reference.FieldReference @Description("Adds ability to set default video quality settings.") @DependsOn( [ - LegacyVideoIdPatch::class, - SettingsPatch::class + SettingsPatch::class, + VideoCpnPatch::class ] ) @YouTubeCompatibility @@ -96,8 +96,7 @@ class VideoQualityPatch : BytecodePatch( ) } ?: return VideoQualitySettingsParentFingerprint.toErrorResult() - LegacyVideoIdPatch.injectCall("$INTEGRATIONS_VIDEO_QUALITY_CLASS_DESCRIPTOR->newVideoStarted(Ljava/lang/String;)V") - + VideoCpnPatch.injectCall("$INTEGRATIONS_VIDEO_QUALITY_CLASS_DESCRIPTOR->newVideoStarted(Ljava/lang/String;Z)V") /** * Copy arrays diff --git a/src/main/kotlin/app/revanced/patches/youtube/video/speed/patch/VideoSpeedPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/video/speed/patch/VideoSpeedPatch.kt index 68bdf23be..50f1c015b 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/video/speed/patch/VideoSpeedPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/video/speed/patch/VideoSpeedPatch.kt @@ -1,6 +1,5 @@ package app.revanced.patches.youtube.video.speed.patch -import app.revanced.extensions.toErrorResult import app.revanced.patcher.annotation.Description import app.revanced.patcher.annotation.Name import app.revanced.patcher.annotation.Version @@ -14,9 +13,8 @@ import app.revanced.patcher.patch.annotations.DependsOn import app.revanced.patcher.patch.annotations.Patch import app.revanced.patches.youtube.utils.annotations.YouTubeCompatibility import app.revanced.patches.youtube.utils.overridespeed.patch.OverrideSpeedHookPatch -import app.revanced.patches.youtube.utils.playertype.patch.PlayerTypeHookPatch import app.revanced.patches.youtube.utils.settings.resource.patch.SettingsPatch -import app.revanced.patches.youtube.video.speed.fingerprints.OrganicPlaybackContextModelFingerprint +import app.revanced.patches.youtube.utils.videocpn.patch.VideoCpnPatch import app.revanced.util.integrations.Constants.VIDEO_PATH import org.jf.dexlib2.iface.instruction.FiveRegisterInstruction @@ -26,14 +24,12 @@ import org.jf.dexlib2.iface.instruction.FiveRegisterInstruction @DependsOn( [ OverrideSpeedHookPatch::class, - PlayerTypeHookPatch::class + VideoCpnPatch::class ] ) @YouTubeCompatibility @Version("0.0.1") -class VideoSpeedPatch : BytecodePatch( - listOf(OrganicPlaybackContextModelFingerprint) -) { +class VideoSpeedPatch : BytecodePatch() { override fun execute(context: BytecodeContext): PatchResult { OverrideSpeedHookPatch.videoSpeedChangedResult.let { @@ -48,10 +44,7 @@ class VideoSpeedPatch : BytecodePatch( } } - OrganicPlaybackContextModelFingerprint.result?.mutableMethod?.addInstruction( - 2, - "invoke-static {p1,p2}, $INTEGRATIONS_VIDEO_SPEED_CLASS_DESCRIPTOR->newVideoStarted(Ljava/lang/String;Z)V" - ) ?: return OrganicPlaybackContextModelFingerprint.toErrorResult() + VideoCpnPatch.injectCall("$INTEGRATIONS_VIDEO_SPEED_CLASS_DESCRIPTOR->newVideoStarted(Ljava/lang/String;Z)V") /** * Add settings