mirror of
https://github.com/inotia00/revanced-patches.git
synced 2025-05-29 05:10:20 +02:00
feat(YouTube/Player components): add Disable switch mix playlists
setting
This commit is contained in:
parent
94f7c5b79a
commit
fc832e2459
@ -46,6 +46,7 @@ import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.Scrim
|
||||
import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.SeekUndoEduOverlayStub
|
||||
import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.TapBloomView
|
||||
import app.revanced.patches.youtube.utils.settings.SettingsPatch
|
||||
import app.revanced.patches.youtube.video.information.VideoInformationPatch
|
||||
import app.revanced.util.REGISTER_TEMPLATE_REPLACEMENT
|
||||
import app.revanced.util.getTargetIndexOrThrow
|
||||
import app.revanced.util.getTargetIndexReversedOrThrow
|
||||
@ -73,6 +74,7 @@ object PlayerComponentsPatch : BaseBytecodePatch(
|
||||
SharedResourceIdPatch::class,
|
||||
SpeedOverlayPatch::class,
|
||||
SuggestedVideoEndScreenPatch::class,
|
||||
VideoInformationPatch::class
|
||||
),
|
||||
compatiblePackages = COMPATIBLE_PACKAGE,
|
||||
fingerprints = setOf(
|
||||
@ -172,6 +174,12 @@ object PlayerComponentsPatch : BaseBytecodePatch(
|
||||
|
||||
// endregion
|
||||
|
||||
// region patch for disable auto switch mix playlists
|
||||
|
||||
VideoInformationPatch.hook("$PLAYER_CLASS_DESCRIPTOR->disableAutoSwitchMixPlaylists(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JZ)V")
|
||||
|
||||
// endregion
|
||||
|
||||
// region patch for hide channel watermark
|
||||
|
||||
WatermarkFingerprint.resolve(
|
||||
|
@ -361,7 +361,7 @@ object VideoInformationPatch : BytecodePatch(
|
||||
// Call before any other video id hooks,
|
||||
// so they can use VideoInformation and check if the video id is for a Short.
|
||||
PlayerResponseMethodHookPatch += PlayerResponseMethodHookPatch.Hook.PlayerParameterBeforeVideoId(
|
||||
"$INTEGRATIONS_CLASS_DESCRIPTOR->newPlayerResponseParameter(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;"
|
||||
"$INTEGRATIONS_CLASS_DESCRIPTOR->newPlayerResponseParameter(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;"
|
||||
)
|
||||
|
||||
/**
|
||||
|
@ -18,12 +18,14 @@ object PlayerResponseMethodHookPatch :
|
||||
// Parameter numbers of the patched method.
|
||||
private var PARAMETER_VIDEO_ID = 1
|
||||
private var PARAMETER_PLAYER_PARAMETER = 3
|
||||
private var PARAMETER_PLAYLIST_ID = 4
|
||||
private var PARAMETER_IS_SHORT_AND_OPENING_OR_PLAYING by Delegates.notNull<Int>()
|
||||
|
||||
// Registers used to pass the parameters to integrations.
|
||||
private var playerResponseMethodCopyRegisters = false
|
||||
private lateinit var REGISTER_VIDEO_ID: String
|
||||
private lateinit var REGISTER_PLAYER_PARAMETER: String
|
||||
private lateinit var REGISTER_PLAYLIST_ID: String
|
||||
private lateinit var REGISTER_IS_SHORT_AND_OPENING_OR_PLAYING: String
|
||||
|
||||
private lateinit var playerResponseMethod: MutableMethod
|
||||
@ -46,10 +48,12 @@ object PlayerResponseMethodHookPatch :
|
||||
if (playerResponseMethodCopyRegisters) {
|
||||
REGISTER_VIDEO_ID = "v0"
|
||||
REGISTER_PLAYER_PARAMETER = "v1"
|
||||
REGISTER_IS_SHORT_AND_OPENING_OR_PLAYING = "v2"
|
||||
REGISTER_PLAYLIST_ID = "v2"
|
||||
REGISTER_IS_SHORT_AND_OPENING_OR_PLAYING = "v3"
|
||||
} else {
|
||||
REGISTER_VIDEO_ID = "p$PARAMETER_VIDEO_ID"
|
||||
REGISTER_PLAYER_PARAMETER = "p$PARAMETER_PLAYER_PARAMETER"
|
||||
REGISTER_PLAYLIST_ID = "p$PARAMETER_PLAYLIST_ID"
|
||||
REGISTER_IS_SHORT_AND_OPENING_OR_PLAYING = "p$PARAMETER_IS_SHORT_AND_OPENING_OR_PLAYING"
|
||||
}
|
||||
}
|
||||
@ -66,7 +70,7 @@ object PlayerResponseMethodHookPatch :
|
||||
fun hookPlayerParameter(hook: Hook) {
|
||||
playerResponseMethod.addInstructions(
|
||||
0, """
|
||||
invoke-static {$REGISTER_VIDEO_ID, $REGISTER_PLAYER_PARAMETER, $REGISTER_IS_SHORT_AND_OPENING_OR_PLAYING}, $hook
|
||||
invoke-static {$REGISTER_VIDEO_ID, $REGISTER_PLAYER_PARAMETER, $REGISTER_PLAYLIST_ID, $REGISTER_IS_SHORT_AND_OPENING_OR_PLAYING}, $hook
|
||||
move-result-object $REGISTER_PLAYER_PARAMETER
|
||||
"""
|
||||
)
|
||||
@ -90,11 +94,12 @@ object PlayerResponseMethodHookPatch :
|
||||
"""
|
||||
move-object/from16 $REGISTER_VIDEO_ID, p$PARAMETER_VIDEO_ID
|
||||
move-object/from16 $REGISTER_PLAYER_PARAMETER, p$PARAMETER_PLAYER_PARAMETER
|
||||
move-object/from16 $REGISTER_PLAYLIST_ID, p$PARAMETER_PLAYLIST_ID
|
||||
move/from16 $REGISTER_IS_SHORT_AND_OPENING_OR_PLAYING, p$PARAMETER_IS_SHORT_AND_OPENING_OR_PLAYING
|
||||
""",
|
||||
)
|
||||
|
||||
numberOfInstructionsAdded += 3
|
||||
numberOfInstructionsAdded += 4
|
||||
|
||||
// Move the modified register back.
|
||||
addInstruction(
|
||||
|
@ -543,6 +543,13 @@ Tap and hold to open RVX settings."</string>
|
||||
<string name="revanced_disable_auto_player_popup_panels_title">Disable player popup panels</string>
|
||||
<string name="revanced_disable_auto_player_popup_panels_summary_on">Auto player popup panels are disabled.</string>
|
||||
<string name="revanced_disable_auto_player_popup_panels_summary_off">Auto player popup panels are enabled.</string>
|
||||
<string name="revanced_disable_auto_switch_mix_playlists_title">Disable switch mix playlists</string>
|
||||
<string name="revanced_disable_auto_switch_mix_playlists_summary_on">Auto switch mix playlists is disabled.</string>
|
||||
<string name="revanced_disable_auto_switch_mix_playlists_summary_off">"Auto switch mix playlists is enabled when autoplay is turned on.
|
||||
|
||||
Autoplay can be changed in YouTube settings:
|
||||
Settings → Autoplay → Autoplay next video"</string>
|
||||
<string name="revanced_disable_auto_switch_mix_playlists_user_dialog_message">Enabling this feature will disable automatic switching to YouTube Mix when playing music while autoplay is turned on.</string>
|
||||
<string name="revanced_disable_speed_overlay_title">Disable speed overlay</string>
|
||||
<string name="revanced_disable_speed_overlay_summary">"Disable '2x>>' while holding down.
|
||||
|
||||
|
@ -445,6 +445,7 @@
|
||||
<!-- SETTINGS: PLAYER_COMPONENTS
|
||||
<app.revanced.integrations.shared.settings.preference.ResettableEditTextPreference android:hint="100" android:title="@string/revanced_custom_player_overlay_opacity_title" android:key="revanced_custom_player_overlay_opacity" android:summary="@string/revanced_custom_player_overlay_opacity_summary" android:inputType="number" />
|
||||
<SwitchPreference android:title="@string/revanced_disable_auto_player_popup_panels_title" android:key="revanced_disable_auto_player_popup_panels" android:summaryOn="@string/revanced_disable_auto_player_popup_panels_summary_on" android:summaryOff="@string/revanced_disable_auto_player_popup_panels_summary_off" />
|
||||
<SwitchPreference android:title="@string/revanced_disable_auto_switch_mix_playlists_title" android:key="revanced_disable_auto_switch_mix_playlists" android:summaryOn="@string/revanced_disable_auto_switch_mix_playlists_summary_on" android:summaryOff="@string/revanced_disable_auto_switch_mix_playlists_summary_off" />
|
||||
<SwitchPreference android:title="@string/revanced_disable_speed_overlay_title" android:key="revanced_disable_speed_overlay" android:summary="@string/revanced_disable_speed_overlay_summary" />
|
||||
<app.revanced.integrations.shared.settings.preference.ResettableEditTextPreference android:hint="2.0" android:title="@string/revanced_speed_overlay_value_title" android:key="revanced_speed_overlay_value" android:summary="@string/revanced_speed_overlay_value_summary" android:inputType="numberDecimal" />
|
||||
<SwitchPreference android:title="@string/revanced_hide_channel_watermark_title" android:key="revanced_hide_channel_watermark" android:summaryOn="@string/revanced_hide_channel_watermark_summary_on" android:summaryOff="@string/revanced_hide_channel_watermark_summary_off" />
|
||||
|
Loading…
x
Reference in New Issue
Block a user