mirror of
https://github.com/revanced/revanced-patches
synced 2024-08-16 12:21:14 +02:00
feat: OldQualityLayout, HideSuggestions, HideReels, EnableSeekbarTapping
This commit is contained in:
parent
795cef129c
commit
04a7cfff20
@ -1,9 +1,9 @@
|
|||||||
package app.revanced.patches
|
package app.revanced.patches
|
||||||
|
|
||||||
import app.revanced.patcher.patch.Patch
|
import app.revanced.patcher.patch.Patch
|
||||||
import app.revanced.patches.ads.VideoAds
|
import app.revanced.patches.ad.VideoAds
|
||||||
import app.revanced.patches.layouts.CreateButtonRemover
|
import app.revanced.patches.interaction.EnableSeekbarTapping
|
||||||
import app.revanced.patches.layouts.MinimizedPlayback
|
import app.revanced.patches.layout.*
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -18,6 +18,10 @@ object Index {
|
|||||||
val patches: Array<KClass<out Patch>> = arrayOf(
|
val patches: Array<KClass<out Patch>> = arrayOf(
|
||||||
VideoAds::class,
|
VideoAds::class,
|
||||||
MinimizedPlayback::class,
|
MinimizedPlayback::class,
|
||||||
CreateButtonRemover::class
|
CreateButtonRemover::class,
|
||||||
|
HideReels::class,
|
||||||
|
HideSuggestions::class,
|
||||||
|
OldQualityLayout::class,
|
||||||
|
EnableSeekbarTapping::class
|
||||||
)
|
)
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package app.revanced.patches.ads
|
package app.revanced.patches.ad
|
||||||
|
|
||||||
import app.revanced.patcher.cache.Cache
|
import app.revanced.patcher.cache.Cache
|
||||||
import app.revanced.patcher.patch.Patch
|
import app.revanced.patcher.patch.Patch
|
@ -0,0 +1,49 @@
|
|||||||
|
package app.revanced.patches.interaction
|
||||||
|
|
||||||
|
import app.revanced.patcher.cache.Cache
|
||||||
|
import app.revanced.patcher.patch.Patch
|
||||||
|
import app.revanced.patcher.patch.PatchResult
|
||||||
|
import app.revanced.patcher.patch.PatchResultSuccess
|
||||||
|
import app.revanced.patcher.writer.ASMWriter.insertAt
|
||||||
|
import org.objectweb.asm.Opcodes
|
||||||
|
import org.objectweb.asm.tree.*
|
||||||
|
|
||||||
|
class EnableSeekbarTapping : Patch("enable-seekbar-tapping") {
|
||||||
|
override fun execute(cache: Cache): PatchResult {
|
||||||
|
val patchData = cache.methods["enable-seekbar-tapping"]
|
||||||
|
val methodOPatchData = cache.methods["enable-seekbar-tapping-method-o"]
|
||||||
|
val methodPPatchData = cache.methods["enable-seekbar-tapping-method-p"]
|
||||||
|
|
||||||
|
val elseLabel = LabelNode()
|
||||||
|
patchData.method.instructions.insertAt(
|
||||||
|
patchData.scanData.endIndex,
|
||||||
|
InsnNode(Opcodes.ACONST_NULL),
|
||||||
|
MethodInsnNode(
|
||||||
|
Opcodes.INVOKESTATIC,
|
||||||
|
"fi/razerman/youtube/preferences/BooleanPreferences",
|
||||||
|
"isTapSeekingEnabled",
|
||||||
|
"()Z"
|
||||||
|
),
|
||||||
|
JumpInsnNode(Opcodes.IFEQ, elseLabel),
|
||||||
|
VarInsnNode(Opcodes.ALOAD, 0),
|
||||||
|
VarInsnNode(Opcodes.ILOAD, 6),
|
||||||
|
MethodInsnNode(
|
||||||
|
Opcodes.INVOKEVIRTUAL,
|
||||||
|
methodOPatchData.declaringClass.name,
|
||||||
|
methodOPatchData.method.name,
|
||||||
|
"(I)V"
|
||||||
|
),
|
||||||
|
VarInsnNode(Opcodes.ALOAD, 0),
|
||||||
|
VarInsnNode(Opcodes.ILOAD, 6),
|
||||||
|
MethodInsnNode(
|
||||||
|
Opcodes.INVOKEVIRTUAL,
|
||||||
|
methodPPatchData.declaringClass.name,
|
||||||
|
methodPPatchData.method.name,
|
||||||
|
"(I)V"
|
||||||
|
),
|
||||||
|
elseLabel
|
||||||
|
)
|
||||||
|
|
||||||
|
return PatchResultSuccess()
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package app.revanced.patches.layouts
|
package app.revanced.patches.layout
|
||||||
|
|
||||||
import app.revanced.patcher.cache.Cache
|
import app.revanced.patcher.cache.Cache
|
||||||
import app.revanced.patcher.patch.Patch
|
import app.revanced.patcher.patch.Patch
|
29
src/main/kotlin/app/revanced/patches/layout/HideReels.kt
Normal file
29
src/main/kotlin/app/revanced/patches/layout/HideReels.kt
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
package app.revanced.patches.layout
|
||||||
|
|
||||||
|
import app.revanced.patcher.cache.Cache
|
||||||
|
import app.revanced.patcher.patch.Patch
|
||||||
|
import app.revanced.patcher.patch.PatchResult
|
||||||
|
import app.revanced.patcher.patch.PatchResultSuccess
|
||||||
|
import app.revanced.patcher.writer.ASMWriter.insertAt
|
||||||
|
import org.objectweb.asm.Opcodes
|
||||||
|
import org.objectweb.asm.tree.MethodInsnNode
|
||||||
|
import org.objectweb.asm.tree.VarInsnNode
|
||||||
|
|
||||||
|
class HideReels : Patch("hide-reels") {
|
||||||
|
override fun execute(cache: Cache): PatchResult {
|
||||||
|
val patchData = cache.methods["hide-reel-patch"]
|
||||||
|
|
||||||
|
patchData.method.instructions.insertAt(
|
||||||
|
patchData.scanData.endIndex + 1,
|
||||||
|
VarInsnNode(Opcodes.ALOAD, 18),
|
||||||
|
MethodInsnNode(
|
||||||
|
Opcodes.INVOKESTATIC,
|
||||||
|
"fi/razerman/youtube/XAdRemover",
|
||||||
|
"HideReels",
|
||||||
|
"(Landroid/view/View;)V"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
return PatchResultSuccess()
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
package app.revanced.patches.layout
|
||||||
|
|
||||||
|
import app.revanced.patcher.cache.Cache
|
||||||
|
import app.revanced.patcher.patch.Patch
|
||||||
|
import app.revanced.patcher.patch.PatchResult
|
||||||
|
import app.revanced.patcher.patch.PatchResultError
|
||||||
|
import app.revanced.patcher.patch.PatchResultSuccess
|
||||||
|
import app.revanced.patcher.signature.Signature
|
||||||
|
import app.revanced.patcher.writer.ASMWriter.insertAt
|
||||||
|
import org.objectweb.asm.Opcodes
|
||||||
|
import org.objectweb.asm.Type
|
||||||
|
import org.objectweb.asm.tree.MethodInsnNode
|
||||||
|
import org.objectweb.asm.tree.VarInsnNode
|
||||||
|
|
||||||
|
class HideSuggestions : Patch("hide-suggestions") {
|
||||||
|
override fun execute(cache: Cache): PatchResult {
|
||||||
|
val method = cache.methods["hide-suggestions-patch"].findParentMethod(
|
||||||
|
Signature(
|
||||||
|
"hide-suggestions-method",
|
||||||
|
Type.VOID_TYPE,
|
||||||
|
Opcodes.ACC_PUBLIC or Opcodes.ACC_FINAL,
|
||||||
|
arrayOf(Type.BOOLEAN_TYPE),
|
||||||
|
arrayOf(
|
||||||
|
Opcodes.ALOAD,
|
||||||
|
Opcodes.ILOAD,
|
||||||
|
Opcodes.PUTFIELD,
|
||||||
|
Opcodes.ALOAD,
|
||||||
|
Opcodes.GETFIELD
|
||||||
|
)
|
||||||
|
)
|
||||||
|
) ?: return PatchResultError("Parent method hide-suggestions-method has not been found")
|
||||||
|
|
||||||
|
method.method.instructions.insertAt(
|
||||||
|
0,
|
||||||
|
VarInsnNode(Opcodes.ILOAD, 1),
|
||||||
|
MethodInsnNode(
|
||||||
|
Opcodes.INVOKESTATIC,
|
||||||
|
"java/lang/Boolean",
|
||||||
|
"valueOf",
|
||||||
|
"(Z)Ljava/lang/Boolean"
|
||||||
|
),
|
||||||
|
MethodInsnNode(
|
||||||
|
Opcodes.INVOKESTATIC,
|
||||||
|
"fi/razerman/youtube/XAdRemover",
|
||||||
|
"HideReels",
|
||||||
|
"(Landroid/view/View;)V"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
return PatchResultSuccess()
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package app.revanced.patches.layouts
|
package app.revanced.patches.layout
|
||||||
|
|
||||||
import app.revanced.patcher.cache.Cache
|
import app.revanced.patcher.cache.Cache
|
||||||
import app.revanced.patcher.patch.Patch
|
import app.revanced.patcher.patch.Patch
|
@ -0,0 +1,52 @@
|
|||||||
|
package app.revanced.patches.layout
|
||||||
|
|
||||||
|
import app.revanced.patcher.cache.Cache
|
||||||
|
import app.revanced.patcher.patch.Patch
|
||||||
|
import app.revanced.patcher.patch.PatchResult
|
||||||
|
import app.revanced.patcher.patch.PatchResultError
|
||||||
|
import app.revanced.patcher.patch.PatchResultSuccess
|
||||||
|
import app.revanced.patcher.signature.Signature
|
||||||
|
import app.revanced.patcher.util.ExtraTypes
|
||||||
|
import app.revanced.patcher.writer.ASMWriter.insertAt
|
||||||
|
import org.objectweb.asm.Opcodes
|
||||||
|
import org.objectweb.asm.tree.JumpInsnNode
|
||||||
|
import org.objectweb.asm.tree.MethodInsnNode
|
||||||
|
import org.objectweb.asm.tree.VarInsnNode
|
||||||
|
|
||||||
|
class OldQualityLayout : Patch("old-quality-restore") {
|
||||||
|
override fun execute(cache: Cache): PatchResult {
|
||||||
|
val method = cache.methods["old-quality-patch"].findParentMethod(
|
||||||
|
Signature(
|
||||||
|
"old-quality-patch-method",
|
||||||
|
ExtraTypes.Any,
|
||||||
|
Opcodes.ACC_PUBLIC or Opcodes.ACC_FINAL,
|
||||||
|
arrayOf(),
|
||||||
|
arrayOf(
|
||||||
|
Opcodes.ALOAD,
|
||||||
|
Opcodes.GETFIELD,
|
||||||
|
Opcodes.ISTORE,
|
||||||
|
Opcodes.ICONST_3,
|
||||||
|
Opcodes.ISTORE
|
||||||
|
)
|
||||||
|
)
|
||||||
|
) ?: return PatchResultError("Parent method old-quality-patch-method has not been found")
|
||||||
|
|
||||||
|
method.method.instructions.insertAt(
|
||||||
|
0,
|
||||||
|
MethodInsnNode(
|
||||||
|
Opcodes.INVOKESTATIC,
|
||||||
|
"fi/razerman/youtube/XGlobals",
|
||||||
|
"useOldStyleQualitySettings",
|
||||||
|
"()Z"
|
||||||
|
),
|
||||||
|
VarInsnNode(Opcodes.ISTORE, 1),
|
||||||
|
VarInsnNode(Opcodes.ILOAD, 1),
|
||||||
|
JumpInsnNode(
|
||||||
|
Opcodes.IFNE,
|
||||||
|
(method.method.instructions[method.scanData.endIndex + 3] as JumpInsnNode).label
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
return PatchResultSuccess()
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user