Skip to content

Commit

Permalink
feat(Twitter): Added Enable force HD videos patch
Browse files Browse the repository at this point in the history
  • Loading branch information
swakwork committed Aug 18, 2024
1 parent 2694c35 commit d316612
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package crimera.patches.twitter.timeline.videoEntity

import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.Patch
import crimera.patches.twitter.misc.settings.SettingsPatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import crimera.patches.twitter.misc.settings.fingerprints.SettingsStatusLoadFingerprint


@Patch(
name = "Enable force HD videos",
description = "Videos will be played in HD",
dependencies = [SettingsPatch::class,VideoEntityPatch::class],
compatiblePackages = [CompatiblePackage("com.twitter.android")],
requiresIntegrations = true
)
@Suppress("unused")
object ForceHDPatch:BytecodePatch(
setOf(SettingsStatusLoadFingerprint)
) {
override fun execute(context: BytecodeContext) {
SettingsStatusLoadFingerprint.enableSettings("enableForceHD")
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package crimera.patches.twitter.timeline.videoEntity

import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.extensions.InstructionExtensions.getInstructions
import app.revanced.patcher.fingerprint.MethodFingerprint
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.dexbacked.reference.DexBackedMethodReference
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
import crimera.patches.twitter.misc.settings.SettingsPatch

object VideoEntityFinderFingerprint: MethodFingerprint(
strings = listOf(
"video_configurations_amplify_video_bird_url_android_enabled",
),
returnType = "Ljava/lang/String"
)

@Patch(
compatiblePackages = [CompatiblePackage("com.twitter.android")],
requiresIntegrations = true
)
@Suppress("unused")
object VideoEntityPatch:BytecodePatch(
setOf(VideoEntityFinderFingerprint)
) {
override fun execute(context: BytecodeContext) {
val result = VideoEntityFinderFingerprint.result
?:throw PatchException("VideoEntityFinderFingerprint not found")

val m1 = result.mutableMethod
val i1 = m1.getInstructions()

val f1 = i1.last { it.opcode == Opcode.INVOKE_STATIC }.location.index
val fr = m1.getInstruction<ReferenceInstruction>(f1).reference as DexBackedMethodReference
val clsName = fr.definingClass
val mName = fr.name

val cls = context.findClass(clsName)!!.mutableClass
val m2 = cls.methods.find { it.name == mName }
val i2 = m2!!.getInstructions()

val iget = i2.find { it.opcode == Opcode.IGET_OBJECT }!!.location.index
m2.addInstructions(iget+1,"""
invoke-static {p1}, ${SettingsPatch.PATCHES_DESCRIPTOR}/TimelineVideoEntity;->videoEnity(Ljava/util/List;)Ljava/util/List;
move-result-object p1
""".trimIndent())


}
}
2 changes: 2 additions & 0 deletions src/main/resources/twitter/settings/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@
<string name="piko_pref_enable_vid_auto_advance">video auto scroll</string>
<string name="piko_pref_enable_vid_auto_advance_desc">Enables video auto scroll in immersive view</string>
<string name="piko_pref_hide_hidden_replies">hidden replies</string>
<string name="piko_pref_force_hd">force HD videos</string>
<string name="piko_pref_force_hd_desc">Videos will be played in HD</string>

<string name="piko_title_customisation">Customization</string>
<string name="piko_pref_customisation_profiletabs">Profile tabs to hide</string>
Expand Down

0 comments on commit d316612

Please sign in to comment.