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.SeekUndoEduOverlayStub
|
||||||
import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.TapBloomView
|
import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.TapBloomView
|
||||||
import app.revanced.patches.youtube.utils.settings.SettingsPatch
|
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.REGISTER_TEMPLATE_REPLACEMENT
|
||||||
import app.revanced.util.getTargetIndexOrThrow
|
import app.revanced.util.getTargetIndexOrThrow
|
||||||
import app.revanced.util.getTargetIndexReversedOrThrow
|
import app.revanced.util.getTargetIndexReversedOrThrow
|
||||||
@ -73,6 +74,7 @@ object PlayerComponentsPatch : BaseBytecodePatch(
|
|||||||
SharedResourceIdPatch::class,
|
SharedResourceIdPatch::class,
|
||||||
SpeedOverlayPatch::class,
|
SpeedOverlayPatch::class,
|
||||||
SuggestedVideoEndScreenPatch::class,
|
SuggestedVideoEndScreenPatch::class,
|
||||||
|
VideoInformationPatch::class
|
||||||
),
|
),
|
||||||
compatiblePackages = COMPATIBLE_PACKAGE,
|
compatiblePackages = COMPATIBLE_PACKAGE,
|
||||||
fingerprints = setOf(
|
fingerprints = setOf(
|
||||||
@ -172,6 +174,12 @@ object PlayerComponentsPatch : BaseBytecodePatch(
|
|||||||
|
|
||||||
// endregion
|
// 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
|
// region patch for hide channel watermark
|
||||||
|
|
||||||
WatermarkFingerprint.resolve(
|
WatermarkFingerprint.resolve(
|
||||||
|
@ -361,7 +361,7 @@ object VideoInformationPatch : BytecodePatch(
|
|||||||
// Call before any other video id hooks,
|
// Call before any other video id hooks,
|
||||||
// so they can use VideoInformation and check if the video id is for a Short.
|
// so they can use VideoInformation and check if the video id is for a Short.
|
||||||
PlayerResponseMethodHookPatch += PlayerResponseMethodHookPatch.Hook.PlayerParameterBeforeVideoId(
|
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.
|
// Parameter numbers of the patched method.
|
||||||
private var PARAMETER_VIDEO_ID = 1
|
private var PARAMETER_VIDEO_ID = 1
|
||||||
private var PARAMETER_PLAYER_PARAMETER = 3
|
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>()
|
private var PARAMETER_IS_SHORT_AND_OPENING_OR_PLAYING by Delegates.notNull<Int>()
|
||||||
|
|
||||||
// Registers used to pass the parameters to integrations.
|
// Registers used to pass the parameters to integrations.
|
||||||
private var playerResponseMethodCopyRegisters = false
|
private var playerResponseMethodCopyRegisters = false
|
||||||
private lateinit var REGISTER_VIDEO_ID: String
|
private lateinit var REGISTER_VIDEO_ID: String
|
||||||
private lateinit var REGISTER_PLAYER_PARAMETER: 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 REGISTER_IS_SHORT_AND_OPENING_OR_PLAYING: String
|
||||||
|
|
||||||
private lateinit var playerResponseMethod: MutableMethod
|
private lateinit var playerResponseMethod: MutableMethod
|
||||||
@ -46,10 +48,12 @@ object PlayerResponseMethodHookPatch :
|
|||||||
if (playerResponseMethodCopyRegisters) {
|
if (playerResponseMethodCopyRegisters) {
|
||||||
REGISTER_VIDEO_ID = "v0"
|
REGISTER_VIDEO_ID = "v0"
|
||||||
REGISTER_PLAYER_PARAMETER = "v1"
|
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 {
|
} else {
|
||||||
REGISTER_VIDEO_ID = "p$PARAMETER_VIDEO_ID"
|
REGISTER_VIDEO_ID = "p$PARAMETER_VIDEO_ID"
|
||||||
REGISTER_PLAYER_PARAMETER = "p$PARAMETER_PLAYER_PARAMETER"
|
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"
|
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) {
|
fun hookPlayerParameter(hook: Hook) {
|
||||||
playerResponseMethod.addInstructions(
|
playerResponseMethod.addInstructions(
|
||||||
0, """
|
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
|
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_VIDEO_ID, p$PARAMETER_VIDEO_ID
|
||||||
move-object/from16 $REGISTER_PLAYER_PARAMETER, p$PARAMETER_PLAYER_PARAMETER
|
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
|
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.
|
// Move the modified register back.
|
||||||
addInstruction(
|
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_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_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_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_title">Disable speed overlay</string>
|
||||||
<string name="revanced_disable_speed_overlay_summary">"Disable '2x>>' while holding down.
|
<string name="revanced_disable_speed_overlay_summary">"Disable '2x>>' while holding down.
|
||||||
|
|
||||||
|
@ -445,6 +445,7 @@
|
|||||||
<!-- SETTINGS: PLAYER_COMPONENTS
|
<!-- 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" />
|
<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_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" />
|
<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" />
|
<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" />
|
<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