feat(YouTube Music/Hide general ads): add Hide interstitial ads settings

This commit is contained in:
inotia00 2023-12-21 02:08:34 +09:00
parent 835f2d3cc3
commit 6da93f9842
4 changed files with 51 additions and 6 deletions

View File

@ -2,10 +2,13 @@ package app.revanced.patches.music.ads.general
import app.revanced.patcher.data.BytecodeContext import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.patches.shared.fingerprints.automotive.AutoMotiveFingerprint
import app.revanced.patches.music.ads.general.fingerprints.FloatingLayoutFingerprint import app.revanced.patches.music.ads.general.fingerprints.FloatingLayoutFingerprint
import app.revanced.patches.music.ads.general.fingerprints.InterstitialsContainerFingerprint import app.revanced.patches.music.ads.general.fingerprints.InterstitialsContainerFingerprint
import app.revanced.patches.music.ads.general.fingerprints.NotifierShelfFingerprint import app.revanced.patches.music.ads.general.fingerprints.NotifierShelfFingerprint
@ -20,6 +23,7 @@ import app.revanced.patches.music.utils.resourceid.SharedResourceIdPatch.Interst
import app.revanced.patches.music.utils.settings.CategoryType import app.revanced.patches.music.utils.settings.CategoryType
import app.revanced.patches.music.utils.settings.SettingsPatch import app.revanced.patches.music.utils.settings.SettingsPatch
import app.revanced.util.exception import app.revanced.util.exception
import app.revanced.util.getStringInstructionIndex
import app.revanced.util.getWideLiteralInstructionIndex import app.revanced.util.getWideLiteralInstructionIndex
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@ -37,6 +41,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Suppress("unused") @Suppress("unused")
object GeneralAdsPatch : BytecodePatch( object GeneralAdsPatch : BytecodePatch(
setOf( setOf(
AutoMotiveFingerprint,
FloatingLayoutFingerprint, FloatingLayoutFingerprint,
InterstitialsContainerFingerprint, InterstitialsContainerFingerprint,
NotifierShelfFingerprint NotifierShelfFingerprint
@ -48,6 +53,27 @@ object GeneralAdsPatch : BytecodePatch(
/** /**
* Hides interstitials banner (non-litho) * Hides interstitials banner (non-litho)
*/ */
AutoMotiveFingerprint.result?.let {
it.mutableMethod.apply {
with(
context
.toMethodWalker(this)
.nextMethod(getStringInstructionIndex("Android Automotive") - 3, true)
.getMethod() as MutableMethod
) {
val targetIndex = implementation!!.instructions.size - 1
val targetRegister = getInstruction<OneRegisterInstruction>(targetIndex).registerA
addInstructions(
targetIndex, """
invoke-static {v$targetRegister}, $ADS_PATH/InterstitialsBannerPatch;->hideInterstitialsBanner(Z)Z
move-result v$targetRegister
"""
)
}
}
} ?: throw AutoMotiveFingerprint.exception
InterstitialsContainerFingerprint.result?.let { InterstitialsContainerFingerprint.result?.let {
it.mutableMethod.apply { it.mutableMethod.apply {
val targetIndex = getWideLiteralInstructionIndex(InterstitialsContainer) + 2 val targetIndex = getWideLiteralInstructionIndex(InterstitialsContainer) + 2
@ -96,14 +122,31 @@ object GeneralAdsPatch : BytecodePatch(
"revanced_close_interstitial_ads", "revanced_close_interstitial_ads",
"true" "true"
) )
SettingsPatch.addMusicPreference(CategoryType.ADS, "revanced_hide_general_ads", "true") SettingsPatch.addMusicPreference(
SettingsPatch.addMusicPreference(CategoryType.ADS, "revanced_hide_music_ads", "true") CategoryType.ADS,
"revanced_hide_interstitial_ads",
"true"
)
SettingsPatch.addMusicPreference(
CategoryType.ADS,
"revanced_hide_general_ads",
"true"
)
SettingsPatch.addMusicPreference(
CategoryType.ADS,
"revanced_hide_music_ads",
"true"
)
SettingsPatch.addMusicPreference( SettingsPatch.addMusicPreference(
CategoryType.ADS, CategoryType.ADS,
"revanced_hide_premium_promotion", "revanced_hide_premium_promotion",
"true" "true"
) )
SettingsPatch.addMusicPreference(CategoryType.ADS, "revanced_hide_premium_renewal", "true") SettingsPatch.addMusicPreference(
CategoryType.ADS,
"revanced_hide_premium_renewal",
"true"
)
} }
private const val FILTER_CLASS_DESCRIPTOR = private const val FILTER_CLASS_DESCRIPTOR =

View File

@ -1,4 +1,4 @@
package app.revanced.patches.youtube.navigation.navigationbuttons.fingerprints package app.revanced.patches.shared.fingerprints.automotive
import app.revanced.patcher.fingerprint.MethodFingerprint import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode

View File

@ -8,7 +8,7 @@ import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.patches.youtube.navigation.navigationbuttons.fingerprints.AutoMotiveFingerprint import app.revanced.patches.shared.fingerprints.automotive.AutoMotiveFingerprint
import app.revanced.patches.youtube.navigation.navigationbuttons.fingerprints.PivotBarEnumFingerprint import app.revanced.patches.youtube.navigation.navigationbuttons.fingerprints.PivotBarEnumFingerprint
import app.revanced.patches.youtube.navigation.navigationbuttons.fingerprints.PivotBarShortsButtonViewFingerprint import app.revanced.patches.youtube.navigation.navigationbuttons.fingerprints.PivotBarShortsButtonViewFingerprint
import app.revanced.patches.youtube.utils.fingerprints.PivotBarCreateButtonViewFingerprint import app.revanced.patches.youtube.utils.fingerprints.PivotBarCreateButtonViewFingerprint

View File

@ -22,7 +22,7 @@
<string name="revanced_change_start_page_entry_subscription">Subscription</string> <string name="revanced_change_start_page_entry_subscription">Subscription</string>
<string name="revanced_change_start_page_summary">Changes the start page of the app.</string> <string name="revanced_change_start_page_summary">Changes the start page of the app.</string>
<string name="revanced_change_start_page_title">Change start page</string> <string name="revanced_change_start_page_title">Change start page</string>
<string name="revanced_close_interstitial_ads_summary">Automatically close interstitial ads.</string> <string name="revanced_close_interstitial_ads_summary">Automatically closes interstitial ads that cannot be hidden by \"Hide interstitial ads\".</string>
<string name="revanced_close_interstitial_ads_title">Close interstitial ads</string> <string name="revanced_close_interstitial_ads_title">Close interstitial ads</string>
<string name="revanced_close_interstitial_ads_toast">Closing interstitial ads.</string> <string name="revanced_close_interstitial_ads_toast">Closing interstitial ads.</string>
<string name="revanced_custom_filter_strings_summary">Filter component names by line-seperated.</string> <string name="revanced_custom_filter_strings_summary">Filter component names by line-seperated.</string>
@ -150,6 +150,8 @@ WARNING: Do not enable new player backgrounds while this is enabled."</string>
<string name="revanced_hide_history_button_title">Hide history button</string> <string name="revanced_hide_history_button_title">Hide history button</string>
<string name="revanced_hide_home_button_summary">Hides the home button.</string> <string name="revanced_hide_home_button_summary">Hides the home button.</string>
<string name="revanced_hide_home_button_title">Hide home button</string> <string name="revanced_hide_home_button_title">Hide home button</string>
<string name="revanced_hide_interstitial_ads_summary">Hides the interstitial ads.</string>
<string name="revanced_hide_interstitial_ads_title">Hide interstitial ads</string>
<string name="revanced_hide_library_button_summary">Hides the library button.</string> <string name="revanced_hide_library_button_summary">Hides the library button.</string>
<string name="revanced_hide_library_button_title">Hide library button</string> <string name="revanced_hide_library_button_title">Hide library button</string>
<string name="revanced_hide_music_ads_summary">Hides ads before playing a music.</string> <string name="revanced_hide_music_ads_summary">Hides ads before playing a music.</string>