mirror of
https://github.com/revanced/revanced-patches.git
synced 2025-12-08 02:13:55 +01:00
Compare commits
14 Commits
v5.10.0-de
...
v5.10.0-de
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
018160fd9c | ||
|
|
680252967e | ||
|
|
e79eba81d9 | ||
|
|
a73db03671 | ||
|
|
055ad04281 | ||
|
|
aaeee4a895 | ||
|
|
654b339f66 | ||
|
|
64cdce28a6 | ||
|
|
d01b9a67c5 | ||
|
|
a72404eeab | ||
|
|
3ff104528e | ||
|
|
76bbd7ed2f | ||
|
|
2fdf0f85c1 | ||
|
|
1d12c4156d |
49
CHANGELOG.md
49
CHANGELOG.md
@@ -1,3 +1,52 @@
|
|||||||
|
# [5.10.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.10.0-dev.7...v5.10.0-dev.8) (2025-01-29)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **YouTube - Spoof video streams:** Update settings side effects summary text ([#4369](https://github.com/ReVanced/revanced-patches/issues/4369)) ([e5b3aa1](https://github.com/ReVanced/revanced-patches/commit/e5b3aa1cc6a2465cb006487d528de888bc7cd430))
|
||||||
|
|
||||||
|
# [5.10.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.10.0-dev.6...v5.10.0-dev.7) (2025-01-29)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **YouTube - Hide ads:** fix 'Hide the Visit store button on channel pages' not working ([#4364](https://github.com/ReVanced/revanced-patches/issues/4364)) ([9d63ea9](https://github.com/ReVanced/revanced-patches/commit/9d63ea9a10ab5128ce18a1f53a946e84550da258))
|
||||||
|
|
||||||
|
# [5.10.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.10.0-dev.5...v5.10.0-dev.6) (2025-01-29)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **YouTube - Hide Ads:** Hide end screen store banner without leaving empty space ([#4367](https://github.com/ReVanced/revanced-patches/issues/4367)) ([7e68390](https://github.com/ReVanced/revanced-patches/commit/7e683906418434dd4e2104337d73a2292415c615))
|
||||||
|
|
||||||
|
# [5.10.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.10.0-dev.4...v5.10.0-dev.5) (2025-01-27)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **YouTube - Hide video description components:** Use correct string key names ([0f28c2b](https://github.com/ReVanced/revanced-patches/commit/0f28c2b44c0051ea7ab3136433b84c73321cf5bd))
|
||||||
|
|
||||||
|
# [5.10.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.10.0-dev.3...v5.10.0-dev.4) (2025-01-27)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **YouTube - Hide video description components:** Add `Hide How this content was made section` ([#4355](https://github.com/ReVanced/revanced-patches/issues/4355)) ([68ec54e](https://github.com/ReVanced/revanced-patches/commit/68ec54ef850ae8d6461dd0ef2846e6efbb59e482))
|
||||||
|
|
||||||
|
# [5.10.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.10.0-dev.2...v5.10.0-dev.3) (2025-01-27)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **YouTube - Hide ads:** Add `Hide end screen store banner` ([#4351](https://github.com/ReVanced/revanced-patches/issues/4351)) ([5505087](https://github.com/ReVanced/revanced-patches/commit/55050878028fed82b0f583a9f7ba06b8f267f8ec))
|
||||||
|
|
||||||
|
# [5.10.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.10.0-dev.1...v5.10.0-dev.2) (2025-01-25)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **YouTube:** Add patch `Disable HDR video` ([#4347](https://github.com/ReVanced/revanced-patches/issues/4347)) ([0528f7c](https://github.com/ReVanced/revanced-patches/commit/0528f7cad856a2b1347e41944167b0583fc4a3d9))
|
||||||
|
|
||||||
# [5.10.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.9.1-dev.4...v5.10.0-dev.1) (2025-01-23)
|
# [5.10.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.9.1-dev.4...v5.10.0-dev.1) (2025-01-23)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package app.revanced.extension.youtube.patches;
|
||||||
|
|
||||||
|
import app.revanced.extension.youtube.settings.Settings;
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public class DisableHdrPatch {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Injection point.
|
||||||
|
*/
|
||||||
|
public static boolean disableHDRVideo() {
|
||||||
|
return !Settings.DISABLE_HDR_VIDEO.get();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -5,10 +5,13 @@ import app.revanced.extension.youtube.settings.Settings;
|
|||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public class VideoAdsPatch {
|
public class VideoAdsPatch {
|
||||||
|
|
||||||
// Used by app.revanced.patches.youtube.ad.general.video.patch.VideoAdsPatch
|
private static final boolean SHOW_VIDEO_ADS = !Settings.HIDE_VIDEO_ADS.get();
|
||||||
// depends on Whitelist patch (still needs to be written)
|
|
||||||
|
/**
|
||||||
|
* Injection point.
|
||||||
|
*/
|
||||||
public static boolean shouldShowAds() {
|
public static boolean shouldShowAds() {
|
||||||
return !Settings.HIDE_VIDEO_ADS.get(); // TODO && Whitelist.shouldShowAds();
|
return SHOW_VIDEO_ADS;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,12 @@ import android.view.View;
|
|||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import app.revanced.extension.youtube.settings.Settings;
|
import java.util.List;
|
||||||
|
|
||||||
import app.revanced.extension.shared.Logger;
|
import app.revanced.extension.shared.Logger;
|
||||||
import app.revanced.extension.shared.Utils;
|
import app.revanced.extension.shared.Utils;
|
||||||
import app.revanced.extension.youtube.StringTrieSearch;
|
import app.revanced.extension.youtube.StringTrieSearch;
|
||||||
|
import app.revanced.extension.youtube.settings.Settings;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public final class AdsFilter extends Filter {
|
public final class AdsFilter extends Filter {
|
||||||
@@ -22,6 +24,11 @@ public final class AdsFilter extends Filter {
|
|||||||
|
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
|
// https://encrypted-tbn0.gstatic.com/shopping?q=abc
|
||||||
|
private static final String STORE_BANNER_DOMAIN = "gstatic.com/shopping";
|
||||||
|
private static final boolean HIDE_END_SCREEN_STORE_BANNER =
|
||||||
|
Settings.HIDE_END_SCREEN_STORE_BANNER.get();
|
||||||
|
|
||||||
private final StringTrieSearch exceptions = new StringTrieSearch();
|
private final StringTrieSearch exceptions = new StringTrieSearch();
|
||||||
|
|
||||||
private final StringFilterGroup playerShoppingShelf;
|
private final StringFilterGroup playerShoppingShelf;
|
||||||
@@ -112,23 +119,24 @@ public final class AdsFilter extends Filter {
|
|||||||
"expandable_list"
|
"expandable_list"
|
||||||
);
|
);
|
||||||
|
|
||||||
channelProfile = new StringFilterGroup(
|
|
||||||
null,
|
|
||||||
"channel_profile.eml"
|
|
||||||
);
|
|
||||||
|
|
||||||
playerShoppingShelf = new StringFilterGroup(
|
playerShoppingShelf = new StringFilterGroup(
|
||||||
null,
|
Settings.HIDE_PLAYER_STORE_SHELF,
|
||||||
"horizontal_shelf.eml"
|
"horizontal_shelf.eml"
|
||||||
);
|
);
|
||||||
|
|
||||||
playerShoppingShelfBuffer = new ByteArrayFilterGroup(
|
playerShoppingShelfBuffer = new ByteArrayFilterGroup(
|
||||||
Settings.HIDE_PLAYER_STORE_SHELF,
|
null,
|
||||||
"shopping_item_card_list.eml"
|
"shopping_item_card_list.eml"
|
||||||
);
|
);
|
||||||
|
|
||||||
visitStoreButton = new ByteArrayFilterGroup(
|
channelProfile = new StringFilterGroup(
|
||||||
Settings.HIDE_VISIT_STORE_BUTTON,
|
Settings.HIDE_VISIT_STORE_BUTTON,
|
||||||
|
"channel_profile.eml",
|
||||||
|
"page_header.eml"
|
||||||
|
);
|
||||||
|
|
||||||
|
visitStoreButton = new ByteArrayFilterGroup(
|
||||||
|
null,
|
||||||
"header_store_button"
|
"header_store_button"
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -172,6 +180,11 @@ public final class AdsFilter extends Filter {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check for the index because of likelihood of false positives.
|
||||||
|
if (matchedGroup == shoppingLinks && contentIndex != 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (exceptions.matches(path))
|
if (exceptions.matches(path))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -188,13 +201,25 @@ public final class AdsFilter extends Filter {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for the index because of likelihood of false positives.
|
|
||||||
if (matchedGroup == shoppingLinks && contentIndex != 0)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return super.isFiltered(identifier, path, protobufBufferArray, matchedGroup, contentType, contentIndex);
|
return super.isFiltered(identifier, path, protobufBufferArray, matchedGroup, contentType, contentIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Injection point.
|
||||||
|
*
|
||||||
|
* @param elementsList List of components of the end screen container.
|
||||||
|
* @param protobufList Component (ProtobufList).
|
||||||
|
*/
|
||||||
|
public static void hideEndScreenStoreBanner(List<Object> elementsList, Object protobufList) {
|
||||||
|
if (HIDE_END_SCREEN_STORE_BANNER && protobufList.toString().contains(STORE_BANNER_DOMAIN)) {
|
||||||
|
Logger.printDebug(() -> "Hiding store banner");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
elementsList.add(protobufList);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hide the view, which shows ads in the homepage.
|
* Hide the view, which shows ads in the homepage.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -45,6 +45,11 @@ final class DescriptionComponentsFilter extends Filter {
|
|||||||
"transcript_section"
|
"transcript_section"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
final StringFilterGroup howThisWasMadeSection = new StringFilterGroup(
|
||||||
|
Settings.HIDE_HOW_THIS_WAS_MADE_SECTION,
|
||||||
|
"how_this_was_made_section"
|
||||||
|
);
|
||||||
|
|
||||||
macroMarkersCarousel = new StringFilterGroup(
|
macroMarkersCarousel = new StringFilterGroup(
|
||||||
null,
|
null,
|
||||||
"macro_markers_carousel.eml"
|
"macro_markers_carousel.eml"
|
||||||
@@ -64,6 +69,7 @@ final class DescriptionComponentsFilter extends Filter {
|
|||||||
addPathCallbacks(
|
addPathCallbacks(
|
||||||
attributesSection,
|
attributesSection,
|
||||||
infoCardsSection,
|
infoCardsSection,
|
||||||
|
howThisWasMadeSection,
|
||||||
podcastSection,
|
podcastSection,
|
||||||
transcriptSection,
|
transcriptSection,
|
||||||
macroMarkersCarousel
|
macroMarkersCarousel
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ import app.revanced.extension.youtube.sponsorblock.SponsorBlockSettings;
|
|||||||
|
|
||||||
public class Settings extends BaseSettings {
|
public class Settings extends BaseSettings {
|
||||||
// Video
|
// Video
|
||||||
|
public static final BooleanSetting DISABLE_HDR_VIDEO = new BooleanSetting("revanced_disable_hdr_video", FALSE);
|
||||||
public static final BooleanSetting RESTORE_OLD_VIDEO_QUALITY_MENU = new BooleanSetting("revanced_restore_old_video_quality_menu", TRUE);
|
public static final BooleanSetting RESTORE_OLD_VIDEO_QUALITY_MENU = new BooleanSetting("revanced_restore_old_video_quality_menu", TRUE);
|
||||||
public static final BooleanSetting REMEMBER_VIDEO_QUALITY_LAST_SELECTED = new BooleanSetting("revanced_remember_video_quality_last_selected", FALSE);
|
public static final BooleanSetting REMEMBER_VIDEO_QUALITY_LAST_SELECTED = new BooleanSetting("revanced_remember_video_quality_last_selected", FALSE);
|
||||||
public static final IntegerSetting VIDEO_QUALITY_DEFAULT_WIFI = new IntegerSetting("revanced_video_quality_default_wifi", -2);
|
public static final IntegerSetting VIDEO_QUALITY_DEFAULT_WIFI = new IntegerSetting("revanced_video_quality_default_wifi", -2);
|
||||||
@@ -63,6 +64,7 @@ public class Settings extends BaseSettings {
|
|||||||
|
|
||||||
// Ads
|
// Ads
|
||||||
public static final BooleanSetting HIDE_BUTTONED_ADS = new BooleanSetting("revanced_hide_buttoned_ads", TRUE);
|
public static final BooleanSetting HIDE_BUTTONED_ADS = new BooleanSetting("revanced_hide_buttoned_ads", TRUE);
|
||||||
|
public static final BooleanSetting HIDE_END_SCREEN_STORE_BANNER = new BooleanSetting("revanced_hide_end_screen_store_banner", TRUE, true);
|
||||||
public static final BooleanSetting HIDE_FULLSCREEN_ADS = new BooleanSetting("revanced_hide_fullscreen_ads", TRUE);
|
public static final BooleanSetting HIDE_FULLSCREEN_ADS = new BooleanSetting("revanced_hide_fullscreen_ads", TRUE);
|
||||||
public static final BooleanSetting HIDE_GENERAL_ADS = new BooleanSetting("revanced_hide_general_ads", TRUE);
|
public static final BooleanSetting HIDE_GENERAL_ADS = new BooleanSetting("revanced_hide_general_ads", TRUE);
|
||||||
public static final BooleanSetting HIDE_GET_PREMIUM = new BooleanSetting("revanced_hide_get_premium", TRUE);
|
public static final BooleanSetting HIDE_GET_PREMIUM = new BooleanSetting("revanced_hide_get_premium", TRUE);
|
||||||
@@ -177,6 +179,7 @@ public class Settings extends BaseSettings {
|
|||||||
// Description
|
// Description
|
||||||
public static final BooleanSetting HIDE_ATTRIBUTES_SECTION = new BooleanSetting("revanced_hide_attributes_section", FALSE);
|
public static final BooleanSetting HIDE_ATTRIBUTES_SECTION = new BooleanSetting("revanced_hide_attributes_section", FALSE);
|
||||||
public static final BooleanSetting HIDE_CHAPTERS_SECTION = new BooleanSetting("revanced_hide_chapters_section", TRUE);
|
public static final BooleanSetting HIDE_CHAPTERS_SECTION = new BooleanSetting("revanced_hide_chapters_section", TRUE);
|
||||||
|
public static final BooleanSetting HIDE_HOW_THIS_WAS_MADE_SECTION = new BooleanSetting("revanced_hide_how_this_was_made_section", FALSE);
|
||||||
public static final BooleanSetting HIDE_INFO_CARDS_SECTION = new BooleanSetting("revanced_hide_info_cards_section", TRUE);
|
public static final BooleanSetting HIDE_INFO_CARDS_SECTION = new BooleanSetting("revanced_hide_info_cards_section", TRUE);
|
||||||
public static final BooleanSetting HIDE_KEY_CONCEPTS_SECTION = new BooleanSetting("revanced_hide_key_concepts_section", FALSE);
|
public static final BooleanSetting HIDE_KEY_CONCEPTS_SECTION = new BooleanSetting("revanced_hide_key_concepts_section", FALSE);
|
||||||
public static final BooleanSetting HIDE_PODCAST_SECTION = new BooleanSetting("revanced_hide_podcast_section", TRUE);
|
public static final BooleanSetting HIDE_PODCAST_SECTION = new BooleanSetting("revanced_hide_podcast_section", TRUE);
|
||||||
|
|||||||
@@ -89,6 +89,8 @@ public class SpoofStreamingDataSideEffectsPreference extends Preference {
|
|||||||
summary += '\n' + str("revanced_spoof_video_streams_about_no_av1");
|
summary += '\n' + str("revanced_spoof_video_streams_about_no_av1");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
summary += '\n' + str("revanced_spoof_video_streams_about_kids_videos");
|
||||||
|
|
||||||
setTitle(title);
|
setTitle(title);
|
||||||
setSummary(summary);
|
setSummary(summary);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
|
|||||||
org.gradle.parallel = true
|
org.gradle.parallel = true
|
||||||
android.useAndroidX = true
|
android.useAndroidX = true
|
||||||
kotlin.code.style = official
|
kotlin.code.style = official
|
||||||
version = 5.10.0-dev.1
|
version = 5.10.0-dev.8
|
||||||
|
|||||||
@@ -1414,6 +1414,10 @@ public final class app/revanced/patches/youtube/video/audio/ForceOriginalAudioPa
|
|||||||
public static final fun getForceOriginalAudioPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getForceOriginalAudioPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/youtube/video/hdr/DisableHdrPatchKt {
|
||||||
|
public static final fun getDisableHdrPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/youtube/video/information/VideoInformationPatchKt {
|
public final class app/revanced/patches/youtube/video/information/VideoInformationPatchKt {
|
||||||
public static final fun getVideoInformationPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getVideoInformationPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
public static final fun userSelectedPlaybackSpeedHook (Ljava/lang/String;Ljava/lang/String;)V
|
public static final fun userSelectedPlaybackSpeedHook (Ljava/lang/String;Ljava/lang/String;)V
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package app.revanced.patches.youtube.ad.general
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint
|
||||||
|
import app.revanced.util.containsLiteralInstruction
|
||||||
|
import app.revanced.util.getReference
|
||||||
|
import app.revanced.util.indexOfFirstInstructionReversed
|
||||||
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
|
import com.android.tools.smali.dexlib2.iface.Method
|
||||||
|
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||||
|
|
||||||
|
internal val fullScreenEngagementAdContainerFingerprint = fingerprint {
|
||||||
|
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||||
|
returns("V")
|
||||||
|
parameters()
|
||||||
|
custom { method, _ ->
|
||||||
|
method.containsLiteralInstruction(fullScreenEngagementAdContainer)
|
||||||
|
&& indexOfAddListInstruction(method) >= 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun indexOfAddListInstruction(method: Method) =
|
||||||
|
method.indexOfFirstInstructionReversed {
|
||||||
|
getReference<MethodReference>()?.name == "add"
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
package app.revanced.patches.youtube.ad.general
|
package app.revanced.patches.youtube.ad.general
|
||||||
|
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
import app.revanced.patcher.patch.resourcePatch
|
import app.revanced.patcher.patch.resourcePatch
|
||||||
import app.revanced.patches.all.misc.resources.addResources
|
import app.revanced.patches.all.misc.resources.addResources
|
||||||
@@ -18,11 +20,16 @@ import app.revanced.patches.youtube.misc.settings.settingsPatch
|
|||||||
import app.revanced.util.findMutableMethodOf
|
import app.revanced.util.findMutableMethodOf
|
||||||
import app.revanced.util.injectHideViewCall
|
import app.revanced.util.injectHideViewCall
|
||||||
import com.android.tools.smali.dexlib2.Opcode
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
|
||||||
import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction31i
|
import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction31i
|
||||||
import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
|
import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
|
||||||
|
|
||||||
internal var adAttributionId = -1L
|
internal var adAttributionId = -1L
|
||||||
private set
|
private set
|
||||||
|
internal var fullScreenEngagementAdContainer = -1L
|
||||||
|
private set
|
||||||
|
|
||||||
|
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/patches/components/AdsFilter;"
|
||||||
|
|
||||||
private val hideAdsResourcePatch = resourcePatch {
|
private val hideAdsResourcePatch = resourcePatch {
|
||||||
dependsOn(
|
dependsOn(
|
||||||
@@ -37,6 +44,7 @@ private val hideAdsResourcePatch = resourcePatch {
|
|||||||
|
|
||||||
PreferenceScreen.ADS.addPreferences(
|
PreferenceScreen.ADS.addPreferences(
|
||||||
SwitchPreference("revanced_hide_general_ads"),
|
SwitchPreference("revanced_hide_general_ads"),
|
||||||
|
SwitchPreference("revanced_hide_end_screen_store_banner"),
|
||||||
SwitchPreference("revanced_hide_fullscreen_ads"),
|
SwitchPreference("revanced_hide_fullscreen_ads"),
|
||||||
SwitchPreference("revanced_hide_buttoned_ads"),
|
SwitchPreference("revanced_hide_buttoned_ads"),
|
||||||
SwitchPreference("revanced_hide_paid_promotion_label"),
|
SwitchPreference("revanced_hide_paid_promotion_label"),
|
||||||
@@ -52,6 +60,7 @@ private val hideAdsResourcePatch = resourcePatch {
|
|||||||
addLithoFilter("Lapp/revanced/extension/youtube/patches/components/AdsFilter;")
|
addLithoFilter("Lapp/revanced/extension/youtube/patches/components/AdsFilter;")
|
||||||
|
|
||||||
adAttributionId = resourceMappings["id", "ad_attribution"]
|
adAttributionId = resourceMappings["id", "ad_attribution"]
|
||||||
|
fullScreenEngagementAdContainer = resourceMappings["id", "fullscreen_engagement_ad_container"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,6 +91,23 @@ val hideAdsPatch = bytecodePatch(
|
|||||||
)
|
)
|
||||||
|
|
||||||
execute {
|
execute {
|
||||||
|
// Hide end screen store banner
|
||||||
|
|
||||||
|
fullScreenEngagementAdContainerFingerprint.method.apply {
|
||||||
|
val addListIndex = indexOfAddListInstruction(this)
|
||||||
|
val addListInstruction = getInstruction<FiveRegisterInstruction>(addListIndex)
|
||||||
|
val listRegister = addListInstruction.registerC
|
||||||
|
val objectRegister = addListInstruction.registerD
|
||||||
|
|
||||||
|
replaceInstruction(
|
||||||
|
addListIndex,
|
||||||
|
"invoke-static { v$listRegister, v$objectRegister }, $EXTENSION_CLASS_DESCRIPTOR" +
|
||||||
|
"->hideEndScreenStoreBanner(Ljava/util/List;Ljava/lang/Object;)V"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hide ad views
|
||||||
|
|
||||||
classes.forEach { classDef ->
|
classes.forEach { classDef ->
|
||||||
classDef.methods.forEach { method ->
|
classDef.methods.forEach { method ->
|
||||||
with(method.implementation) {
|
with(method.implementation) {
|
||||||
@@ -110,7 +136,7 @@ val hideAdsPatch = bytecodePatch(
|
|||||||
.injectHideViewCall(
|
.injectHideViewCall(
|
||||||
insertIndex,
|
insertIndex,
|
||||||
viewRegister,
|
viewRegister,
|
||||||
"Lapp/revanced/extension/youtube/patches/components/AdsFilter;",
|
EXTENSION_CLASS_DESCRIPTOR,
|
||||||
"hideAdAttributionView",
|
"hideAdAttributionView",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -147,6 +147,7 @@ val hideLayoutComponentsPatch = bytecodePatch(
|
|||||||
SwitchPreference("revanced_hide_attributes_section"),
|
SwitchPreference("revanced_hide_attributes_section"),
|
||||||
SwitchPreference("revanced_hide_chapters_section"),
|
SwitchPreference("revanced_hide_chapters_section"),
|
||||||
SwitchPreference("revanced_hide_info_cards_section"),
|
SwitchPreference("revanced_hide_info_cards_section"),
|
||||||
|
SwitchPreference("revanced_hide_how_this_was_made_section"),
|
||||||
SwitchPreference("revanced_hide_key_concepts_section"),
|
SwitchPreference("revanced_hide_key_concepts_section"),
|
||||||
SwitchPreference("revanced_hide_podcast_section"),
|
SwitchPreference("revanced_hide_podcast_section"),
|
||||||
SwitchPreference("revanced_hide_transcript_section"),
|
SwitchPreference("revanced_hide_transcript_section"),
|
||||||
|
|||||||
@@ -68,14 +68,6 @@ private val seekbarColorResourcePatch = resourcePatch {
|
|||||||
"color",
|
"color",
|
||||||
"inline_time_bar_played_not_highlighted_color",
|
"inline_time_bar_played_not_highlighted_color",
|
||||||
]
|
]
|
||||||
ytYoutubeMagentaColorId = resourceMappings[
|
|
||||||
"color",
|
|
||||||
"yt_youtube_magenta",
|
|
||||||
]
|
|
||||||
ytStaticBrandRedId = resourceMappings[
|
|
||||||
"attr",
|
|
||||||
"ytStaticBrandRed",
|
|
||||||
]
|
|
||||||
|
|
||||||
// Modify the resume playback drawable and replace the progress bar with a custom drawable.
|
// Modify the resume playback drawable and replace the progress bar with a custom drawable.
|
||||||
document("res/drawable/resume_playback_progressbar_drawable.xml").use { document ->
|
document("res/drawable/resume_playback_progressbar_drawable.xml").use { document ->
|
||||||
@@ -97,6 +89,15 @@ private val seekbarColorResourcePatch = resourcePatch {
|
|||||||
return@execute
|
return@execute
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ytYoutubeMagentaColorId = resourceMappings[
|
||||||
|
"color",
|
||||||
|
"yt_youtube_magenta",
|
||||||
|
]
|
||||||
|
ytStaticBrandRedId = resourceMappings[
|
||||||
|
"attr",
|
||||||
|
"ytStaticBrandRed",
|
||||||
|
]
|
||||||
|
|
||||||
// Add attribute and styles for splash screen custom color.
|
// Add attribute and styles for splash screen custom color.
|
||||||
// Using a style is the only way to selectively change just the seekbar fill color.
|
// Using a style is the only way to selectively change just the seekbar fill color.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -0,0 +1,74 @@
|
|||||||
|
package app.revanced.patches.youtube.video.hdr
|
||||||
|
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.patches.all.misc.resources.addResources
|
||||||
|
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||||
|
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
|
||||||
|
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||||
|
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||||
|
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||||
|
import app.revanced.util.getReference
|
||||||
|
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||||
|
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||||
|
|
||||||
|
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||||
|
"Lapp/revanced/extension/youtube/patches/DisableHdrPatch;"
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val disableHdrPatch = bytecodePatch(
|
||||||
|
name = "Disable HDR video",
|
||||||
|
description = "Adds an option to disable video HDR.",
|
||||||
|
) {
|
||||||
|
dependsOn(
|
||||||
|
sharedExtensionPatch,
|
||||||
|
settingsPatch,
|
||||||
|
addResourcesPatch,
|
||||||
|
)
|
||||||
|
|
||||||
|
compatibleWith(
|
||||||
|
"com.google.android.youtube"(
|
||||||
|
"18.38.44",
|
||||||
|
"18.49.37",
|
||||||
|
"19.16.39",
|
||||||
|
"19.25.37",
|
||||||
|
"19.34.42",
|
||||||
|
"19.43.41",
|
||||||
|
"19.45.38",
|
||||||
|
"19.46.42",
|
||||||
|
"19.47.53",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
execute {
|
||||||
|
addResources("youtube", "video.hdr.disableHdrPatch")
|
||||||
|
|
||||||
|
PreferenceScreen.VIDEO.addPreferences(
|
||||||
|
SwitchPreference("revanced_disable_hdr_video")
|
||||||
|
)
|
||||||
|
|
||||||
|
hdrCapabilityFingerprint.let {
|
||||||
|
it.originalMethod.apply {
|
||||||
|
val stringIndex = it.stringMatches!!.first().index
|
||||||
|
val navigateIndex = indexOfFirstInstructionOrThrow(stringIndex) {
|
||||||
|
val reference = getReference<MethodReference>()
|
||||||
|
reference?.parameterTypes == listOf("I", "Landroid/view/Display;") &&
|
||||||
|
reference.returnType == "Z"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modify the HDR lookup method (Method is in the same class as the fingerprint).
|
||||||
|
navigate(this).to(navigateIndex).stop().addInstructionsWithLabels(
|
||||||
|
0,
|
||||||
|
"""
|
||||||
|
invoke-static {}, $EXTENSION_CLASS_DESCRIPTOR->disableHDRVideo()Z
|
||||||
|
move-result v0
|
||||||
|
if-nez v0, :useHdr
|
||||||
|
return v0
|
||||||
|
:useHdr
|
||||||
|
nop
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package app.revanced.patches.youtube.video.hdr
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint
|
||||||
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
|
|
||||||
|
internal val hdrCapabilityFingerprint = fingerprint {
|
||||||
|
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||||
|
strings(
|
||||||
|
"av1_profile_main_10_hdr_10_plus_supported",
|
||||||
|
"video/av01"
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -169,9 +169,9 @@ Tap the continue button and allow optimization changes."</string>
|
|||||||
You will not be notified of any unexpected events."</string>
|
You will not be notified of any unexpected events."</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||||
<string name="revanced_disable_like_subscribe_glow_title">Disable like / subscribe button glow</string>
|
<string name="revanced_disable_like_subscribe_glow_title">Disable Like and Subscribe button glow</string>
|
||||||
<string name="revanced_disable_like_subscribe_glow_summary_on">Like and subscribe button will not glow when mentioned</string>
|
<string name="revanced_disable_like_subscribe_glow_summary_on">Like and Subscribe button will not glow when mentioned</string>
|
||||||
<string name="revanced_disable_like_subscribe_glow_summary_off">Like and subscribe button will glow when mentioned</string>
|
<string name="revanced_disable_like_subscribe_glow_summary_off">Like and Subscribe button will glow when mentioned</string>
|
||||||
<string name="revanced_hide_album_cards_title">Hide album cards</string>
|
<string name="revanced_hide_album_cards_title">Hide album cards</string>
|
||||||
<string name="revanced_hide_album_cards_summary_on">Album cards are hidden</string>
|
<string name="revanced_hide_album_cards_summary_on">Album cards are hidden</string>
|
||||||
<string name="revanced_hide_album_cards_summary_off">Album cards are shown</string>
|
<string name="revanced_hide_album_cards_summary_off">Album cards are shown</string>
|
||||||
@@ -224,9 +224,9 @@ You will not be notified of any unexpected events."</string>
|
|||||||
<string name="revanced_hide_chips_shelf_title">Hide chips shelf</string>
|
<string name="revanced_hide_chips_shelf_title">Hide chips shelf</string>
|
||||||
<string name="revanced_hide_chips_shelf_summary_on">Chips shelf is hidden</string>
|
<string name="revanced_hide_chips_shelf_summary_on">Chips shelf is hidden</string>
|
||||||
<string name="revanced_hide_chips_shelf_summary_off">Chips shelf is shown</string>
|
<string name="revanced_hide_chips_shelf_summary_off">Chips shelf is shown</string>
|
||||||
<string name="revanced_hide_expandable_chip_title">Hide expandable chip under videos</string>
|
<string name="revanced_hide_expandable_chip_title">Hide expandable card under videos</string>
|
||||||
<string name="revanced_hide_expandable_chip_summary_on">Expandable chips are hidden</string>
|
<string name="revanced_hide_expandable_chip_summary_on">Expandable cards are hidden</string>
|
||||||
<string name="revanced_hide_expandable_chip_summary_off">Expandable chips are shown</string>
|
<string name="revanced_hide_expandable_chip_summary_off">Expandable cards are shown</string>
|
||||||
<string name="revanced_hide_community_posts_title">Hide community posts</string>
|
<string name="revanced_hide_community_posts_title">Hide community posts</string>
|
||||||
<string name="revanced_hide_community_posts_summary_on">Community posts are hidden</string>
|
<string name="revanced_hide_community_posts_summary_on">Community posts are hidden</string>
|
||||||
<string name="revanced_hide_community_posts_summary_off">Community posts are shown</string>
|
<string name="revanced_hide_community_posts_summary_off">Community posts are shown</string>
|
||||||
@@ -287,6 +287,9 @@ You will not be notified of any unexpected events."</string>
|
|||||||
<string name="revanced_hide_chapters_section_title">Hide Chapters section</string>
|
<string name="revanced_hide_chapters_section_title">Hide Chapters section</string>
|
||||||
<string name="revanced_hide_chapters_section_summary_on">Chapters section is hidden</string>
|
<string name="revanced_hide_chapters_section_summary_on">Chapters section is hidden</string>
|
||||||
<string name="revanced_hide_chapters_section_summary_off">Chapters section is shown</string>
|
<string name="revanced_hide_chapters_section_summary_off">Chapters section is shown</string>
|
||||||
|
<string name="revanced_hide_how_this_was_made_section_title">Hide \'How this content was made\' section</string>
|
||||||
|
<string name="revanced_hide_how_this_was_made_section_summary_on">\'How this content was made\' section is hidden</string>
|
||||||
|
<string name="revanced_hide_how_this_was_made_section_summary_off">\'How this content was made\' section is shown</string>
|
||||||
<string name="revanced_hide_podcast_section_title">Hide \'Explore the podcast\' section</string>
|
<string name="revanced_hide_podcast_section_title">Hide \'Explore the podcast\' section</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_on">\'Explore the podcast\' section is hidden</string>
|
<string name="revanced_hide_podcast_section_summary_on">\'Explore the podcast\' section is hidden</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_off">\'Explore the podcast\' section is shown</string>
|
<string name="revanced_hide_podcast_section_summary_off">\'Explore the podcast\' section is shown</string>
|
||||||
@@ -331,7 +334,7 @@ You will not be notified of any unexpected events."</string>
|
|||||||
<string name="revanced_hide_comments_preview_comment_title">Hide preview comment</string>
|
<string name="revanced_hide_comments_preview_comment_title">Hide preview comment</string>
|
||||||
<string name="revanced_hide_comments_preview_comment_summary_on">Preview comment is hidden</string>
|
<string name="revanced_hide_comments_preview_comment_summary_on">Preview comment is hidden</string>
|
||||||
<string name="revanced_hide_comments_preview_comment_summary_off">Preview comment is shown</string>
|
<string name="revanced_hide_comments_preview_comment_summary_off">Preview comment is shown</string>
|
||||||
<string name="revanced_hide_comments_thanks_button_title">Hide thanks button</string>
|
<string name="revanced_hide_comments_thanks_button_title">Hide Thanks button</string>
|
||||||
<string name="revanced_hide_comments_thanks_button_summary_on">Thanks button is hidden</string>
|
<string name="revanced_hide_comments_thanks_button_summary_on">Thanks button is hidden</string>
|
||||||
<string name="revanced_hide_comments_thanks_button_summary_off">Thanks button is shown</string>
|
<string name="revanced_hide_comments_thanks_button_summary_off">Thanks button is shown</string>
|
||||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Hide timestamp and emoji buttons</string>
|
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Hide timestamp and emoji buttons</string>
|
||||||
@@ -360,12 +363,12 @@ If a Doodle is currently showing in your region and this hide setting is on, the
|
|||||||
<string name="revanced_hide_keyword_content_home_title">Hide home videos by keywords</string>
|
<string name="revanced_hide_keyword_content_home_title">Hide home videos by keywords</string>
|
||||||
<string name="revanced_hide_keyword_content_home_summary_on">Videos in the home tab are filtered by keywords</string>
|
<string name="revanced_hide_keyword_content_home_summary_on">Videos in the home tab are filtered by keywords</string>
|
||||||
<string name="revanced_hide_keyword_content_home_summary_off">Videos in the home tab are not filtered by keywords</string>
|
<string name="revanced_hide_keyword_content_home_summary_off">Videos in the home tab are not filtered by keywords</string>
|
||||||
<string name="revanced_hide_keyword_content_subscriptions_title">Hide subscription videos by keywords</string>
|
|
||||||
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Videos in the subscriptions tab are filtered by keywords</string>
|
|
||||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Videos in the subscriptions tab are not filtered by keywords</string>
|
|
||||||
<string name="revanced_hide_keyword_content_search_title">Hide search results by keywords</string>
|
<string name="revanced_hide_keyword_content_search_title">Hide search results by keywords</string>
|
||||||
<string name="revanced_hide_keyword_content_search_summary_on">Search results are filtered by keywords</string>
|
<string name="revanced_hide_keyword_content_search_summary_on">Search results are filtered by keywords</string>
|
||||||
<string name="revanced_hide_keyword_content_search_summary_off">Search results are not filtered by keywords</string>
|
<string name="revanced_hide_keyword_content_search_summary_off">Search results are not filtered by keywords</string>
|
||||||
|
<string name="revanced_hide_keyword_content_subscriptions_title">Hide subscription videos by keywords</string>
|
||||||
|
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Videos in the subscriptions tab are filtered by keywords</string>
|
||||||
|
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Videos in the subscriptions tab are not filtered by keywords</string>
|
||||||
<string name="revanced_hide_keyword_content_phrases_title">Keywords to hide</string>
|
<string name="revanced_hide_keyword_content_phrases_title">Keywords to hide</string>
|
||||||
<!-- For localization it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
<!-- For localization it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
||||||
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
|
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
|
||||||
@@ -412,16 +415,19 @@ This feature is only available for older devices"</string>
|
|||||||
<string name="revanced_hide_products_banner_title">Hide banner to view products</string>
|
<string name="revanced_hide_products_banner_title">Hide banner to view products</string>
|
||||||
<string name="revanced_hide_products_banner_summary_on">Banner is hidden</string>
|
<string name="revanced_hide_products_banner_summary_on">Banner is hidden</string>
|
||||||
<string name="revanced_hide_products_banner_summary_off">Banner is shown</string>
|
<string name="revanced_hide_products_banner_summary_off">Banner is shown</string>
|
||||||
|
<string name="revanced_hide_end_screen_store_banner_title">Hide end screen store banner</string>
|
||||||
|
<string name="revanced_hide_end_screen_store_banner_summary_on">Store banner is hidden</string>
|
||||||
|
<string name="revanced_hide_end_screen_store_banner_summary_off">Store banner is shown</string>
|
||||||
<string name="revanced_hide_player_store_shelf_title">Hide player shopping shelf</string>
|
<string name="revanced_hide_player_store_shelf_title">Hide player shopping shelf</string>
|
||||||
<string name="revanced_hide_player_store_shelf_summary_on">Shopping shelf is hidden</string>
|
<string name="revanced_hide_player_store_shelf_summary_on">Shopping shelf is hidden</string>
|
||||||
<string name="revanced_hide_player_store_shelf_summary_off">Shopping shelf is shown</string>
|
<string name="revanced_hide_player_store_shelf_summary_off">Shopping shelf is shown</string>
|
||||||
<string name="revanced_hide_shopping_links_title">Hide shopping links in video description</string>
|
<string name="revanced_hide_shopping_links_title">Hide shopping links</string>
|
||||||
<string name="revanced_hide_shopping_links_summary_on">Shopping links are hidden</string>
|
<string name="revanced_hide_shopping_links_summary_on">Video description shopping links are hidden</string>
|
||||||
<string name="revanced_hide_shopping_links_summary_off">Shopping links are shown</string>
|
<string name="revanced_hide_shopping_links_summary_off">Video description shopping links are shown</string>
|
||||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_store_button_title">Hide the \'Visit store\' button on channel pages</string>
|
<string name="revanced_hide_visit_store_button_title">Hide \'Visit store\' button</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_on">Button is hidden</string>
|
<string name="revanced_hide_visit_store_button_summary_on">Button is hidden on channel page</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_off">Button is shown</string>
|
<string name="revanced_hide_visit_store_button_summary_off">Button is shown on channel page</string>
|
||||||
<string name="revanced_hide_web_search_results_title">Hide web search results</string>
|
<string name="revanced_hide_web_search_results_title">Hide web search results</string>
|
||||||
<string name="revanced_hide_web_search_results_summary_on">Web search results are hidden</string>
|
<string name="revanced_hide_web_search_results_summary_on">Web search results are hidden</string>
|
||||||
<string name="revanced_hide_web_search_results_summary_off">Web search results are shown</string>
|
<string name="revanced_hide_web_search_results_summary_off">Web search results are shown</string>
|
||||||
@@ -464,7 +470,7 @@ This feature is only available for older devices"</string>
|
|||||||
<string name="revanced_external_downloader_summary_on">Download button shown in player</string>
|
<string name="revanced_external_downloader_summary_on">Download button shown in player</string>
|
||||||
<string name="revanced_external_downloader_summary_off">Download button not shown in player</string>
|
<string name="revanced_external_downloader_summary_off">Download button not shown in player</string>
|
||||||
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
|
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
|
||||||
<string name="revanced_external_downloader_action_button_title">Override download action button</string>
|
<string name="revanced_external_downloader_action_button_title">Override Download action button</string>
|
||||||
<string name="revanced_external_downloader_action_button_summary_on">Download button opens your external downloader</string>
|
<string name="revanced_external_downloader_action_button_summary_on">Download button opens your external downloader</string>
|
||||||
<string name="revanced_external_downloader_action_button_summary_off">Download button opens the native in-app downloader</string>
|
<string name="revanced_external_downloader_action_button_summary_off">Download button opens the native in-app downloader</string>
|
||||||
<string name="revanced_external_downloader_name_title">Downloader package name</string>
|
<string name="revanced_external_downloader_name_title">Downloader package name</string>
|
||||||
@@ -651,14 +657,14 @@ Note: Enabling this also forcibly hides video ads"</string>
|
|||||||
<string name="revanced_hide_player_previous_next_buttons_title">Hide previous & next video buttons</string>
|
<string name="revanced_hide_player_previous_next_buttons_title">Hide previous & next video buttons</string>
|
||||||
<string name="revanced_hide_player_previous_next_buttons_summary_on">Buttons are hidden</string>
|
<string name="revanced_hide_player_previous_next_buttons_summary_on">Buttons are hidden</string>
|
||||||
<string name="revanced_hide_player_previous_next_buttons_summary_off">Buttons are shown</string>
|
<string name="revanced_hide_player_previous_next_buttons_summary_off">Buttons are shown</string>
|
||||||
<string name="revanced_hide_cast_button_title">Hide cast button</string>
|
<string name="revanced_hide_cast_button_title">Hide Cast button</string>
|
||||||
<string name="revanced_hide_cast_button_summary_on">Cast button is hidden</string>
|
<string name="revanced_hide_cast_button_summary_on">Cast button is hidden</string>
|
||||||
<string name="revanced_hide_cast_button_summary_off">Cast button is shown</string>
|
<string name="revanced_hide_cast_button_summary_off">Cast button is shown</string>
|
||||||
<!-- This button does not display any text, but 'captions' should be translated using the same wording used as the translation of 'revanced_hide_player_flyout_captions_title' -->
|
<!-- This button does not display any text, but 'captions' should be translated using the same wording used as the translation of 'revanced_hide_player_flyout_captions_title' -->
|
||||||
<string name="revanced_hide_captions_button_title">Hide captions button</string>
|
<string name="revanced_hide_captions_button_title">Hide Captions button</string>
|
||||||
<string name="revanced_hide_captions_button_summary_on">Captions button is hidden</string>
|
<string name="revanced_hide_captions_button_summary_on">Captions button is hidden</string>
|
||||||
<string name="revanced_hide_captions_button_summary_off">Captions button is shown</string>
|
<string name="revanced_hide_captions_button_summary_off">Captions button is shown</string>
|
||||||
<string name="revanced_hide_autoplay_button_title">Hide autoplay button</string>
|
<string name="revanced_hide_autoplay_button_title">Hide Autoplay button</string>
|
||||||
<string name="revanced_hide_autoplay_button_summary_on">Autoplay button is hidden</string>
|
<string name="revanced_hide_autoplay_button_summary_on">Autoplay button is hidden</string>
|
||||||
<string name="revanced_hide_autoplay_button_summary_off">Autoplay button is shown</string>
|
<string name="revanced_hide_autoplay_button_summary_off">Autoplay button is shown</string>
|
||||||
</patch>
|
</patch>
|
||||||
@@ -668,7 +674,7 @@ Note: Enabling this also forcibly hides video ads"</string>
|
|||||||
<string name="revanced_hide_endscreen_cards_summary_off">End screen cards are shown</string>
|
<string name="revanced_hide_endscreen_cards_summary_off">End screen cards are shown</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.fullscreenambientmode.disableFullscreenAmbientModePatch">
|
<patch id="layout.hide.fullscreenambientmode.disableFullscreenAmbientModePatch">
|
||||||
<string name="revanced_disable_fullscreen_ambient_mode_title">Disable ambient mode in fullscreen</string>
|
<string name="revanced_disable_fullscreen_ambient_mode_title">Disable Ambient mode in fullscreen</string>
|
||||||
<string name="revanced_disable_fullscreen_ambient_mode_summary_on">Ambient mode disabled</string>
|
<string name="revanced_disable_fullscreen_ambient_mode_summary_on">Ambient mode disabled</string>
|
||||||
<string name="revanced_disable_fullscreen_ambient_mode_summary_off">Ambient mode enabled</string>
|
<string name="revanced_disable_fullscreen_ambient_mode_summary_off">Ambient mode enabled</string>
|
||||||
</patch>
|
</patch>
|
||||||
@@ -708,38 +714,38 @@ Note: Enabling this also forcibly hides video ads"</string>
|
|||||||
<string name="revanced_hide_shorts_history_summary_on">Hidden in watch history</string>
|
<string name="revanced_hide_shorts_history_summary_on">Hidden in watch history</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_off">Shown in watch history</string>
|
<string name="revanced_hide_shorts_history_summary_off">Shown in watch history</string>
|
||||||
<!-- 'join' should be translated using the same localized wording YouTube displays for the button. -->
|
<!-- 'join' should be translated using the same localized wording YouTube displays for the button. -->
|
||||||
<string name="revanced_hide_shorts_join_button_title">Hide join button</string>
|
<string name="revanced_hide_shorts_join_button_title">Hide Join button</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_on">Join button is hidden</string>
|
<string name="revanced_hide_shorts_join_button_summary_on">Join button is hidden</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_off">Join button is shown</string>
|
<string name="revanced_hide_shorts_join_button_summary_off">Join button is shown</string>
|
||||||
<!-- 'subscribe' should be translated using the same localized wording YouTube displays for the button. -->
|
<!-- 'subscribe' should be translated using the same localized wording YouTube displays for the button. -->
|
||||||
<string name="revanced_hide_shorts_subscribe_button_title">Hide subscribe button</string>
|
<string name="revanced_hide_shorts_subscribe_button_title">Hide Subscribe button</string>
|
||||||
<string name="revanced_hide_shorts_subscribe_button_summary_on">Subscribe button is hidden</string>
|
<string name="revanced_hide_shorts_subscribe_button_summary_on">Subscribe button is hidden</string>
|
||||||
<string name="revanced_hide_shorts_subscribe_button_summary_off">Subscribe button is shown</string>
|
<string name="revanced_hide_shorts_subscribe_button_summary_off">Subscribe button is shown</string>
|
||||||
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Hide paused overlay buttons</string>
|
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Hide paused overlay buttons</string>
|
||||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_on">Paused overlay buttons are hidden</string>
|
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_on">Paused overlay buttons are hidden</string>
|
||||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_off">Paused overlay buttons are shown</string>
|
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_off">Paused overlay buttons are shown</string>
|
||||||
<string name="revanced_hide_shorts_shop_button_title">Hide shop button</string>
|
<string name="revanced_hide_shorts_shop_button_title">Hide Shop button</string>
|
||||||
<string name="revanced_hide_shorts_shop_button_summary_on">Shop button is hidden</string>
|
<string name="revanced_hide_shorts_shop_button_summary_on">Shop button is hidden</string>
|
||||||
<string name="revanced_hide_shorts_shop_button_summary_off">Shop button is shown</string>
|
<string name="revanced_hide_shorts_shop_button_summary_off">Shop button is shown</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_title">Hide super thanks button</string>
|
<string name="revanced_hide_shorts_super_thanks_button_title">Hide Buy Super Thanks button</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Super thanks button is hidden</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Super Thanks button is hidden</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Super thanks button is shown</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Super Thanks button is shown</string>
|
||||||
<string name="revanced_hide_shorts_tagged_products_title">Hide tagged products</string>
|
<string name="revanced_hide_shorts_tagged_products_title">Hide tagged products</string>
|
||||||
<string name="revanced_hide_shorts_tagged_products_summary_on">Tagged products are hidden</string>
|
<string name="revanced_hide_shorts_tagged_products_summary_on">Tagged products are hidden</string>
|
||||||
<string name="revanced_hide_shorts_tagged_products_summary_off">Tagged products are shown</string>
|
<string name="revanced_hide_shorts_tagged_products_summary_off">Tagged products are shown</string>
|
||||||
<string name="revanced_hide_shorts_location_label_title">Hide location label</string>
|
<string name="revanced_hide_shorts_location_label_title">Hide location label</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Location label is hidden</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Location label is hidden</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Location label is shown</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Location label is shown</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Hide save music button</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Hide Save music button</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Save music button is hidden</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Save music button is hidden</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Save music button is shown</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Save music button is shown</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_title">Hide use template button</string>
|
<string name="revanced_hide_shorts_use_template_button_title">Hide Use template button</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_summary_on">Use template button is hidden</string>
|
<string name="revanced_hide_shorts_use_template_button_summary_on">Use template button is hidden</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_summary_off">Use template button is shown</string>
|
<string name="revanced_hide_shorts_use_template_button_summary_off">Use template button is shown</string>
|
||||||
<string name="revanced_hide_shorts_upcoming_button_title">Hide upcoming button</string>
|
<string name="revanced_hide_shorts_upcoming_button_title">Hide Upcoming button</string>
|
||||||
<string name="revanced_hide_shorts_upcoming_button_summary_on">Upcoming button is hidden</string>
|
<string name="revanced_hide_shorts_upcoming_button_summary_on">Upcoming button is hidden</string>
|
||||||
<string name="revanced_hide_shorts_upcoming_button_summary_off">Upcoming button is shown</string>
|
<string name="revanced_hide_shorts_upcoming_button_summary_off">Upcoming button is shown</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_title">Hide green screen button</string>
|
<string name="revanced_hide_shorts_green_screen_button_title">Hide Green screen button</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Green screen button is hidden</string>
|
<string name="revanced_hide_shorts_green_screen_button_summary_on">Green screen button is hidden</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Green screen button is shown</string>
|
<string name="revanced_hide_shorts_green_screen_button_summary_off">Green screen button is shown</string>
|
||||||
<string name="revanced_hide_shorts_hashtag_button_title">Hide hashtag button</string>
|
<string name="revanced_hide_shorts_hashtag_button_title">Hide hashtag button</string>
|
||||||
@@ -751,24 +757,24 @@ Note: Enabling this also forcibly hides video ads"</string>
|
|||||||
<string name="revanced_hide_shorts_stickers_title">Hide stickers</string>
|
<string name="revanced_hide_shorts_stickers_title">Hide stickers</string>
|
||||||
<string name="revanced_hide_shorts_stickers_summary_on">Stickers are hidden</string>
|
<string name="revanced_hide_shorts_stickers_summary_on">Stickers are hidden</string>
|
||||||
<string name="revanced_hide_shorts_stickers_summary_off">Stickers are shown</string>
|
<string name="revanced_hide_shorts_stickers_summary_off">Stickers are shown</string>
|
||||||
<string name="revanced_hide_shorts_like_fountain_title">Hide like fountain</string>
|
<string name="revanced_hide_shorts_like_fountain_title">Hide Like button fountain animation</string>
|
||||||
<string name="revanced_hide_shorts_like_fountain_summary_on">Like button fountain animation is hidden</string>
|
<string name="revanced_hide_shorts_like_fountain_summary_on">Like button fountain animation is hidden</string>
|
||||||
<string name="revanced_hide_shorts_like_fountain_summary_off">Like button fountain animation is shown</string>
|
<string name="revanced_hide_shorts_like_fountain_summary_off">Like button fountain animation is shown</string>
|
||||||
<string name="revanced_hide_shorts_like_button_title">Hide like button</string>
|
<string name="revanced_hide_shorts_like_button_title">Hide Like button</string>
|
||||||
<string name="revanced_hide_shorts_like_button_summary_on">Like button is hidden</string>
|
<string name="revanced_hide_shorts_like_button_summary_on">Like button is hidden</string>
|
||||||
<string name="revanced_hide_shorts_like_button_summary_off">Like button is shown</string>
|
<string name="revanced_hide_shorts_like_button_summary_off">Like button is shown</string>
|
||||||
<string name="revanced_hide_shorts_dislike_button_title">Hide dislike button</string>
|
<string name="revanced_hide_shorts_dislike_button_title">Hide Dislike button</string>
|
||||||
<string name="revanced_hide_shorts_dislike_button_summary_on">Dislike button is hidden</string>
|
<string name="revanced_hide_shorts_dislike_button_summary_on">Dislike button is hidden</string>
|
||||||
<string name="revanced_hide_shorts_dislike_button_summary_off">Dislike button is shown</string>
|
<string name="revanced_hide_shorts_dislike_button_summary_off">Dislike button is shown</string>
|
||||||
<string name="revanced_hide_shorts_comments_button_title">Hide comments button</string>
|
<string name="revanced_hide_shorts_comments_button_title">Hide Comments button</string>
|
||||||
<string name="revanced_hide_shorts_comments_button_summary_on">Comments button is hidden</string>
|
<string name="revanced_hide_shorts_comments_button_summary_on">Comments button is hidden</string>
|
||||||
<string name="revanced_hide_shorts_comments_button_summary_off">Comments button is shown</string>
|
<string name="revanced_hide_shorts_comments_button_summary_off">Comments button is shown</string>
|
||||||
<!-- 'remix' should be translated using the same localized wording YouTube displays for the button. -->
|
<!-- 'remix' should be translated using the same localized wording YouTube displays for the button. -->
|
||||||
<string name="revanced_hide_shorts_remix_button_title">Hide remix button</string>
|
<string name="revanced_hide_shorts_remix_button_title">Hide Remix button</string>
|
||||||
<string name="revanced_hide_shorts_remix_button_summary_on">Remix button is hidden</string>
|
<string name="revanced_hide_shorts_remix_button_summary_on">Remix button is hidden</string>
|
||||||
<string name="revanced_hide_shorts_remix_button_summary_off">Remix button is shown</string>
|
<string name="revanced_hide_shorts_remix_button_summary_off">Remix button is shown</string>
|
||||||
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
|
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
|
||||||
<string name="revanced_hide_shorts_share_button_title">Hide share button</string>
|
<string name="revanced_hide_shorts_share_button_title">Hide Share button</string>
|
||||||
<string name="revanced_hide_shorts_share_button_summary_on">Share button is hidden</string>
|
<string name="revanced_hide_shorts_share_button_summary_on">Share button is hidden</string>
|
||||||
<string name="revanced_hide_shorts_share_button_summary_off">Share button is shown</string>
|
<string name="revanced_hide_shorts_share_button_summary_off">Share button is shown</string>
|
||||||
<string name="revanced_hide_shorts_info_panel_title">Hide info panel</string>
|
<string name="revanced_hide_shorts_info_panel_title">Hide info panel</string>
|
||||||
@@ -847,7 +853,7 @@ Limitation: Dislikes may not appear in incognito mode"</string>
|
|||||||
<string name="revanced_ryd_dislike_percentage_summary_on">Dislikes shown as percentage</string>
|
<string name="revanced_ryd_dislike_percentage_summary_on">Dislikes shown as percentage</string>
|
||||||
<string name="revanced_ryd_dislike_percentage_summary_off">Dislikes shown as number</string>
|
<string name="revanced_ryd_dislike_percentage_summary_off">Dislikes shown as number</string>
|
||||||
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
|
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
|
||||||
<string name="revanced_ryd_compact_layout_title">Compact like button</string>
|
<string name="revanced_ryd_compact_layout_title">Compact Like button</string>
|
||||||
<string name="revanced_ryd_compact_layout_summary_on">Like button styled for minimum width</string>
|
<string name="revanced_ryd_compact_layout_summary_on">Like button styled for minimum width</string>
|
||||||
<string name="revanced_ryd_compact_layout_summary_off">Like button styled for best appearance</string>
|
<string name="revanced_ryd_compact_layout_summary_off">Like button styled for best appearance</string>
|
||||||
<string name="revanced_ryd_toast_on_connection_error_title">Show a toast if API is not available</string>
|
<string name="revanced_ryd_toast_on_connection_error_title">Show a toast if API is not available</string>
|
||||||
@@ -897,7 +903,7 @@ This feature works best with a video quality of 720p or lower and when using a v
|
|||||||
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
|
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
|
||||||
<string name="revanced_sb_settings_title">SponsorBlock</string>
|
<string name="revanced_sb_settings_title">SponsorBlock</string>
|
||||||
<string name="revanced_sb_enable_sb">Enable SponsorBlock</string>
|
<string name="revanced_sb_enable_sb">Enable SponsorBlock</string>
|
||||||
<string name="revanced_sb_enable_sb_sum">SponsorBlock is a crowd-sourced system for skipping annoying parts of YouTube videos</string>
|
<string name="revanced_sb_enable_sb_sum">SponsorBlock is a crowdsourced system for skipping annoying parts of YouTube videos</string>
|
||||||
<string name="revanced_sb_appearance_category">Appearance</string>
|
<string name="revanced_sb_appearance_category">Appearance</string>
|
||||||
<string name="revanced_sb_enable_voting">Show voting button</string>
|
<string name="revanced_sb_enable_voting">Show voting button</string>
|
||||||
<string name="revanced_sb_enable_voting_sum_on">Segment voting button is shown</string>
|
<string name="revanced_sb_enable_voting_sum_on">Segment voting button is shown</string>
|
||||||
@@ -962,7 +968,7 @@ Your user id is like a password and it should never be shared.
|
|||||||
<string name="revanced_sb_segments_sponsor">Sponsor</string>
|
<string name="revanced_sb_segments_sponsor">Sponsor</string>
|
||||||
<string name="revanced_sb_segments_sponsor_sum">Paid promotion, paid referrals and direct advertisements. Not for self-promotion or free shout-outs to causes/creators/websites/products they like</string>
|
<string name="revanced_sb_segments_sponsor_sum">Paid promotion, paid referrals and direct advertisements. Not for self-promotion or free shout-outs to causes/creators/websites/products they like</string>
|
||||||
<string name="revanced_sb_segments_selfpromo">Unpaid/Self Promotion</string>
|
<string name="revanced_sb_segments_selfpromo">Unpaid/Self Promotion</string>
|
||||||
<string name="revanced_sb_segments_selfpromo_sum">Similar to \'Sponsor\' except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with</string>
|
<string name="revanced_sb_segments_selfpromo_sum">Similar to Sponsor except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with</string>
|
||||||
<string name="revanced_sb_segments_interaction">Interaction Reminder (Subscribe)</string>
|
<string name="revanced_sb_segments_interaction">Interaction Reminder (Subscribe)</string>
|
||||||
<string name="revanced_sb_segments_interaction_sum">A short reminder to like, subscribe or follow them in the middle of content. If it is long or about something specific, it should instead be under self promotion</string>
|
<string name="revanced_sb_segments_interaction_sum">A short reminder to like, subscribe or follow them in the middle of content. If it is long or about something specific, it should instead be under self promotion</string>
|
||||||
<string name="revanced_sb_segments_highlight">Highlight</string>
|
<string name="revanced_sb_segments_highlight">Highlight</string>
|
||||||
@@ -1367,6 +1373,11 @@ Enabling this can unlock higher video qualities"</string>
|
|||||||
<string name="revanced_playback_speed_default_title">Default playback speed</string>
|
<string name="revanced_playback_speed_default_title">Default playback speed</string>
|
||||||
<string name="revanced_remember_playback_speed_toast">Changed default speed to: %s</string>
|
<string name="revanced_remember_playback_speed_toast">Changed default speed to: %s</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
<patch id="video.hdr.disableHdrPatch">
|
||||||
|
<string name="revanced_disable_hdr_video_title">Disable HDR video</string>
|
||||||
|
<string name="revanced_disable_hdr_video_summary_on">HDR video is disabled</string>
|
||||||
|
<string name="revanced_disable_hdr_video_summary_off">HDR video is enabled</string>
|
||||||
|
</patch>
|
||||||
<patch id="video.videoqualitymenu.restoreOldVideoQualityMenuResourcePatch">
|
<patch id="video.videoqualitymenu.restoreOldVideoQualityMenuResourcePatch">
|
||||||
<string name="revanced_restore_old_video_quality_menu_title">Restore old video quality menu</string>
|
<string name="revanced_restore_old_video_quality_menu_title">Restore old video quality menu</string>
|
||||||
<string name="revanced_restore_old_video_quality_menu_summary_on">Old video quality menu is shown</string>
|
<string name="revanced_restore_old_video_quality_menu_summary_on">Old video quality menu is shown</string>
|
||||||
@@ -1404,6 +1415,7 @@ AVC has a maximum resolution of 1080p, Opus audio codec is not available, and vi
|
|||||||
• Stable volume is not available
|
• Stable volume is not available
|
||||||
• Force original audio is not available"</string>
|
• Force original audio is not available"</string>
|
||||||
<string name="revanced_spoof_video_streams_about_no_av1">• No AV1 video codec</string>
|
<string name="revanced_spoof_video_streams_about_no_av1">• No AV1 video codec</string>
|
||||||
|
<string name="revanced_spoof_video_streams_about_kids_videos">• Kids videos may not play when logged out or in incognito mode</string>
|
||||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Show in Stats for nerds</string>
|
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Show in Stats for nerds</string>
|
||||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Client type is shown in Stats for nerds</string>
|
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Client type is shown in Stats for nerds</string>
|
||||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Client is hidden in Stats for nerds</string>
|
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Client is hidden in Stats for nerds</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user