diff --git a/patches/api/patches.api b/patches/api/patches.api index a7c4c94da..d4a9a987a 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -188,6 +188,10 @@ public final class app/revanced/patches/crunchyroll/ads/HideAdsPatchKt { public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } +public final class app/revanced/patches/disneyplus/ads/SkipAdsPatchKt { + public static final fun getSkipAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch; +} + public final class app/revanced/patches/duolingo/ad/DisableAdsPatchKt { public static final fun getDisableAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } diff --git a/patches/src/main/kotlin/app/revanced/patches/disneyplus/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/disneyplus/Fingerprints.kt new file mode 100644 index 000000000..5cd67cba8 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/disneyplus/Fingerprints.kt @@ -0,0 +1,19 @@ +package app.revanced.patches.disneyplus.ads + +import app.revanced.patcher.fingerprint + +internal val insertionGetPointsFingerprint = fingerprint { + returns("Ljava/util/List") + custom { method, _ -> + method.name == "getPoints" && + method.definingClass == "Lcom/dss/sdk/internal/media/Insertion;" + } +} + +internal val insertionGetRangesFingerprint = fingerprint { + returns("Ljava/util/List") + custom { method, _ -> + method.name == "getRanges" && + method.definingClass == "Lcom/dss/sdk/internal/media/Insertion;" + } +} diff --git a/patches/src/main/kotlin/app/revanced/patches/disneyplus/SkipAdsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/disneyplus/SkipAdsPatch.kt new file mode 100644 index 000000000..5b0f551cd --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/disneyplus/SkipAdsPatch.kt @@ -0,0 +1,25 @@ +package app.revanced.patches.disneyplus.ads + +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.patch.bytecodePatch + +@Suppress("unused") +val skipAdsPatch = bytecodePatch( + name = "Skip ads", + description = "Automatically skips ads.", +) { + compatibleWith("com.disney.disneyplus") + + execute { + arrayOf(insertionGetPointsFingerprint, insertionGetRangesFingerprint).forEach { + it.method.addInstructions( + 0, + """ + new-instance v0, Ljava/util/ArrayList; + invoke-direct {v0}, Ljava/util/ArrayList;->()V + return-object v0 + """, + ) + } + } +}