diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e4a8628b..f5be06abf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,35 @@ +# [2.229.0-dev.3](https://github.com/anddea/revanced-patches/compare/v2.229.0-dev.2...v2.229.0-dev.3) (2024-09-06) + + +### Bug Fixes + +* **YouTube Music:** Patch failed because of some missing strings ([29a3874](https://github.com/anddea/revanced-patches/commit/29a38742cd8a72357c2a4f2de42e97effbd11e23)) + +# [2.229.0-dev.2](https://github.com/anddea/revanced-patches/compare/v2.229.0-dev.1...v2.229.0-dev.2) (2024-09-06) + + +### Bug Fixes + +* Revert bump dependencies ([d8f988b](https://github.com/anddea/revanced-patches/commit/d8f988bd955f31bd6c4874454585a32d666f942e)) + +# [2.229.0-dev.1](https://github.com/anddea/revanced-patches/compare/v2.228.0...v2.229.0-dev.1) (2024-09-06) + + +### Bug Fixes + +* **YouTube - Disable force auto captions:** Patch doesn't work with Shorts ([a01edc8](https://github.com/anddea/revanced-patches/commit/a01edc84ef41134f5b63b9c84e36ecf20b37bd36)) +* **YouTube Music - SponsorBlock:** SponsorBlock segments at the end of a song cause the player to get stuck ([d986a01](https://github.com/anddea/revanced-patches/commit/d986a0166eb925ec334afdf68dee706e8a3337f6)) + + +### Features + +* **YouTube - Hide ads:** Add `Hide promotion alert banner` setting ([2350d94](https://github.com/anddea/revanced-patches/commit/2350d94136b22403b7aecc6aa91d6db687bb7d4b)) +* **YouTube - Hide player flyout menu:** Restore `Hide Ambient mode menu` setting ([d99bdef](https://github.com/anddea/revanced-patches/commit/d99bdefeb4ef477c5277b00d2c64497858604b68)) +* **YouTube - Player components:** Add `Disable switch mix playlists` setting ([5d8650f](https://github.com/anddea/revanced-patches/commit/5d8650f14d8935ecaf670689e4c8f24042022dc1)) +* **YouTube - Video playback:** Add `Disable playback speed for music` setting ([b77e952](https://github.com/anddea/revanced-patches/commit/b77e9524ef4d8ab6d573e77c516a596ad5ac4652)) +* **YouTube Music - Hide ads:** Add `Hide promotion alert banner` setting ([ca6263c](https://github.com/anddea/revanced-patches/commit/ca6263c18f823507c55d77e15a1aeb268ab90352)) +* **YouTube Music:** Add support versions `7.16.53` ~ `7.17.51` ([390cabe](https://github.com/anddea/revanced-patches/commit/390cabeff02871b89cd3440de148a82008235f08)) + # [2.228.0](https://github.com/anddea/revanced-patches/compare/v2.227.0...v2.228.0) (2024-09-05) diff --git a/README.md b/README.md index a834d3afe..5930abf14 100644 --- a/README.md +++ b/README.md @@ -79,42 +79,42 @@ Check the [wiki](https://github.com/anddea/revanced-patches/wiki) for resources | 💊 Patch | 📜 Description | 🏹 Target Version | |:--------:|:--------------:|:-----------------:| -| `Amoled` | Applies a pure black theme to some components. | 6.29.58 ~ 7.16.52 | -| `Bitrate default value` | Sets the audio quality to 'Always High' when you first install the app. | 6.29.58 ~ 7.16.52 | -| `Bypass image region restrictions` | Adds an option to use a different host for static images, so that images blocked in some countries can be received. | 6.29.58 ~ 7.16.52 | -| `Certificate spoof` | Enables YouTube Music to work with Android Auto by spoofing the YouTube Music certificate. | 6.29.58 ~ 7.16.52 | -| `Change share sheet` | Add option to change from in-app share sheet to system share sheet. | 6.29.58 ~ 7.16.52 | -| `Change start page` | Adds an option to set which page the app opens in instead of the homepage. | 6.29.58 ~ 7.16.52 | -| `Custom branding icon for YouTube Music` | Changes the YouTube Music app icon to the icon specified in options.json. | 6.29.58 ~ 7.16.52 | -| `Custom branding name for YouTube Music` | Renames the YouTube Music app to the name specified in options.json. | 6.29.58 ~ 7.16.52 | -| `Custom header for YouTube Music` | Applies a custom header in the top left corner within the app. | 6.29.58 ~ 7.16.52 | -| `Disable auto captions` | Adds an option to disable captions from being automatically enabled. | 6.29.58 ~ 7.16.52 | -| `Disable dislike redirection` | Adds an option to disable redirection to the next track when clicking the Dislike button. | 6.29.58 ~ 7.16.52 | -| `Enable Cairo splash animation` | Adds an option to enable Cairo splash animation. | 7.08.54 ~ 7.16.52 | -| `Enable OPUS codec` | Adds an option to use the OPUS audio codec instead of the MP4A audio codec. | 6.29.58 ~ 7.16.52 | -| `Enable debug logging` | Adds an option to enable debug logging. | 6.29.58 ~ 7.16.52 | -| `Enable landscape mode` | Adds an option to enable landscape mode when rotating the screen on phones. | 6.29.58 ~ 7.16.52 | -| `Flyout menu components` | Adds options to hide or change flyout menu components. | 6.29.58 ~ 7.16.52 | -| `GmsCore support` | Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services. | 6.29.58 ~ 7.16.52 | -| `Hide account components` | Adds options to hide components related to the account menu. | 6.29.58 ~ 7.16.52 | -| `Hide action bar components` | Adds options to hide action bar components and replace the offline download button with an external download button. | 6.29.58 ~ 7.16.52 | -| `Hide ads` | Adds options to hide ads. | 6.29.58 ~ 7.16.52 | -| `Hide layout components` | Adds options to hide general layout components. | 6.29.58 ~ 7.16.52 | -| `Hide overlay filter` | Removes, at compile time, the dark overlay that appears when player flyout menus are open. | 6.29.58 ~ 7.16.52 | -| `Hide player overlay filter` | Removes, at compile time, the dark overlay that appears when single-tapping in the player. | 6.29.58 ~ 7.16.52 | -| `Navigation bar components` | Adds options to hide or change components related to the navigation bar. | 6.29.58 ~ 7.16.52 | -| `Player components` | Adds options to hide or change components related to the player. | 6.29.58 ~ 7.16.52 | -| `Remove background playback restrictions` | Removes restrictions on background playback, including for kids videos. | 6.29.58 ~ 7.16.52 | -| `Remove viewer discretion dialog` | Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction. | 6.29.58 ~ 7.16.52 | -| `Restore old style library shelf` | Adds an option to return the Library tab to the old style. | 6.29.58 ~ 7.16.52 | -| `Return YouTube Dislike` | Adds an option to show the dislike count of songs using the Return YouTube Dislike API. | 6.29.58 ~ 7.16.52 | -| `Sanitize sharing links` | Adds an option to remove tracking query parameters from URLs when sharing links. | 6.29.58 ~ 7.16.52 | -| `Settings for YouTube Music` | Applies mandatory patches to implement ReVanced Extended settings into the application. | 6.29.58 ~ 7.16.52 | -| `SponsorBlock` | Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as non-music sections. | 6.29.58 ~ 7.16.52 | -| `Spoof app version` | Adds options to spoof the YouTube Music client version. This can remove the radio mode restriction in Canadian regions or disable real-time lyrics. | 6.29.58 ~ 7.16.52 | -| `Translations` | Adds Crowdin translations for YouTube Music. | 6.29.58 ~ 7.16.52 | -| `Video playback` | Adds options to customize settings related to video playback, such as default video quality and playback speed. | 6.29.58 ~ 7.16.52 | -| `Visual preferences icons` | Adds icons to specific preferences in the settings. | 6.29.58 ~ 7.16.52 | +| `Amoled` | Applies a pure black theme to some components. | 6.29.58 ~ 7.17.51 | +| `Bitrate default value` | Sets the audio quality to 'Always High' when you first install the app. | 6.29.58 ~ 7.17.51 | +| `Bypass image region restrictions` | Adds an option to use a different host for static images, so that images blocked in some countries can be received. | 6.29.58 ~ 7.17.51 | +| `Certificate spoof` | Enables YouTube Music to work with Android Auto by spoofing the YouTube Music certificate. | 6.29.58 ~ 7.17.51 | +| `Change share sheet` | Add option to change from in-app share sheet to system share sheet. | 6.29.58 ~ 7.17.51 | +| `Change start page` | Adds an option to set which page the app opens in instead of the homepage. | 6.29.58 ~ 7.17.51 | +| `Custom branding icon for YouTube Music` | Changes the YouTube Music app icon to the icon specified in options.json. | 6.29.58 ~ 7.17.51 | +| `Custom branding name for YouTube Music` | Renames the YouTube Music app to the name specified in options.json. | 6.29.58 ~ 7.17.51 | +| `Custom header for YouTube Music` | Applies a custom header in the top left corner within the app. | 6.29.58 ~ 7.17.51 | +| `Disable auto captions` | Adds an option to disable captions from being automatically enabled. | 6.29.58 ~ 7.17.51 | +| `Disable dislike redirection` | Adds an option to disable redirection to the next track when clicking the Dislike button. | 6.29.58 ~ 7.17.51 | +| `Enable Cairo splash animation` | Adds an option to enable Cairo splash animation. | 7.08.54 ~ 7.17.51 | +| `Enable OPUS codec` | Adds an option to use the OPUS audio codec instead of the MP4A audio codec. | 6.29.58 ~ 7.17.51 | +| `Enable debug logging` | Adds an option to enable debug logging. | 6.29.58 ~ 7.17.51 | +| `Enable landscape mode` | Adds an option to enable landscape mode when rotating the screen on phones. | 6.29.58 ~ 7.17.51 | +| `Flyout menu components` | Adds options to hide or change flyout menu components. | 6.29.58 ~ 7.17.51 | +| `GmsCore support` | Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services. | 6.29.58 ~ 7.17.51 | +| `Hide account components` | Adds options to hide components related to the account menu. | 6.29.58 ~ 7.17.51 | +| `Hide action bar components` | Adds options to hide action bar components and replace the offline download button with an external download button. | 6.29.58 ~ 7.17.51 | +| `Hide ads` | Adds options to hide ads. | 6.29.58 ~ 7.17.51 | +| `Hide layout components` | Adds options to hide general layout components. | 6.29.58 ~ 7.17.51 | +| `Hide overlay filter` | Removes, at compile time, the dark overlay that appears when player flyout menus are open. | 6.29.58 ~ 7.17.51 | +| `Hide player overlay filter` | Removes, at compile time, the dark overlay that appears when single-tapping in the player. | 6.29.58 ~ 7.17.51 | +| `Navigation bar components` | Adds options to hide or change components related to the navigation bar. | 6.29.58 ~ 7.17.51 | +| `Player components` | Adds options to hide or change components related to the player. | 6.29.58 ~ 7.17.51 | +| `Remove background playback restrictions` | Removes restrictions on background playback, including for kids videos. | 6.29.58 ~ 7.17.51 | +| `Remove viewer discretion dialog` | Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction. | 6.29.58 ~ 7.17.51 | +| `Restore old style library shelf` | Adds an option to return the Library tab to the old style. | 6.29.58 ~ 7.17.51 | +| `Return YouTube Dislike` | Adds an option to show the dislike count of songs using the Return YouTube Dislike API. | 6.29.58 ~ 7.17.51 | +| `Sanitize sharing links` | Adds an option to remove tracking query parameters from URLs when sharing links. | 6.29.58 ~ 7.17.51 | +| `Settings for YouTube Music` | Applies mandatory patches to implement ReVanced Extended settings into the application. | 6.29.58 ~ 7.17.51 | +| `SponsorBlock` | Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as non-music sections. | 6.29.58 ~ 7.17.51 | +| `Spoof app version` | Adds options to spoof the YouTube Music client version. This can remove the radio mode restriction in Canadian regions or disable real-time lyrics. | 6.29.58 ~ 7.17.51 | +| `Translations` | Adds Crowdin translations for YouTube Music. | 6.29.58 ~ 7.17.51 | +| `Video playback` | Adds options to customize settings related to video playback, such as default video quality and playback speed. | 6.29.58 ~ 7.17.51 | +| `Visual preferences icons` | Adds icons to specific preferences in the settings. | 6.29.58 ~ 7.17.51 | ### [📦 `com.reddit.frontpage`](https://play.google.com/store/apps/details?id=com.reddit.frontpage) @@ -178,8 +178,8 @@ Example: "6.33.52", "6.42.55", "6.51.53", - "7.15.52", - "7.16.52" + "7.16.53", + "7.17.51" ] } ], diff --git a/api/revanced-patches.api b/api/revanced-patches.api index b149e3233..a07ba8259 100644 --- a/api/revanced-patches.api +++ b/api/revanced-patches.api @@ -56,14 +56,10 @@ public final class app/revanced/patches/music/general/amoled/AmoledPatch : app/r public fun execute (Lapp/revanced/patcher/data/ResourceContext;)V } -public final class app/revanced/patches/music/general/autocaptions/AutoCaptionsBytecodePatch : app/revanced/patches/shared/captions/BaseAutoCaptionsPatch { - public static final field INSTANCE Lapp/revanced/patches/music/general/autocaptions/AutoCaptionsBytecodePatch; -} - -public final class app/revanced/patches/music/general/autocaptions/AutoCaptionsPatch : app/revanced/util/patch/BaseResourcePatch { +public final class app/revanced/patches/music/general/autocaptions/AutoCaptionsPatch : app/revanced/util/patch/BaseBytecodePatch { public static final field INSTANCE Lapp/revanced/patches/music/general/autocaptions/AutoCaptionsPatch; + public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V - public fun execute (Lapp/revanced/patcher/data/ResourceContext;)V } public final class app/revanced/patches/music/general/components/LayoutComponentsPatch : app/revanced/util/patch/BaseBytecodePatch { @@ -686,12 +682,6 @@ public abstract class app/revanced/patches/shared/ads/BaseAdsPatch : app/revance public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V } -public abstract class app/revanced/patches/shared/captions/BaseAutoCaptionsPatch : app/revanced/patcher/patch/BytecodePatch { - public fun (Ljava/lang/String;Z)V - public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V - public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V -} - public abstract class app/revanced/patches/shared/customspeed/BaseCustomPlaybackSpeedPatch : app/revanced/patcher/patch/BytecodePatch { public fun (Ljava/lang/String;F)V public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V @@ -961,10 +951,6 @@ public final class app/revanced/patches/youtube/general/audiotracks/AudioTracksP public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V } -public final class app/revanced/patches/youtube/general/autocaptions/AutoCaptionsBytecodePatch : app/revanced/patches/shared/captions/BaseAutoCaptionsPatch { - public static final field INSTANCE Lapp/revanced/patches/youtube/general/autocaptions/AutoCaptionsBytecodePatch; -} - public final class app/revanced/patches/youtube/general/autocaptions/AutoCaptionsPatch : app/revanced/util/patch/BaseBytecodePatch { public static final field INSTANCE Lapp/revanced/patches/youtube/general/autocaptions/AutoCaptionsPatch; public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V diff --git a/gradle.properties b/gradle.properties index 09ab24884..c126c99e4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 2.228.0 +version = 2.229.0-dev.3 diff --git a/main.py b/main.py index 0cece591a..a7085b42c 100644 --- a/main.py +++ b/main.py @@ -1,3 +1,10 @@ +""" +These python scripts follow PEP 8 guidelines with the exception that the maximum line length is extended +to 120 characters. +All other PEP 8 conventions apply, such as naming conventions, indentation, imports, and documentation strings. +The project uses the Black formatter for consistent code style and Flake8 for linting and style checks. +""" + import argparse import os import subprocess @@ -42,21 +49,21 @@ def main(): "-m", "--missing", action="store_true", - help="Run src/missing_strings.py.", + help="Run missing_strings.py.", ) parser.add_argument( "-r", "--replace", action="store_true", - help="Run src/replace_strings.py.", + help="Run replace_strings.py.", ) parser.add_argument( "--remove", action="store_true", - help="Run src/remove_unused_strings.py.", + help="Run remove_unused_strings.py.", ) - parser.add_argument("-s", "--sort", action="store_true", help="Run src/sort_strings.py.") - parser.add_argument("-p", "--prefs", action="store_true", help="Run src/missing_prefs.py.") + parser.add_argument("-s", "--sort", action="store_true", help="Run sort_strings.py.") + parser.add_argument("-p", "--prefs", action="store_true", help="Run missing_prefs.py.") parser.add_argument( "--youtube", @@ -94,37 +101,29 @@ def main(): if args.all: if git_operations(rvx_base_dir): commands = [ - [sys.executable, "src/replace_strings.py", rvx_base_dir_arg], - [ - sys.executable, - "src/replace_strings.py", - "--music", - rvx_base_dir_arg, - ], - [sys.executable, "src/remove_unused_strings.py"], - [sys.executable, "src/missing_strings.py"], - [sys.executable, "src/sort_strings.py"], - [sys.executable, "src/sort_strings.py", "--music"], + [sys.executable, "src/utils/replace_strings.py", "--youtube", rvx_base_dir_arg], + [sys.executable, "src/utils/replace_strings.py", "--music", rvx_base_dir_arg], + [sys.executable, "src/utils/missing_strings.py", "--youtube"], + [sys.executable, "src/utils/missing_strings.py", "--music"], + [sys.executable, "src/utils/remove_unused_strings.py", "--youtube"], + [sys.executable, "src/utils/remove_unused_strings.py", "--music"], + [sys.executable, "src/utils/sort_strings.py", "--youtube"], + [sys.executable, "src/utils/sort_strings.py", "--music"], ] else: if args.missing: - commands.append([sys.executable, "src/missing_strings.py"]) + commands.append([sys.executable, "src/utils/missing_strings.py", sub_arg]) + if args.prefs: + commands.append([sys.executable, "src/utils/missing_prefs.py", rvx_base_dir_arg]) + if args.remove: + commands.append([sys.executable, "src/utils/remove_unused_strings.py", sub_arg]) + if args.replace: if git_operations(rvx_base_dir): - commands.append( - [ - sys.executable, - "src/replace_strings.py", - sub_arg, - rvx_base_dir_arg, - ] - ) - if args.remove: - commands.append([sys.executable, "src/remove_unused_strings.py"]) + commands.append([sys.executable, "src/utils/replace_strings.py", sub_arg, rvx_base_dir_arg]) + if args.sort: - commands.append([sys.executable, "src/sort_strings.py", sub_arg]) - if args.prefs: - commands.append([sys.executable, "src/missing_prefs.py", rvx_base_dir_arg]) + commands.append([sys.executable, "src/utils/sort_strings.py", sub_arg]) for command in commands: run_command(command) diff --git a/patches.json b/patches.json index 49d6b4139..395b061eb 100644 --- a/patches.json +++ b/patches.json @@ -1 +1 @@ -[{"name":"Alternative thumbnails","description":"Adds options to replace video thumbnails using the DeArrow API or image captures from the video.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Ambient mode control","description":"Adds options to disable Ambient mode and to bypass Ambient mode restrictions.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Amoled","description":"Applies a pure black theme to some components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bitrate default value","description":"Sets the audio quality to \u0027Always High\u0027 when you first install the app.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bypass image region restrictions","description":"Adds an option to use a different host for static images, so that images blocked in some countries can be received.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bypass image region restrictions","description":"Adds an option to use a different host for static images, so that images blocked in some countries can be received.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Certificate spoof","description":"Enables YouTube Music to work with Android Auto by spoofing the YouTube Music certificate.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change package name","description":"Changes the package name for Reddit to the name specified in options.json.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"PackageNameReddit","default":"com.reddit.frontpage","values":{"Clone":"com.reddit.frontpage.revanced","Default":"com.reddit.frontpage.rvx","Original":"com.reddit.frontpage"},"title":"Package name of Reddit","description":"The name of the package to rename the app to.","required":true}]},{"name":"Change player flyout menu toggles","description":"Adds an option to use text toggles instead of switch toggles within the additional settings menu.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change share sheet","description":"Add option to change from in-app share sheet to system share sheet.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change share sheet","description":"Add option to change from in-app share sheet to system share sheet.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change start page","description":"Adds an option to set which page the app opens in instead of the homepage.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change start page","description":"Adds an option to set which page the app opens in instead of the homepage.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change version code","description":"Changes the version code of the app to the value specified in options.json. Except when mounting, this can prevent app stores from updating the app and allow the app to be installed over an existing installation that has a higher version code. By default, the highest version code is set.","compatiblePackages":null,"use":false,"requiresIntegrations":false,"options":[{"key":"ChangeVersionCode","default":false,"values":null,"title":"Change version code","description":"Changes the version code of the app.","required":true},{"key":"VersionCode","default":"2147483647","values":null,"title":"Version code","description":"The version code to use. (1 ~ 2147483647)","required":true}]},{"name":"Custom Shorts action buttons","description":"Changes, at compile time, the icon of the action buttons of the Shorts player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"IconType","default":"round","values":{"Outline":"outline","OutlineCircle":"outlinecircle","Round":"round","YouTube":"youtube","YouTubeOutline":"youtubeoutline"},"title":"Shorts icon style ","description":"The style of the icons for the action buttons in the Shorts player.","required":true}]},{"name":"Custom branding icon for YouTube","description":"Changes the YouTube app icon to the icon specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"AppIcon","default":"Xisr Yellow","values":{"AFN Blue":"afn_blue","AFN Red":"afn_red","MMT":"mmt","MMT Blue":"mmt_blue","MMT Green":"mmt_green","MMT Yellow":"mmt_yellow","Revancify Blue":"revancify_blue","Revancify Red":"revancify_red","Vanced Black":"vanced_black","Vanced Light":"vanced_light","Xisr Yellow":"xisr_yellow","YouTube":"youtube"},"title":"App icon","description":"The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_background_color_108.png\n- adaptiveproduct_youtube_foreground_color_108.png\n- ic_launcher.png\n- ic_launcher_round.png","required":true},{"key":"ChangeHeader","default":true,"values":null,"title":"Change header","description":"Apply the custom branding icon to the header.","required":true},{"key":"CustomHeader","default":"","values":null,"title":"Custom header","description":"The header to apply to the app.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n- yt_premium_wordmark_header_dark.png\n- yt_premium_wordmark_header_light.png\n- yt_wordmark_header_dark.png\n- yt_wordmark_header_light.png\n\nThe image dimensions must be as follows:\n- drawable-xxxhdpi: 512px x 192px\n- drawable-xxhdpi: 387px x 144px\n- drawable-xhdpi: 258px x 96px\n- drawable-hdpi: 194px x 72px\n- drawable-mdpi: 129px x 48px","required":true},{"key":"ChangeSplashIcon","default":true,"values":null,"title":"Change splash icons","description":"Apply the custom branding icon to the splash screen.","required":true},{"key":"RestoreOldSplashAnimation","default":true,"values":null,"title":"Restore old splash animation","description":"Restore the old style splash animation.","required":true}]},{"name":"Custom branding icon for YouTube Music","description":"Changes the YouTube Music app icon to the icon specified in options.json.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"AppIcon","default":"Xisr Yellow","values":{"AFN Blue":"afn_blue","AFN Red":"afn_red","MMT":"mmt","MMT Blue":"mmt_blue","MMT Green":"mmt_green","MMT Yellow":"mmt_yellow","Revancify Blue":"revancify_blue","Revancify Red":"revancify_red","Vanced Black":"vanced_black","Vanced Light":"vanced_light","Xisr Yellow":"xisr_yellow","YouTube Music":"youtube_music"},"title":"App icon","description":"The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_music_background_color_108.png\n- adaptiveproduct_youtube_music_foreground_color_108.png\n- ic_launcher_release.png","required":true},{"key":"ChangeHeader","default":true,"values":null,"title":"Change header","description":"Apply the custom branding icon to the header.","required":true},{"key":"ChangeSplashIcon","default":true,"values":null,"title":"Change splash icons","description":"Apply the custom branding icon to the splash screen.","required":true}]},{"name":"Custom branding name for Reddit","description":"Renames the Reddit app to the name specified in options.json.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"AppName","default":"Reddit","values":{"Default":"RVX Reddit","Original":"Reddit"},"title":"App name","description":"The name of the app.","required":true}]},{"name":"Custom branding name for YouTube","description":"Renames the YouTube app to the name specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"AppName","default":"RVX","values":{"ReVanced Extended":"ReVanced Extended","RVX":"RVX","YouTube RVX":"YouTube RVX","YouTube":"YouTube"},"title":"App name","description":"The name of the app.","required":true}]},{"name":"Custom branding name for YouTube Music","description":"Renames the YouTube Music app to the name specified in options.json.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"AppNameNotification","default":"RVX Music","values":{"ReVanced Extended Music":"ReVanced Extended Music","RVX Music":"RVX Music","YouTube Music":"YouTube Music","YT Music":"YT Music"},"title":"App name in notification panel","description":"The name of the app as it appears in the notification panel.","required":true},{"key":"AppNameLauncher","default":"RVX Music","values":{"ReVanced Extended Music":"ReVanced Extended Music","RVX Music":"RVX Music","YouTube Music":"YouTube Music","YT Music":"YT Music"},"title":"App name in launcher","description":"The name of the app as it appears in the launcher.","required":true}]},{"name":"Custom double tap length","description":"Adds Double-tap to seek values that are specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"DoubleTapLengthArrays","default":"3, 5, 10, 15, 20, 30, 60, 120, 180","values":null,"title":"Double-tap to seek values","description":"A list of custom Double-tap to seek lengths to be added, separated by commas.","required":true}]},{"name":"Custom header for YouTube Music","description":"Applies a custom header in the top left corner within the app.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"CustomHeader","default":"custom_branding_icon","values":{"Custom branding icon":"custom_branding_icon"},"title":"Custom header","description":"The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube Music\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube Music\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n- action_bar_logo.png\n- logo_music.png\n- ytm_logo.png\n\nThe image \u0027action_bar_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 320px x 96px\n- drawable-xxhdpi: 240px x 72px\n- drawable-xhdpi: 160px x 48px\n- drawable-hdpi: 121px x 36px\n- drawable-mdpi: 80px x 24px\n\nThe image \u0027logo_music.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 576px x 200px\n- drawable-xxhdpi: 432px x 150px\n- drawable-xhdpi: 288px x 100px\n- drawable-hdpi: 217px x 76px\n- drawable-mdpi: 144px x 50px\n\nThe image \u0027ytm_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 412px x 144px\n- drawable-xxhdpi: 309px x 108px\n- drawable-xhdpi: 206px x 72px\n- drawable-hdpi: 155px x 54px\n- drawable-mdpi: 103px x 36px","required":true}]},{"name":"Description components","description":"Adds options to hide and disable description components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable QUIC protocol","description":"Adds an option to disable CronetEngine\u0027s QUIC protocol.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto audio tracks","description":"Adds an option to disable audio tracks from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto captions","description":"Adds an option to disable captions from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto captions","description":"Adds an option to disable captions from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable dislike redirection","description":"Adds an option to disable redirection to the next track when clicking the Dislike button.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable haptic feedback","description":"Adds options to disable haptic feedback when swiping in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable resuming Shorts on startup","description":"Adds an option to disable the Shorts player from resuming on app startup when Shorts were last being watched.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable screenshot popup","description":"Adds an option to disable the popup that appears when taking a screenshot.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable splash animation","description":"Adds an option to disable the splash animation on app startup.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable Cairo splash animation","description":"Adds an option to enable Cairo splash animation.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["7.08.54","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable OPUS codec","description":"Adds an option to use the OPUS audio codec instead of the MP4A audio codec.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable OPUS codec","description":"Adds an options to enable the OPUS audio codec if the player response includes.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable debug logging","description":"Adds an option to enable debug logging.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable debug logging","description":"Adds an option to enable debug logging.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable external browser","description":"Adds an option to always open links in your browser instead of in the in-app-browser.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable gradient loading screen","description":"Adds an option to enable the gradient loading screen.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable landscape mode","description":"Adds an option to enable landscape mode when rotating the screen on phones.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable open links directly","description":"Adds an option to skip over redirection URLs in external links.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Flyout menu components","description":"Adds options to hide or change flyout menu components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Force player buttons background","description":"Changes, at compile time, the dark background surrounding the video player controls.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"BackgroundColor","default":"?ytOverlayBackgroundMediumLight","values":{"Default":"?ytOverlayBackgroundMediumLight","Transparent":"@android:color/transparent","Opacity10":"#1a000000","Opacity20":"#33000000","Opacity30":"#4d000000","Opacity40":"#66000000","Opacity50":"#80000000","Opacity60":"#99000000","Opacity70":"#b3000000","Opacity80":"#cc000000","Opacity90":"#e6000000","Opacity100":"#ff000000"},"title":"Background color","description":"Specify a background color for player buttons using a hex color code. The first two symbols of the hex code represent the alpha channel, which is used to change the opacity.","required":false}]},{"name":"Force snackbar theme","description":"Force snackbar background color to match selected theme.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CornerRadius","default":"8.0dip","values":null,"title":"Corner radius","description":"Specify a corner radius for the snackbar.","required":false},{"key":"BackgroundColor","default":"?ytChipBackground","values":{"Chip":"?ytChipBackground","Base":"?ytBaseBackground"},"title":"Background color","description":"Specify a background color for the snackbar. You can specify hex color.","required":false},{"key":"StrokeColor","default":"none","values":{"None":"none","Accent":"?attr/colorAccent","Inverted":"?attr/ytInvertedBackground"},"title":"Stroke color","description":"Specify a stroke color for the snackbar. You can specify hex color.","required":false}]},{"name":"Fullscreen components","description":"Adds options to hide or change components related to fullscreen.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"GmsCore support","description":"Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"GmsCoreVendorGroupId","default":"app.revanced","values":{"ReVanced":"app.revanced"},"title":"GmsCore vendor group ID","description":"The vendor\u0027s group ID for GmsCore.","required":true},{"key":"CheckGmsCore","default":true,"values":null,"title":"Check GmsCore","description":"Check if GmsCore is installed on the device and has battery optimizations disabled when the app starts. \n\nIf GmsCore is not installed the app will not work, so disabling this is not recommended.","required":true},{"key":"PackageNameYouTube","default":"anddea.youtube","values":{"Clone":"bill.youtube","Default":"anddea.youtube"},"title":"Package name of YouTube","description":"The name of the package to use in GmsCore support.","required":true},{"key":"PackageNameYouTubeMusic","default":"anddea.youtube.music","values":{"Clone":"bill.youtube.music","Default":"anddea.youtube.music"},"title":"Package name of YouTube Music","description":"The name of the package to use in GmsCore support.","required":true}]},{"name":"GmsCore support","description":"Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"GmsCoreVendorGroupId","default":"app.revanced","values":{"ReVanced":"app.revanced"},"title":"GmsCore vendor group ID","description":"The vendor\u0027s group ID for GmsCore.","required":true},{"key":"CheckGmsCore","default":true,"values":null,"title":"Check GmsCore","description":"Check if GmsCore is installed on the device and has battery optimizations disabled when the app starts. \n\nIf GmsCore is not installed the app will not work, so disabling this is not recommended.","required":true},{"key":"PackageNameYouTube","default":"anddea.youtube","values":{"Clone":"bill.youtube","Default":"anddea.youtube"},"title":"Package name of YouTube","description":"The name of the package to use in GmsCore support.","required":true},{"key":"PackageNameYouTubeMusic","default":"anddea.youtube.music","values":{"Clone":"bill.youtube.music","Default":"anddea.youtube.music"},"title":"Package name of YouTube Music","description":"The name of the package to use in GmsCore support.","required":true}]},{"name":"Hide Recently Visited shelf","description":"Adds an option to hide the Recently Visited shelf in the sidebar.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide Shorts dimming","description":"Removes, at compile time, the dimming effect at the top and bottom of Shorts videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide account components","description":"Adds options to hide components related to the account menu.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide action bar components","description":"Adds options to hide action bar components and replace the offline download button with an external download button.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide action buttons","description":"Adds options to hide action buttons under videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":true,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide comments components","description":"Adds options to hide components related to comments.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide feed components","description":"Adds options to hide components related to feeds.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide feed flyout menu","description":"Adds the ability to hide feed flyout menu components using a custom filter.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide layout components","description":"Adds options to hide general layout components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide layout components","description":"Adds options to hide general layout components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide navigation buttons","description":"Adds options to hide buttons in the navigation bar.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide overlay filter","description":"Removes, at compile time, the dark overlay that appears when player flyout menus are open.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide player buttons","description":"Adds options to hide buttons in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide player flyout menu","description":"Adds options to hide player flyout menu components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide player overlay filter","description":"Removes, at compile time, the dark overlay that appears when single-tapping in the player.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide recommended communities shelf","description":"Adds an option to hide the recommended communities shelves in subreddits.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hook download actions","description":"Adds support to download videos with an external downloader app using the in-app download button.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Layout switch","description":"Adds an option to spoof the dpi in order to use a tablet or phone layout.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"MaterialYou","description":"Applies the MaterialYou theme for Android 12+ devices.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Miniplayer","description":"Adds options to change the in app minimized player, and if patching target 19.16+ adds options to use modern miniplayers.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Navigation bar components","description":"Adds options to hide or change components related to the navigation bar.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Navigation bar components","description":"Adds options to hide or change components related to the navigation bar.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Open links directly","description":"Adds an option to skip over redirection URLs in external links.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Open links externally","description":"Adds an option to always open links in your browser instead of in the in-app-browser.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Overlay buttons","description":"Adds options to display overlay buttons in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"IconType","default":"rounded","values":{"Bold":"bold","Rounded":"rounded","Thin":"thin"},"title":"Icon type","description":"The icon type.","required":true},{"key":"BottomMargin","default":"5.0dip","values":{"Wider":"10.0dip","Default":"5.0dip"},"title":"Bottom margin","description":"The bottom margin for the overlay buttons and timestamp.","required":true},{"key":"ChangeTopButtons","default":false,"values":null,"title":"Change top buttons","description":"Change the icons at the top of the player.","required":true}]},{"name":"Player components","description":"Adds options to hide or change components related to the player.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Player components","description":"Adds options to hide or change components related to the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Premium icon","description":"Unlocks premium app icons.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove background playback restrictions","description":"Removes restrictions on background playback, including for kids videos.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove background playback restrictions","description":"Removes restrictions on background playback, including for music and kids videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove subreddit dialog","description":"Adds options to remove the NSFW community warning and notifications suggestion dialogs by dismissing them automatically.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove viewer discretion dialog","description":"Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove viewer discretion dialog","description":"Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Restore old style library shelf","description":"Adds an option to return the Library tab to the old style.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Return YouTube Dislike","description":"Adds an option to show the dislike count of songs using the Return YouTube Dislike API.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Return YouTube Dislike","description":"Adds an option to show the dislike count of videos using the Return YouTube Dislike API.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Seekbar components","description":"Adds options to hide or change components related to the seekbar.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Settings for Reddit","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Settings for YouTube","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"InsertPosition","default":"About","values":{"Parent settings":"@string/parent_tools_key","General":"@string/general_key","Account":"@string/account_switcher_key","Data saving":"@string/data_saving_settings_key","Autoplay":"@string/auto_play_key","Video quality preferences":"@string/video_quality_settings_key","Background":"@string/offline_key","Watch on TV":"@string/pair_with_tv_key","Manage all history":"@string/history_key","Your data in YouTube":"@string/your_data_key","Privacy":"@string/privacy_key","History \u0026 privacy":"@string/privacy_key","Try experimental new features":"@string/premium_early_access_browse_page_key","Purchases and memberships":"@string/subscription_product_setting_key","Billing \u0026 payments":"@string/billing_and_payment_key","Billing and payments":"@string/billing_and_payment_key","Notifications":"@string/notification_key","Connected apps":"@string/connected_accounts_browse_page_key","Live chat":"@string/live_chat_key","Captions":"@string/captions_key","Accessibility":"@string/accessibility_settings_key","About":"@string/about_key"},"title":"Insert position","description":"The settings menu name that the RVX settings menu should be above.","required":true},{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Settings for YouTube Music","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Shorts components","description":"Adds options to hide or change components related to YouTube Shorts.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"SponsorBlock","description":"Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as non-music sections.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"SponsorBlock","description":"Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as sponsored content.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"OutlineIcon","default":true,"values":null,"title":"Outline icons","description":"Apply the outline icon.","required":true}]},{"name":"Spoof app version","description":"Adds options to spoof the YouTube Music client version. This can remove the radio mode restriction in Canadian regions or disable real-time lyrics.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof app version","description":"Adds options to spoof the YouTube client version. This can be used to restore old UI elements and features.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof streaming data","description":"Adds options to spoof the streaming data to allow video playback.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof watch history","description":"Adds an option to change the domain of the watch history or check its status.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Swipe controls","description":"Adds options for controlling volume and brightness with swiping, and whether to enter fullscreen when swiping down below the player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Theme","description":"Changes the app\u0027s theme to the values specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"DarkThemeBackgroundColor","default":"@android:color/black","values":{"Amoled Black":"@android:color/black","Catppuccin (Mocha)":"#FF181825","Dark Pink":"#FF290025","Dark Blue":"#FF001029","Dark Green":"#FF002905","Dark Yellow":"#FF282900","Dark Orange":"#FF291800","Dark Red":"#FF290000"},"title":"Dark theme background color","description":"Can be a hex color (#AARRGGBB) or a color resource reference.","required":true},{"key":"LightThemeBackgroundColor","default":"@android:color/white","values":{"White":"@android:color/white","Catppuccin (Latte)":"#FFE6E9EF","Light Pink":"#FFFCCFF3","Light Blue":"#FFD1E0FF","Light Green":"#FFCCFFCC","Light Yellow":"#FFFDFFCC","Light Orange":"#FFFFE6CC","Light Red":"#FFFFD6D6"},"title":"Light theme background color","description":"Can be a hex color (#AARRGGBB) or a color resource reference.","required":true}]},{"name":"Toolbar components","description":"Adds options to hide or change components located on the toolbar, such as toolbar buttons, search bar, and header.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Translations","description":"Adds Crowdin translations for YouTube Music.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CustomLanguage","default":"","values":null,"title":"Custom language file","description":"The file path to the strings.xml file.\nPlease note that applying the strings.xml file will overwrite all existing language translations.","required":false},{"key":"SelectedLanguages","default":"bg-rBG, bn, cs-rCZ, el-rGR, es-rES, fr-rFR, hu-rHU, id-rID, in, it-rIT, ja-rJP, ko-rKR, nl-rNL, pl-rPL, pt-rBR, ro-rRO, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW","values":null,"title":"Selected RVX languages","description":"Selected RVX languages that will be added.","required":false},{"key":"SelectedAppLanguages","default":"af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu","values":null,"title":"Selected app languages","description":"Selected app languages that will be kept, languages that are not in the list will be removed from the app.","required":false}]},{"name":"Translations","description":"Add Crowdin translations for YouTube.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CustomLanguage","default":"","values":null,"title":"Custom language file","description":"The file path to the strings.xml file.\nPlease note that applying the strings.xml file will overwrite all existing language translations.","required":false},{"key":"SelectedLanguages","default":"ar, bg-rBG, bn, de-rDE, el-rGR, es-rES, fi-rFI, fr-rFR, hu-rHU, id-rID, in, it-rIT, ja-rJP, ko-rKR, pl-rPL, pt-rBR, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW","values":null,"title":"Selected RVX languages","description":"Selected RVX languages that will be added.","required":false},{"key":"SelectedAppLanguages","default":"af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu","values":null,"title":"Selected app languages","description":"Selected app languages that will be kept, languages that are not in the list will be removed from the app.","required":false}]},{"name":"Video playback","description":"Adds options to customize settings related to video playback, such as default video quality and playback speed.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Video playback","description":"Adds options to customize settings related to video playback, such as default video quality and playback speed.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Visual preferences icons","description":"Adds icons to specific preferences in the settings.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"ExtendedIcon","default":"Extension","values":{"Custom branding icon":"custom_branding_icon","Extension":"extension","Gear":"gear","ReVanced":"revanced","ReVanced Colored":"revanced_colored"},"title":"Extended icon","description":"Apply different icons for Extended preference.","required":false}]},{"name":"Visual preferences icons","description":"Adds icons to specific preferences in the settings.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"ExtendedIcon","default":"Extension","values":{"Custom branding icon":"custom_branding_icon","Extension":"extension","Gear":"gear","ReVanced":"revanced","ReVanced Colored":"revanced_colored"},"title":"RVX settings menu icon","description":"The icon for the RVX settings menu.","required":true}]}] \ No newline at end of file +[{"name":"Alternative thumbnails","description":"Adds options to replace video thumbnails using the DeArrow API or image captures from the video.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Ambient mode control","description":"Adds options to disable Ambient mode and to bypass Ambient mode restrictions.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Amoled","description":"Applies a pure black theme to some components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bitrate default value","description":"Sets the audio quality to \u0027Always High\u0027 when you first install the app.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bypass image region restrictions","description":"Adds an option to use a different host for static images, so that images blocked in some countries can be received.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bypass image region restrictions","description":"Adds an option to use a different host for static images, so that images blocked in some countries can be received.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Certificate spoof","description":"Enables YouTube Music to work with Android Auto by spoofing the YouTube Music certificate.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change package name","description":"Changes the package name for Reddit to the name specified in options.json.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"PackageNameReddit","default":"com.reddit.frontpage","values":{"Clone":"com.reddit.frontpage.revanced","Default":"com.reddit.frontpage.rvx","Original":"com.reddit.frontpage"},"title":"Package name of Reddit","description":"The name of the package to rename the app to.","required":true}]},{"name":"Change player flyout menu toggles","description":"Adds an option to use text toggles instead of switch toggles within the additional settings menu.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change share sheet","description":"Add option to change from in-app share sheet to system share sheet.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change share sheet","description":"Add option to change from in-app share sheet to system share sheet.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change start page","description":"Adds an option to set which page the app opens in instead of the homepage.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change start page","description":"Adds an option to set which page the app opens in instead of the homepage.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change version code","description":"Changes the version code of the app to the value specified in options.json. Except when mounting, this can prevent app stores from updating the app and allow the app to be installed over an existing installation that has a higher version code. By default, the highest version code is set.","compatiblePackages":null,"use":false,"requiresIntegrations":false,"options":[{"key":"ChangeVersionCode","default":false,"values":null,"title":"Change version code","description":"Changes the version code of the app.","required":true},{"key":"VersionCode","default":"2147483647","values":null,"title":"Version code","description":"The version code to use. (1 ~ 2147483647)","required":true}]},{"name":"Custom Shorts action buttons","description":"Changes, at compile time, the icon of the action buttons of the Shorts player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"IconType","default":"round","values":{"Outline":"outline","OutlineCircle":"outlinecircle","Round":"round","YouTube":"youtube","YouTubeOutline":"youtubeoutline"},"title":"Shorts icon style ","description":"The style of the icons for the action buttons in the Shorts player.","required":true}]},{"name":"Custom branding icon for YouTube","description":"Changes the YouTube app icon to the icon specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"AppIcon","default":"Xisr Yellow","values":{"AFN Blue":"afn_blue","AFN Red":"afn_red","MMT":"mmt","MMT Blue":"mmt_blue","MMT Green":"mmt_green","MMT Yellow":"mmt_yellow","Revancify Blue":"revancify_blue","Revancify Red":"revancify_red","Vanced Black":"vanced_black","Vanced Light":"vanced_light","Xisr Yellow":"xisr_yellow","YouTube":"youtube"},"title":"App icon","description":"The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_background_color_108.png\n- adaptiveproduct_youtube_foreground_color_108.png\n- ic_launcher.png\n- ic_launcher_round.png","required":true},{"key":"ChangeHeader","default":true,"values":null,"title":"Change header","description":"Apply the custom branding icon to the header.","required":true},{"key":"CustomHeader","default":"","values":null,"title":"Custom header","description":"The header to apply to the app.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n- yt_premium_wordmark_header_dark.png\n- yt_premium_wordmark_header_light.png\n- yt_wordmark_header_dark.png\n- yt_wordmark_header_light.png\n\nThe image dimensions must be as follows:\n- drawable-xxxhdpi: 512px x 192px\n- drawable-xxhdpi: 387px x 144px\n- drawable-xhdpi: 258px x 96px\n- drawable-hdpi: 194px x 72px\n- drawable-mdpi: 129px x 48px","required":true},{"key":"ChangeSplashIcon","default":true,"values":null,"title":"Change splash icons","description":"Apply the custom branding icon to the splash screen.","required":true},{"key":"RestoreOldSplashAnimation","default":true,"values":null,"title":"Restore old splash animation","description":"Restore the old style splash animation.","required":true}]},{"name":"Custom branding icon for YouTube Music","description":"Changes the YouTube Music app icon to the icon specified in options.json.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"AppIcon","default":"Xisr Yellow","values":{"AFN Blue":"afn_blue","AFN Red":"afn_red","MMT":"mmt","MMT Blue":"mmt_blue","MMT Green":"mmt_green","MMT Yellow":"mmt_yellow","Revancify Blue":"revancify_blue","Revancify Red":"revancify_red","Vanced Black":"vanced_black","Vanced Light":"vanced_light","Xisr Yellow":"xisr_yellow","YouTube Music":"youtube_music"},"title":"App icon","description":"The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_music_background_color_108.png\n- adaptiveproduct_youtube_music_foreground_color_108.png\n- ic_launcher_release.png","required":true},{"key":"ChangeHeader","default":true,"values":null,"title":"Change header","description":"Apply the custom branding icon to the header.","required":true},{"key":"ChangeSplashIcon","default":true,"values":null,"title":"Change splash icons","description":"Apply the custom branding icon to the splash screen.","required":true}]},{"name":"Custom branding name for Reddit","description":"Renames the Reddit app to the name specified in options.json.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"AppName","default":"Reddit","values":{"Default":"RVX Reddit","Original":"Reddit"},"title":"App name","description":"The name of the app.","required":true}]},{"name":"Custom branding name for YouTube","description":"Renames the YouTube app to the name specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"AppName","default":"RVX","values":{"ReVanced Extended":"ReVanced Extended","RVX":"RVX","YouTube RVX":"YouTube RVX","YouTube":"YouTube"},"title":"App name","description":"The name of the app.","required":true}]},{"name":"Custom branding name for YouTube Music","description":"Renames the YouTube Music app to the name specified in options.json.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"AppNameNotification","default":"RVX Music","values":{"ReVanced Extended Music":"ReVanced Extended Music","RVX Music":"RVX Music","YouTube Music":"YouTube Music","YT Music":"YT Music"},"title":"App name in notification panel","description":"The name of the app as it appears in the notification panel.","required":true},{"key":"AppNameLauncher","default":"RVX Music","values":{"ReVanced Extended Music":"ReVanced Extended Music","RVX Music":"RVX Music","YouTube Music":"YouTube Music","YT Music":"YT Music"},"title":"App name in launcher","description":"The name of the app as it appears in the launcher.","required":true}]},{"name":"Custom double tap length","description":"Adds Double-tap to seek values that are specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"DoubleTapLengthArrays","default":"3, 5, 10, 15, 20, 30, 60, 120, 180","values":null,"title":"Double-tap to seek values","description":"A list of custom Double-tap to seek lengths to be added, separated by commas.","required":true}]},{"name":"Custom header for YouTube Music","description":"Applies a custom header in the top left corner within the app.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"CustomHeader","default":"custom_branding_icon","values":{"Custom branding icon":"custom_branding_icon"},"title":"Custom header","description":"The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube Music\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube Music\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n- action_bar_logo.png\n- logo_music.png\n- ytm_logo.png\n\nThe image \u0027action_bar_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 320px x 96px\n- drawable-xxhdpi: 240px x 72px\n- drawable-xhdpi: 160px x 48px\n- drawable-hdpi: 121px x 36px\n- drawable-mdpi: 80px x 24px\n\nThe image \u0027logo_music.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 576px x 200px\n- drawable-xxhdpi: 432px x 150px\n- drawable-xhdpi: 288px x 100px\n- drawable-hdpi: 217px x 76px\n- drawable-mdpi: 144px x 50px\n\nThe image \u0027ytm_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 412px x 144px\n- drawable-xxhdpi: 309px x 108px\n- drawable-xhdpi: 206px x 72px\n- drawable-hdpi: 155px x 54px\n- drawable-mdpi: 103px x 36px","required":true}]},{"name":"Description components","description":"Adds options to hide and disable description components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable QUIC protocol","description":"Adds an option to disable CronetEngine\u0027s QUIC protocol.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto audio tracks","description":"Adds an option to disable audio tracks from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto captions","description":"Adds an option to disable captions from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto captions","description":"Adds an option to disable captions from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable dislike redirection","description":"Adds an option to disable redirection to the next track when clicking the Dislike button.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable haptic feedback","description":"Adds options to disable haptic feedback when swiping in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable resuming Shorts on startup","description":"Adds an option to disable the Shorts player from resuming on app startup when Shorts were last being watched.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable screenshot popup","description":"Adds an option to disable the popup that appears when taking a screenshot.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable splash animation","description":"Adds an option to disable the splash animation on app startup.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable Cairo splash animation","description":"Adds an option to enable Cairo splash animation.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["7.08.54","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable OPUS codec","description":"Adds an option to use the OPUS audio codec instead of the MP4A audio codec.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable OPUS codec","description":"Adds an options to enable the OPUS audio codec if the player response includes.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable debug logging","description":"Adds an option to enable debug logging.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable debug logging","description":"Adds an option to enable debug logging.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable external browser","description":"Adds an option to always open links in your browser instead of in the in-app-browser.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable gradient loading screen","description":"Adds an option to enable the gradient loading screen.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable landscape mode","description":"Adds an option to enable landscape mode when rotating the screen on phones.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable open links directly","description":"Adds an option to skip over redirection URLs in external links.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Flyout menu components","description":"Adds options to hide or change flyout menu components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Force player buttons background","description":"Changes, at compile time, the dark background surrounding the video player controls.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"BackgroundColor","default":"?ytOverlayBackgroundMediumLight","values":{"Default":"?ytOverlayBackgroundMediumLight","Transparent":"@android:color/transparent","Opacity10":"#1a000000","Opacity20":"#33000000","Opacity30":"#4d000000","Opacity40":"#66000000","Opacity50":"#80000000","Opacity60":"#99000000","Opacity70":"#b3000000","Opacity80":"#cc000000","Opacity90":"#e6000000","Opacity100":"#ff000000"},"title":"Background color","description":"Specify a background color for player buttons using a hex color code. The first two symbols of the hex code represent the alpha channel, which is used to change the opacity.","required":false}]},{"name":"Force snackbar theme","description":"Force snackbar background color to match selected theme.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CornerRadius","default":"8.0dip","values":null,"title":"Corner radius","description":"Specify a corner radius for the snackbar.","required":false},{"key":"BackgroundColor","default":"?ytChipBackground","values":{"Chip":"?ytChipBackground","Base":"?ytBaseBackground"},"title":"Background color","description":"Specify a background color for the snackbar. You can specify hex color.","required":false},{"key":"StrokeColor","default":"none","values":{"None":"none","Accent":"?attr/colorAccent","Inverted":"?attr/ytInvertedBackground"},"title":"Stroke color","description":"Specify a stroke color for the snackbar. You can specify hex color.","required":false}]},{"name":"Fullscreen components","description":"Adds options to hide or change components related to fullscreen.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"GmsCore support","description":"Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"GmsCoreVendorGroupId","default":"app.revanced","values":{"ReVanced":"app.revanced"},"title":"GmsCore vendor group ID","description":"The vendor\u0027s group ID for GmsCore.","required":true},{"key":"CheckGmsCore","default":true,"values":null,"title":"Check GmsCore","description":"Check if GmsCore is installed on the device and has battery optimizations disabled when the app starts. \n\nIf GmsCore is not installed the app will not work, so disabling this is not recommended.","required":true},{"key":"PackageNameYouTube","default":"anddea.youtube","values":{"Clone":"bill.youtube","Default":"anddea.youtube"},"title":"Package name of YouTube","description":"The name of the package to use in GmsCore support.","required":true},{"key":"PackageNameYouTubeMusic","default":"anddea.youtube.music","values":{"Clone":"bill.youtube.music","Default":"anddea.youtube.music"},"title":"Package name of YouTube Music","description":"The name of the package to use in GmsCore support.","required":true}]},{"name":"GmsCore support","description":"Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"GmsCoreVendorGroupId","default":"app.revanced","values":{"ReVanced":"app.revanced"},"title":"GmsCore vendor group ID","description":"The vendor\u0027s group ID for GmsCore.","required":true},{"key":"CheckGmsCore","default":true,"values":null,"title":"Check GmsCore","description":"Check if GmsCore is installed on the device and has battery optimizations disabled when the app starts. \n\nIf GmsCore is not installed the app will not work, so disabling this is not recommended.","required":true},{"key":"PackageNameYouTube","default":"anddea.youtube","values":{"Clone":"bill.youtube","Default":"anddea.youtube"},"title":"Package name of YouTube","description":"The name of the package to use in GmsCore support.","required":true},{"key":"PackageNameYouTubeMusic","default":"anddea.youtube.music","values":{"Clone":"bill.youtube.music","Default":"anddea.youtube.music"},"title":"Package name of YouTube Music","description":"The name of the package to use in GmsCore support.","required":true}]},{"name":"Hide Recently Visited shelf","description":"Adds an option to hide the Recently Visited shelf in the sidebar.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide Shorts dimming","description":"Removes, at compile time, the dimming effect at the top and bottom of Shorts videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide account components","description":"Adds options to hide components related to the account menu.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide action bar components","description":"Adds options to hide action bar components and replace the offline download button with an external download button.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide action buttons","description":"Adds options to hide action buttons under videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":true,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide comments components","description":"Adds options to hide components related to comments.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide feed components","description":"Adds options to hide components related to feeds.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide feed flyout menu","description":"Adds the ability to hide feed flyout menu components using a custom filter.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide layout components","description":"Adds options to hide general layout components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide layout components","description":"Adds options to hide general layout components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide navigation buttons","description":"Adds options to hide buttons in the navigation bar.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide overlay filter","description":"Removes, at compile time, the dark overlay that appears when player flyout menus are open.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide player buttons","description":"Adds options to hide buttons in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide player flyout menu","description":"Adds options to hide player flyout menu components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide player overlay filter","description":"Removes, at compile time, the dark overlay that appears when single-tapping in the player.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide recommended communities shelf","description":"Adds an option to hide the recommended communities shelves in subreddits.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hook download actions","description":"Adds support to download videos with an external downloader app using the in-app download button.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Layout switch","description":"Adds an option to spoof the dpi in order to use a tablet or phone layout.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"MaterialYou","description":"Applies the MaterialYou theme for Android 12+ devices.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Miniplayer","description":"Adds options to change the in app minimized player, and if patching target 19.16+ adds options to use modern miniplayers.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Navigation bar components","description":"Adds options to hide or change components related to the navigation bar.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Navigation bar components","description":"Adds options to hide or change components related to the navigation bar.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Open links directly","description":"Adds an option to skip over redirection URLs in external links.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Open links externally","description":"Adds an option to always open links in your browser instead of in the in-app-browser.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Overlay buttons","description":"Adds options to display overlay buttons in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"IconType","default":"rounded","values":{"Bold":"bold","Rounded":"rounded","Thin":"thin"},"title":"Icon type","description":"The icon type.","required":true},{"key":"BottomMargin","default":"5.0dip","values":{"Wider":"10.0dip","Default":"5.0dip"},"title":"Bottom margin","description":"The bottom margin for the overlay buttons and timestamp.","required":true},{"key":"ChangeTopButtons","default":false,"values":null,"title":"Change top buttons","description":"Change the icons at the top of the player.","required":true}]},{"name":"Player components","description":"Adds options to hide or change components related to the player.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Player components","description":"Adds options to hide or change components related to the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Premium icon","description":"Unlocks premium app icons.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove background playback restrictions","description":"Removes restrictions on background playback, including for kids videos.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove background playback restrictions","description":"Removes restrictions on background playback, including for music and kids videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove subreddit dialog","description":"Adds options to remove the NSFW community warning and notifications suggestion dialogs by dismissing them automatically.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove viewer discretion dialog","description":"Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove viewer discretion dialog","description":"Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Restore old style library shelf","description":"Adds an option to return the Library tab to the old style.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Return YouTube Dislike","description":"Adds an option to show the dislike count of songs using the Return YouTube Dislike API.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Return YouTube Dislike","description":"Adds an option to show the dislike count of videos using the Return YouTube Dislike API.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Seekbar components","description":"Adds options to hide or change components related to the seekbar.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Settings for Reddit","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Settings for YouTube","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"InsertPosition","default":"About","values":{"Parent settings":"@string/parent_tools_key","General":"@string/general_key","Account":"@string/account_switcher_key","Data saving":"@string/data_saving_settings_key","Autoplay":"@string/auto_play_key","Video quality preferences":"@string/video_quality_settings_key","Background":"@string/offline_key","Watch on TV":"@string/pair_with_tv_key","Manage all history":"@string/history_key","Your data in YouTube":"@string/your_data_key","Privacy":"@string/privacy_key","History \u0026 privacy":"@string/privacy_key","Try experimental new features":"@string/premium_early_access_browse_page_key","Purchases and memberships":"@string/subscription_product_setting_key","Billing \u0026 payments":"@string/billing_and_payment_key","Billing and payments":"@string/billing_and_payment_key","Notifications":"@string/notification_key","Connected apps":"@string/connected_accounts_browse_page_key","Live chat":"@string/live_chat_key","Captions":"@string/captions_key","Accessibility":"@string/accessibility_settings_key","About":"@string/about_key"},"title":"Insert position","description":"The settings menu name that the RVX settings menu should be above.","required":true},{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Settings for YouTube Music","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Shorts components","description":"Adds options to hide or change components related to YouTube Shorts.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"SponsorBlock","description":"Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as non-music sections.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"SponsorBlock","description":"Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as sponsored content.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"OutlineIcon","default":true,"values":null,"title":"Outline icons","description":"Apply the outline icon.","required":true}]},{"name":"Spoof app version","description":"Adds options to spoof the YouTube Music client version. This can remove the radio mode restriction in Canadian regions or disable real-time lyrics.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof app version","description":"Adds options to spoof the YouTube client version. This can be used to restore old UI elements and features.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof streaming data","description":"Adds options to spoof the streaming data to allow video playback.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof watch history","description":"Adds an option to change the domain of the watch history or check its status.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Swipe controls","description":"Adds options for controlling volume and brightness with swiping, and whether to enter fullscreen when swiping down below the player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Theme","description":"Changes the app\u0027s theme to the values specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"DarkThemeBackgroundColor","default":"@android:color/black","values":{"Amoled Black":"@android:color/black","Catppuccin (Mocha)":"#FF181825","Dark Pink":"#FF290025","Dark Blue":"#FF001029","Dark Green":"#FF002905","Dark Yellow":"#FF282900","Dark Orange":"#FF291800","Dark Red":"#FF290000"},"title":"Dark theme background color","description":"Can be a hex color (#AARRGGBB) or a color resource reference.","required":true},{"key":"LightThemeBackgroundColor","default":"@android:color/white","values":{"White":"@android:color/white","Catppuccin (Latte)":"#FFE6E9EF","Light Pink":"#FFFCCFF3","Light Blue":"#FFD1E0FF","Light Green":"#FFCCFFCC","Light Yellow":"#FFFDFFCC","Light Orange":"#FFFFE6CC","Light Red":"#FFFFD6D6"},"title":"Light theme background color","description":"Can be a hex color (#AARRGGBB) or a color resource reference.","required":true}]},{"name":"Toolbar components","description":"Adds options to hide or change components located on the toolbar, such as toolbar buttons, search bar, and header.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Translations","description":"Adds Crowdin translations for YouTube Music.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CustomLanguage","default":"","values":null,"title":"Custom language file","description":"The file path to the strings.xml file.\nPlease note that applying the strings.xml file will overwrite all existing language translations.","required":false},{"key":"SelectedLanguages","default":"bg-rBG, bn, cs-rCZ, el-rGR, es-rES, fr-rFR, hu-rHU, id-rID, in, it-rIT, ja-rJP, ko-rKR, nl-rNL, pl-rPL, pt-rBR, ro-rRO, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW","values":null,"title":"Selected RVX languages","description":"Selected RVX languages that will be added.","required":false},{"key":"SelectedAppLanguages","default":"af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu","values":null,"title":"Selected app languages","description":"Selected app languages that will be kept, languages that are not in the list will be removed from the app.","required":false}]},{"name":"Translations","description":"Add Crowdin translations for YouTube.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CustomLanguage","default":"","values":null,"title":"Custom language file","description":"The file path to the strings.xml file.\nPlease note that applying the strings.xml file will overwrite all existing language translations.","required":false},{"key":"SelectedLanguages","default":"ar, bg-rBG, bn, de-rDE, el-rGR, es-rES, fi-rFI, fr-rFR, hu-rHU, id-rID, in, it-rIT, ja-rJP, ko-rKR, pl-rPL, pt-rBR, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW","values":null,"title":"Selected RVX languages","description":"Selected RVX languages that will be added.","required":false},{"key":"SelectedAppLanguages","default":"af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu","values":null,"title":"Selected app languages","description":"Selected app languages that will be kept, languages that are not in the list will be removed from the app.","required":false}]},{"name":"Video playback","description":"Adds options to customize settings related to video playback, such as default video quality and playback speed.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Video playback","description":"Adds options to customize settings related to video playback, such as default video quality and playback speed.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Visual preferences icons","description":"Adds icons to specific preferences in the settings.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"ExtendedIcon","default":"Extension","values":{"Custom branding icon":"custom_branding_icon","Extension":"extension","Gear":"gear","ReVanced":"revanced","ReVanced Colored":"revanced_colored"},"title":"Extended icon","description":"Apply different icons for Extended preference.","required":false}]},{"name":"Visual preferences icons","description":"Adds icons to specific preferences in the settings.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"ExtendedIcon","default":"Extension","values":{"Custom branding icon":"custom_branding_icon","Extension":"extension","Gear":"gear","ReVanced":"revanced","ReVanced Colored":"revanced_colored"},"title":"RVX settings menu icon","description":"The icon for the RVX settings menu.","required":true}]}] \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/music/ads/general/AdsPatch.kt b/src/main/kotlin/app/revanced/patches/music/ads/general/AdsPatch.kt index 72268a77c..9efa9ff3f 100644 --- a/src/main/kotlin/app/revanced/patches/music/ads/general/AdsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/ads/general/AdsPatch.kt @@ -214,5 +214,10 @@ object AdsPatch : BaseBytecodePatch( "revanced_hide_premium_renewal", "true" ) + SettingsPatch.addSwitchPreference( + CategoryType.ADS, + "revanced_hide_promotion_alert_banner", + "true" + ) } } diff --git a/src/main/kotlin/app/revanced/patches/music/flyoutmenu/components/FlyoutMenuComponentsPatch.kt b/src/main/kotlin/app/revanced/patches/music/flyoutmenu/components/FlyoutMenuComponentsPatch.kt index a200bfccb..9bcd39621 100644 --- a/src/main/kotlin/app/revanced/patches/music/flyoutmenu/components/FlyoutMenuComponentsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/flyoutmenu/components/FlyoutMenuComponentsPatch.kt @@ -234,12 +234,6 @@ object FlyoutMenuComponentsPatch : BaseBytecodePatch( "false" ) } - SettingsPatch.addSwitchPreference( - CategoryType.FLYOUT, - "revanced_hide_flyout_menu_like_dislike", - "false", - false - ) if (SettingsPatch.upward0636) { LithoFilterPatch.addFilter(FILTER_CLASS_DESCRIPTOR) @@ -250,6 +244,12 @@ object FlyoutMenuComponentsPatch : BaseBytecodePatch( false ) } + SettingsPatch.addSwitchPreference( + CategoryType.FLYOUT, + "revanced_hide_flyout_menu_like_dislike", + "false", + false + ) SettingsPatch.addSwitchPreference( CategoryType.FLYOUT, "revanced_hide_flyout_menu_add_to_queue", diff --git a/src/main/kotlin/app/revanced/patches/music/general/autocaptions/AutoCaptionsBytecodePatch.kt b/src/main/kotlin/app/revanced/patches/music/general/autocaptions/AutoCaptionsBytecodePatch.kt deleted file mode 100644 index 8deda0978..000000000 --- a/src/main/kotlin/app/revanced/patches/music/general/autocaptions/AutoCaptionsBytecodePatch.kt +++ /dev/null @@ -1,6 +0,0 @@ -package app.revanced.patches.music.general.autocaptions - -import app.revanced.patches.music.utils.integrations.Constants.GENERAL_CLASS_DESCRIPTOR -import app.revanced.patches.shared.captions.BaseAutoCaptionsPatch - -object AutoCaptionsBytecodePatch : BaseAutoCaptionsPatch(GENERAL_CLASS_DESCRIPTOR, false) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/music/general/autocaptions/AutoCaptionsPatch.kt b/src/main/kotlin/app/revanced/patches/music/general/autocaptions/AutoCaptionsPatch.kt index c50428704..22c0d9b64 100644 --- a/src/main/kotlin/app/revanced/patches/music/general/autocaptions/AutoCaptionsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/general/autocaptions/AutoCaptionsPatch.kt @@ -1,22 +1,38 @@ package app.revanced.patches.music.general.autocaptions -import app.revanced.patcher.data.ResourceContext +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patches.music.utils.compatibility.Constants.COMPATIBLE_PACKAGE +import app.revanced.patches.music.utils.integrations.Constants.GENERAL_CLASS_DESCRIPTOR import app.revanced.patches.music.utils.settings.CategoryType import app.revanced.patches.music.utils.settings.SettingsPatch -import app.revanced.util.patch.BaseResourcePatch +import app.revanced.patches.shared.fingerprints.SubtitleTrackFingerprint +import app.revanced.util.patch.BaseBytecodePatch +import app.revanced.util.resultOrThrow +import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction @Suppress("unused") -object AutoCaptionsPatch : BaseResourcePatch( +object AutoCaptionsPatch : BaseBytecodePatch( name = "Disable auto captions", description = "Adds an option to disable captions from being automatically enabled.", - dependencies = setOf( - AutoCaptionsBytecodePatch::class, - SettingsPatch::class, - ), - compatiblePackages = COMPATIBLE_PACKAGE + dependencies = setOf(SettingsPatch::class), + compatiblePackages = COMPATIBLE_PACKAGE, + fingerprints = setOf(SubtitleTrackFingerprint), ) { - override fun execute(context: ResourceContext) { + override fun execute(context: BytecodeContext) { + + SubtitleTrackFingerprint.resultOrThrow().mutableMethod.apply { + val index = implementation!!.instructions.lastIndex + val register = getInstruction(index).registerA + + addInstructions( + index, """ + invoke-static {v$register}, $GENERAL_CLASS_DESCRIPTOR->disableAutoCaptions(Z)Z + move-result v$register + """ + ) + } SettingsPatch.addSwitchPreference( CategoryType.GENERAL, diff --git a/src/main/kotlin/app/revanced/patches/music/misc/splash/CairoSplashAnimationPatch.kt b/src/main/kotlin/app/revanced/patches/music/misc/splash/CairoSplashAnimationPatch.kt index 5c60085e3..4a5cec5bc 100644 --- a/src/main/kotlin/app/revanced/patches/music/misc/splash/CairoSplashAnimationPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/misc/splash/CairoSplashAnimationPatch.kt @@ -20,7 +20,7 @@ import app.revanced.util.literalInstructionBooleanHook "com.google.android.apps.youtube.music", [ "7.08.54", - "7.16.52", + "7.17.51", ] ) ] diff --git a/src/main/kotlin/app/revanced/patches/music/utils/compatibility/Constants.kt b/src/main/kotlin/app/revanced/patches/music/utils/compatibility/Constants.kt index 6405d96e1..6b8abb737 100644 --- a/src/main/kotlin/app/revanced/patches/music/utils/compatibility/Constants.kt +++ b/src/main/kotlin/app/revanced/patches/music/utils/compatibility/Constants.kt @@ -11,8 +11,8 @@ object Constants { "6.33.52", // This is the latest version with the legacy code of YouTube Music. "6.42.55", // This is the latest version that supports Android 7.0 "6.51.53", // This is the latest version of YouTube Music 6.xx.xx - "7.15.52", // This was the latest version that was supported by the previous patch. - "7.16.52", // This is the latest version supported by the RVX patch. + "7.16.53", // This was the latest version that was supported by the previous patch. + "7.17.51", // This is the latest version supported by the RVX patch. ) ) ) diff --git a/src/main/kotlin/app/revanced/patches/music/utils/settings/CategoryType.kt b/src/main/kotlin/app/revanced/patches/music/utils/settings/CategoryType.kt index 963afa60b..1c7be65d8 100644 --- a/src/main/kotlin/app/revanced/patches/music/utils/settings/CategoryType.kt +++ b/src/main/kotlin/app/revanced/patches/music/utils/settings/CategoryType.kt @@ -1,11 +1,11 @@ package app.revanced.patches.music.utils.settings enum class CategoryType(val value: String, var added: Boolean) { + GENERAL("general", false), ACCOUNT("account", false), ACTION_BAR("action_bar", false), ADS("ads", false), FLYOUT("flyout", false), - GENERAL("general", false), NAVIGATION("navigation", false), PLAYER("player", false), VIDEO("video", false), diff --git a/src/main/kotlin/app/revanced/patches/music/utils/settings/VisualPreferencesIconsPatch.kt b/src/main/kotlin/app/revanced/patches/music/utils/settings/VisualPreferencesIconsPatch.kt index 0dfa2ae97..0c12e59cc 100644 --- a/src/main/kotlin/app/revanced/patches/music/utils/settings/VisualPreferencesIconsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/utils/settings/VisualPreferencesIconsPatch.kt @@ -112,6 +112,8 @@ object VisualPreferencesIconsPatch : BaseResourcePatch( "revanced_hide_samples_shelf" to "revanced_hide_navigation_samples_button", "revanced_hide_cast_button" to "M 480.23 480 Z M 840.23 255.38 L 840.23 704.62 Q 840.23 726.87 823.96 743.43 Q 807.69 760 784.85 760 L 594.62 760 Q 588.08 760 583.65 755.52 Q 579.23 751.03 579.23 744.4 Q 579.23 737.77 583.65 733.5 Q 588.08 729.23 594.62 729.23 L 784.85 729.23 Q 795.62 729.23 802.54 722.31 Q 809.46 715.38 809.46 704.62 L 809.46 255.38 Q 809.46 244.62 802.54 237.69 Q 795.62 230.77 784.85 230.77 L 175.62 230.77 Q 165.62 230.77 158.31 237.69 Q 151 244.62 151 255.38 L 151 285.38 Q 151 291.92 146.51 296.35 Q 142.03 300.77 135.4 300.77 Q 128.77 300.77 124.5 296.35 Q 120.23 291.92 120.23 285.38 L 120.23 255.38 Q 120.23 233.13 136.8 216.57 Q 153.37 200 175.62 200 L 784.85 200 Q 807.69 200 823.96 216.57 Q 840.23 233.13 840.23 255.38 Z M 307.62 760 Q 301.11 760 296.92 755.36 Q 292.74 750.73 292.08 743.77 Q 286.15 681.69 241.73 637.42 Q 197.31 593.15 135.46 586.46 Q 129 586.23 124.62 581.44 Q 120.23 576.65 120.23 570.52 Q 120.23 564 124.94 559.62 Q 129.66 555.23 136.23 555.46 Q 211.54 562.15 264.62 615.58 Q 317.69 669 323.08 744.31 Q 323.54 750.71 319.04 755.36 Q 314.54 760 307.62 760 Z M 458.76 760 Q 452.08 760 447.69 753.92 Q 443.31 747.85 443.08 740.46 Q 435.15 616.46 348.42 529.15 Q 261.69 441.85 137.92 434.69 Q 131.21 434.97 125.72 430.34 Q 120.23 425.72 120.23 419.55 Q 120.23 413 126.88 408.73 Q 133.54 404.46 141.38 404.69 Q 277.04 412.23 372.13 508.92 Q 467.23 605.62 474.62 741.62 Q 474.08 749.84 469.73 754.92 Q 465.39 760 458.76 760 Z M 146.12 760 Q 135.08 760 127.42 751.78 Q 119.77 743.55 119.77 732.89 Q 119.77 722.23 127.63 714.19 Q 135.49 706.15 146.88 706.15 Q 157.54 706.15 165.58 714.38 Q 173.62 722.6 173.62 733.26 Q 173.62 743.92 165.39 751.96 Q 157.17 760 146.12 760 Z", "revanced_hide_category_bar" to "M 342.08 364.15 L 456.77 176.38 Q 461 170.15 467.19 167.04 Q 473.38 163.92 480.23 163.92 Q 487.08 163.92 493.65 167.04 Q 500.23 170.15 504.46 176.38 L 619.15 364.15 Q 623.38 371 623.27 378.81 Q 623.15 386.62 619.54 392.85 Q 615.92 399.08 610.02 402.69 Q 604.11 406.31 595.46 406.31 L 365 406.31 Q 356.61 406.31 350.32 402.47 Q 344.03 398.63 341.31 392.85 Q 338.08 386.86 337.96 379.12 Q 337.85 371.38 342.08 364.15 Z M 702.54 849.23 Q 640.46 849.23 598.54 806.92 Q 556.62 764.62 556.62 702.54 Q 556.62 640.46 598.54 598.54 Q 640.46 556.62 702.54 556.62 Q 764.62 556.62 806.92 598.54 Q 849.23 640.46 849.23 702.54 Q 849.23 764.62 806.92 806.92 Q 764.62 849.23 702.54 849.23 Z M 150.77 798.82 L 150.77 603.13 Q 150.77 592.1 158.74 583.86 Q 166.71 575.62 178.49 575.62 L 374.18 575.62 Q 385.96 575.62 393.83 583.96 Q 401.69 592.3 401.69 603.33 L 401.69 799.03 Q 401.69 810.81 393.72 818.67 Q 385.75 826.54 373.97 826.54 L 178.28 826.54 Q 166.5 826.54 158.63 818.57 Q 150.77 810.6 150.77 798.82 Z M 702.99 818.46 Q 750.92 818.46 784.69 784.63 Q 818.46 750.8 818.46 702.48 Q 818.46 654.15 784.63 620.77 Q 750.8 587.38 702.48 587.38 Q 654.15 587.38 620.77 620.91 Q 587.38 654.43 587.38 702.99 Q 587.38 750.92 620.91 784.69 Q 654.43 818.46 702.99 818.46 Z M 181.54 795.77 L 370.92 795.77 L 370.92 606.38 L 181.54 606.38 L 181.54 795.77 Z M 369.77 375.54 L 591.46 375.54 L 480.23 198.38 L 369.77 375.54 Z M 480.23 375.54 Z M 370.92 606.38 Z M 702.92 702.92 Z", + "revanced_hide_floating_button" to "M 480.13 840 Q 405.69 840 340.34 811.66 Q 274.99 783.32 225.86 734.24 Q 176.73 685.16 148.37 619.87 Q 120 554.58 120 480.13 Q 120 405.46 148.34 339.72 Q 176.68 273.99 225.76 225.36 Q 274.84 176.73 340.13 148.37 Q 405.42 120 479.87 120 Q 554.54 120 620.28 148.34 Q 686.01 176.68 734.64 225.26 Q 783.27 273.84 811.63 339.52 Q 840 405.19 840 479.87 Q 840 554.31 811.66 619.66 Q 783.32 685.01 734.74 734.14 Q 686.16 783.27 620.48 811.63 Q 554.81 840 480.13 840 Z M 480 809.23 Q 617.38 809.23 713.31 713.19 Q 809.23 617.15 809.23 480 Q 809.23 342.62 713.31 246.69 Q 617.38 150.77 480 150.77 Q 342.85 150.77 246.81 246.69 Q 150.77 342.62 150.77 480 Q 150.77 617.15 246.81 713.19 Q 342.85 809.23 480 809.23 Z M 480 480 Z", + "revanced_hide_tap_to_update_button" to "M 482.23 800 Q 415.69 800 357.38 774.58 Q 299.08 749.15 255.35 705.92 Q 211.62 662.69 186.19 604 Q 160.77 545.31 160.77 478.77 Q 160.77 413 186.19 354.92 Q 211.62 296.85 255.35 253.35 Q 299.08 209.85 357.38 184.92 Q 415.69 160 482.23 160 Q 549.92 160 611.42 188.46 Q 672.92 216.92 719.54 266.38 L 719.54 165 L 750.31 165 L 750.31 316.85 L 599 316.85 L 599 286.08 L 695.54 286.08 Q 653.08 242 598.19 216.38 Q 543.31 190.77 482.23 190.77 Q 361.08 190.77 276.31 273.96 Q 191.54 357.15 191.54 477.31 Q 191.54 598.92 276.08 684.08 Q 360.62 769.23 482.23 769.23 Q 596.46 769.23 677.85 691.62 Q 759.23 614 768.46 501.31 L 799.23 501.31 Q 791.54 628.23 700.23 714.12 Q 608.92 800 482.23 800 Z M 612.69 631.46 L 465.62 485.62 L 465.62 278.54 L 496.38 278.54 L 496.38 472.92 L 634.92 609.23 L 612.69 631.46 Z", "revanced_hide_history_button" to "M 477 800 Q 350.308 800 259 714.116 Q 167.692 628.231 160 501.308 L 190.769 501.308 Q 200 614 281.385 691.615 Q 362.769 769.231 477 769.231 Q 598.615 769.231 683.154 684.077 Q 767.692 598.923 767.692 477.308 Q 767.692 357.154 682.923 273.961 Q 598.154 190.769 477 190.769 Q 415.923 190.769 361.038 216.385 Q 306.154 242 263.692 286.077 L 360.231 286.077 L 360.231 316.846 L 208.923 316.846 L 208.923 165 L 239.692 165 L 239.692 266.385 Q 286.307 216.923 347.808 188.461 Q 409.308 160 477 160 Q 543.539 160 601.846 184.923 Q 660.154 209.846 703.885 253.346 Q 747.616 296.846 773.039 354.923 Q 798.462 413 798.462 478.769 Q 798.462 545.308 773.039 604 Q 747.616 662.692 703.885 705.923 Q 660.154 749.154 601.846 774.577 Q 543.539 800 477 800 Z M 612.692 631.462 L 465.615 485.615 L 465.615 278.538 L 496.385 278.538 L 496.385 472.923 L 634.923 609.231 L 612.692 631.462 Z", "revanced_hide_notification_button" to "settings_header_notifications", "revanced_hide_sound_search_button" to "M 388.417 669.23 L 388.417 290.77 C 388.417 286.41 389.91 282.757 392.897 279.81 C 395.883 276.857 399.587 275.38 404.007 275.38 C 407.92 275.38 411.43 276.857 414.537 279.81 C 417.637 282.757 419.187 286.41 419.187 290.77 L 419.187 669.23 C 419.187 673.59 417.57 677.243 414.337 680.19 C 411.097 683.143 407.39 684.62 403.217 684.62 C 399.043 684.62 395.533 683.143 392.687 680.19 C 389.84 677.243 388.417 673.59 388.417 669.23 Z M 692.57 613.462 L 692.571 346.435 C 692.761 342.451 694.675 338.035 697.293 335.18 C 700.149 332.606 704.477 330.684 708.559 330.684 C 712.337 330.684 716.644 332.734 719.509 335.261 C 722.241 338.138 724.076 342.542 724.274 346.538 L 724.272 613.58 C 724.054 617.618 721.993 622.078 719.149 624.944 C 716.174 627.458 711.91 629.316 708.009 629.316 C 704.041 629.316 699.653 627.171 696.91 624.584 C 694.409 621.718 692.74 617.399 692.57 613.462 Z M 235.727 516.92 L 235.727 443.08 C 235.727 438.72 237.22 435.067 240.207 432.12 C 243.2 429.167 246.907 427.69 251.327 427.69 C 255.747 427.69 259.38 429.167 262.227 432.12 C 265.073 435.067 266.497 438.72 266.497 443.08 L 266.497 516.92 C 266.497 521.28 265 524.933 262.007 527.88 C 259.02 530.833 255.317 532.31 250.897 532.31 C 246.477 532.31 242.843 530.833 239.997 527.88 C 237.15 524.933 235.727 521.28 235.727 516.92 Z M 540.347 824.62 L 540.347 135.38 C 540.347 131.027 541.84 127.373 544.827 124.42 C 547.82 121.473 551.527 120 555.947 120 C 560.367 120 564 121.473 566.847 124.42 C 569.687 127.373 571.107 131.027 571.107 135.38 L 571.107 824.62 C 571.107 828.973 569.613 832.627 566.627 835.58 C 563.633 838.527 559.927 840 555.507 840 C 551.087 840 547.453 838.527 544.607 835.58 C 541.767 832.627 540.347 828.973 540.347 824.62 Z", @@ -122,6 +124,7 @@ object VisualPreferencesIconsPatch : BaseResourcePatch( "revanced_hide_navigation_samples_button" to "M 183.618 784.954 L 183.618 175.047 L 673.235 480.001 L 183.618 784.954 Z M 217.502 236.037 L 217.502 723.964 L 608.861 480.001 L 217.502 236.037 Z M 420.802 217.401 L 420.802 257.385 L 778.278 480.001 L 420.802 702.616 L 420.802 742.6 L 842.657 480.001 L 420.802 217.401 Z", "revanced_hide_navigation_explore_button" to "M 480 520 Q 463 520 451.5 508.5 Q 440 497 440 480 Q 440 463 451.5 451.5 Q 463 440 480 440 Q 497 440 508.5 451.5 Q 520 463 520 480 Q 520 497 508.5 508.5 Q 497 520 480 520 Z M 480.13 840 Q 405.69 840 340.34 811.66 Q 274.99 783.32 225.86 734.24 Q 176.73 685.16 148.37 619.87 Q 120 554.58 120 480.13 Q 120 405.46 148.34 339.72 Q 176.68 273.99 225.76 225.36 Q 274.84 176.73 340.13 148.37 Q 405.42 120 479.87 120 Q 554.54 120 620.28 148.34 Q 686.01 176.68 734.64 225.26 Q 783.27 273.84 811.63 339.52 Q 840 405.19 840 479.87 Q 840 554.31 811.66 619.66 Q 783.32 685.01 734.74 734.14 Q 686.16 783.27 620.48 811.63 Q 554.81 840 480.13 840 Z M 480 809.23 Q 617.38 809.23 713.31 713.19 Q 809.23 617.15 809.23 480 Q 809.23 342.62 713.31 246.69 Q 617.38 150.77 480 150.77 Q 342.85 150.77 246.81 246.69 Q 150.77 342.62 150.77 480 Q 150.77 617.15 246.81 713.19 Q 342.85 809.23 480 809.23 Z M 480 480 Z M 333.77 647 L 528.62 539.77 Q 532.08 538.54 534.81 535.81 Q 537.54 533.08 539.54 528.85 L 646.77 334 Q 652.54 324 644.19 316.12 Q 635.85 308.23 626 313.23 L 431.15 420.46 Q 426.92 422.46 424.19 425.19 Q 421.46 427.92 420.23 431.38 L 313 626.23 Q 307.23 637 315.12 644.88 Q 323 652.77 333.77 647 Z", "revanced_hide_navigation_library_button" to "M 443.231 546.231 L 657.077 409.231 L 443.231 272.231 L 443.231 546.231 Z M 296.923 698.462 Q 273.865 698.462 257.702 682.298 Q 241.538 666.135 241.538 643.077 L 241.538 175.384 Q 241.538 152.327 257.702 136.163 Q 273.865 120 296.923 120 L 764.616 120 Q 787.673 120 803.837 136.163 Q 820 152.327 820 175.384 L 820 643.077 Q 820 666.135 803.837 682.298 Q 787.673 698.462 764.616 698.462 L 296.923 698.462 Z M 296.923 667.693 L 764.616 667.693 Q 773.846 667.693 781.539 660 Q 789.231 652.308 789.231 643.077 L 789.231 175.384 Q 789.231 166.154 781.539 158.461 Q 773.846 150.769 764.616 150.769 L 296.923 150.769 Q 287.692 150.769 280 158.461 Q 272.308 166.154 272.308 175.384 L 272.308 643.077 Q 272.308 652.308 280 660 Q 287.692 667.693 296.923 667.693 Z M 195.384 800 Q 172.327 800 156.163 783.837 Q 140 767.674 140 744.616 L 140 246.154 L 170.769 246.154 L 170.769 744.616 Q 170.769 753.847 178.461 761.539 Q 186.154 769.231 195.384 769.231 L 693.847 769.231 L 693.847 800 L 195.384 800 Z M 272.308 150.769 L 272.308 667.693 L 272.308 150.769 Z", + "revanced_hide_navigation_upgrade_button" to "M 480.13 840 C 430.503 840 383.907 830.553 340.34 811.66 C 296.773 792.767 258.613 766.96 225.86 734.24 C 193.107 701.52 167.277 663.397 148.37 619.87 C 129.457 576.343 120 529.763 120 480.13 C 120 430.35 129.447 383.547 148.34 339.72 C 167.233 295.9 193.04 257.78 225.76 225.36 C 258.48 192.94 296.603 167.277 340.13 148.37 C 383.657 129.457 430.237 120 479.87 120 C 529.65 120 576.453 129.447 620.28 148.34 C 664.1 167.233 702.22 192.873 734.64 225.26 C 767.06 257.647 792.723 295.733 811.63 339.52 C 830.543 383.3 840 430.083 840 479.87 C 840 529.497 830.553 576.093 811.66 619.66 C 792.767 663.227 767.127 701.387 734.74 734.14 C 702.353 766.893 664.267 792.723 620.48 811.63 C 576.7 830.543 529.917 840 480.13 840 Z M 480 809.23 C 571.587 809.23 649.357 777.217 713.31 713.19 C 777.257 649.163 809.23 571.433 809.23 480 C 809.23 388.413 777.257 310.643 713.31 246.69 C 649.357 182.743 571.587 150.77 480 150.77 C 388.567 150.77 310.837 182.743 246.81 246.69 C 182.783 310.643 150.77 388.413 150.77 480 C 150.77 571.433 182.783 649.163 246.81 713.19 C 310.837 777.217 388.567 809.23 480 809.23 Z M 480 480 Z M 424.094 607.092 C 426.644 606.802 429.081 605.814 431.994 603.759 L 603.18 493.856 C 608.821 490.61 610.708 486.835 610.708 480.093 C 610.708 473.363 609.083 469.661 603.358 466.262 L 432.308 356.465 C 429.074 354.183 426.322 353.027 423.415 352.875 C 420.557 352.694 418.272 353.255 415.125 355.23 C 411.887 356.868 409.377 358.833 407.887 361.176 C 406.528 363.56 405.941 366.351 406.133 369.962 L 406.143 589.671 C 405.951 593.279 406.426 596.242 407.743 598.645 C 409.158 600.953 411.291 602.824 414.605 604.477 C 417.669 606.381 420.529 607.317 423.43 607.134 L 424.094 607.092 Z M 480 706.26 C 543.296 706.26 596.269 684.61 640.342 640.268 C 684.628 596.14 706.26 543.188 706.26 480 C 706.26 416.704 684.635 363.73 640.35 319.658 C 596.276 275.37 543.296 253.74 480 253.74 C 416.812 253.74 363.863 275.364 319.739 319.654 C 275.397 363.725 253.74 416.704 253.74 480 C 253.74 543.186 275.395 596.135 319.737 640.261 C 363.862 684.606 416.814 706.26 480 706.26 Z M 480.091 735.78 C 444.985 735.78 411.595 728.964 380.727 715.627 C 349.935 702.238 322.628 683.764 299.427 660.641 C 276.277 637.463 257.794 610.178 244.39 579.415 C 231.038 548.574 224.22 515.203 224.22 480.091 C 224.22 444.88 231.033 411.348 244.369 380.302 C 257.763 349.326 276.244 322.037 299.376 299.062 C 322.548 276.153 349.827 257.79 380.586 244.39 C 411.425 231.036 444.797 224.22 479.909 224.22 C 515.12 224.22 548.651 231.033 579.698 244.369 C 610.669 257.758 637.951 276.119 660.923 299.01 C 683.839 321.958 702.212 349.222 715.612 380.167 C 728.963 411.185 735.78 444.692 735.78 479.909 C 735.78 515.015 728.976 548.408 715.628 579.27 C 702.249 610.064 683.9 637.365 661.005 660.558 C 638.063 683.722 610.783 702.209 579.833 715.613 C 548.816 728.962 515.309 735.78 480.091 735.78 Z", // Player "revanced_enable_mini_player_next_button" to "M 697.222 722.968 L 697.221 236.93 C 696.994 231.868 698.381 228.676 701.97 225.477 C 705.157 221.957 708.323 220.936 713.62 220.936 C 718.889 220.936 722.074 222.072 725.034 225.545 C 728.438 228.728 729.6 231.893 729.4 237.032 L 729.401 723.07 C 729.628 728.132 728.241 731.324 724.652 734.523 C 721.465 738.043 718.299 739.064 713.002 739.064 C 707.733 739.064 704.547 737.928 701.588 734.453 C 698.183 731.272 697.022 728.107 697.222 722.968 Z M 262.765 671.477 L 547.06 479.638 L 262.765 286.615 L 262.765 671.477 Z M 230.588 669.466 L 230.588 289.723 C 230.36 278.965 233.427 271.537 240.608 265.334 C 247.589 258.658 254.82 256.018 264.343 256.018 C 267.999 256.018 271.174 256.427 274.584 257.401 C 277.809 258.237 280.86 259.881 284.273 262.489 L 561.394 450.918 C 566.825 454.511 570.287 458.262 572.688 463.127 C 575.28 467.896 576.3 472.869 576.3 479.448 C 576.3 486.019 575.227 491.153 572.621 496.071 C 570.222 501.038 566.789 504.757 561.369 508.34 L 284.028 696.927 C 280.628 699.526 277.775 701.009 274.535 701.851 C 271.128 702.828 268.001 703.222 264.343 703.222 C 254.822 703.222 247.505 700.505 240.523 693.827 C 233.341 687.628 230.363 680.228 230.588 669.466 Z", @@ -129,12 +132,20 @@ object VisualPreferencesIconsPatch : BaseResourcePatch( "revanced_enable_swipe_to_dismiss_mini_player" to "M 196.923 590.231 L 80.923 474.231 L 98.923 456.231 L 179.846 536.923 Q 170.307 499.538 165.154 462.538 Q 160 425.538 160 387.384 Q 160 314.231 183.346 246.461 Q 206.692 178.692 249.846 120 L 268.846 139 Q 229.154 194 207.654 256.961 Q 186.154 319.923 186.154 387.384 Q 186.154 426.769 191.769 465.538 Q 197.385 504.307 208.461 542.461 L 294.923 456.231 L 312.923 474.231 L 196.923 590.231 Z M 646 792.462 Q 629.077 798.923 610.154 798.308 Q 591.231 797.693 573.538 789.231 L 318.077 671.385 L 325.077 653.846 Q 328.538 643.308 336.769 637.077 Q 345 630.846 356.538 629.615 L 484.769 616.231 L 367.769 297.769 Q 365.077 291.154 368.269 285.654 Q 371.461 280.154 378.077 278.231 Q 383.923 275.538 389.538 278.346 Q 395.154 281.154 397.846 287.769 L 528 644.077 L 364.616 659.154 L 586.462 762.154 Q 597.769 767.692 610.846 767.692 Q 623.923 767.692 636 763.923 L 774.231 712.846 Q 817.077 697.308 836.5 656.731 Q 855.923 616.154 840.385 573.308 L 782.231 414.308 Q 779.538 407.692 781.962 402.462 Q 784.385 397.231 791 394.538 Q 797.615 391.846 803.231 394.269 Q 808.846 396.692 811.539 403.308 L 868.693 562.308 Q 889.385 617.615 864.962 669.808 Q 840.539 722 785.231 741.923 L 646 792.462 Z M 579.154 535.769 L 521.923 380.385 Q 519.231 373.769 522.423 368.654 Q 525.615 363.538 532.231 360.846 Q 538.077 358.154 543.577 361.346 Q 549.077 364.538 551.769 370.385 L 608.231 525 L 579.154 535.769 Z M 687.923 495.077 L 645.461 378.462 Q 642.769 371.846 645.577 366.615 Q 648.385 361.385 655 358.692 Q 661.615 356.769 667.115 359.192 Q 672.615 361.615 674.539 368.231 L 718 485.846 L 687.923 495.077 Z M 677.769 612.923 Z", "revanced_enable_zen_mode" to "M 267.15 772.31 Q 246.54 772.31 233.38 760.69 Q 220.23 749.08 220.23 729.23 Q 220.23 715.08 227.69 703.96 Q 235.15 692.85 248.31 688.15 L 423.38 618.62 L 423.38 446.77 Q 350.31 533.62 294.58 572.69 Q 238.85 611.77 162.31 622.62 Q 156.46 623.85 151.31 619.08 Q 146.15 614.31 146.15 608.23 Q 146.15 600.85 151.19 596.46 Q 156.23 592.08 162.85 590.85 Q 218.54 583.85 267.92 553.85 Q 317.31 523.85 359.62 473.62 L 416.08 410.92 Q 423 401.23 434.19 395.15 Q 445.38 389.08 458.31 389.08 L 501.69 389.08 Q 514.62 389.08 525.92 395.15 Q 537.23 401.23 544.92 410.92 L 600.62 473.62 Q 644.15 523.38 692.92 553.62 Q 741.69 583.85 797.15 590.85 Q 803.77 592.08 808.81 596.46 Q 813.85 600.85 813.85 608.23 Q 813.85 614.31 808.69 619.08 Q 803.54 623.85 797.69 622.62 Q 721.15 611.77 665.42 572.69 Q 609.69 533.62 536.62 446.77 L 536.62 618.62 L 711.69 688.15 Q 724.85 692.85 732.31 703.96 Q 739.77 715.08 739.77 729.23 Q 739.77 749.08 726.62 760.69 Q 713.46 772.31 692.85 772.31 L 398.31 772.31 L 398.31 770.54 Q 398.31 746.85 411.23 733.54 Q 424.15 720.23 447.85 720.23 L 583.15 720.23 Q 591.92 720.23 597.54 714.62 Q 603.15 709 603.15 700.23 Q 603.15 691.46 597.54 685.85 Q 591.92 680.23 583.15 680.23 L 447.85 680.23 Q 407.69 680.23 383.23 704.92 Q 358.77 729.62 358.77 770.54 L 358.77 772.31 L 267.15 772.31 Z M 480 324.46 Q 453.08 324.46 434.27 305.65 Q 415.46 286.85 415.46 259.92 Q 415.46 233 434.27 214.19 Q 453.08 195.38 480 195.38 Q 506.92 195.38 525.73 214.19 Q 544.54 233 544.54 259.92 Q 544.54 286.85 525.73 305.65 Q 506.92 324.46 480 324.46 Z", "revanced_hide_audio_video_switch_toggle" to "M 280 680 Q 196.67 680 138.33 621.72 Q 80 563.44 80 480.18 Q 80 396.92 138.33 338.46 Q 196.67 280 280 280 L 680 280 Q 763.33 280 821.67 338.28 Q 880 396.56 880 479.82 Q 880 563.08 821.67 621.54 Q 763.33 680 680 680 L 280 680 Z M 280 649.23 L 680 649.23 Q 750.56 649.23 799.89 599.93 Q 849.23 550.63 849.23 480.12 Q 849.23 409.62 799.89 360.19 Q 750.56 310.77 680 310.77 L 280 310.77 Q 209.44 310.77 160.11 360.07 Q 110.77 409.37 110.77 479.88 Q 110.77 550.38 160.11 599.81 Q 209.44 649.23 280 649.23 Z M 279.71 571 Q 317.92 571 344.35 544.73 Q 370.77 518.45 370.77 480.15 Q 370.77 441.85 344.5 415.42 Q 318.22 389 280.01 389 Q 241.8 389 214.9 415.27 Q 188 441.55 188 479.85 Q 188 518.15 214.75 544.58 Q 241.5 571 279.71 571 Z M 480 480 Z", + "revanced_hide_comment_channel_guidelines" to "M 480.35 759.77 Q 363.92 759.77 282.08 678.5 Q 200.23 597.22 200.23 480.12 Q 200.23 362.83 281.95 281.3 Q 363.68 199.77 480.49 199.77 Q 597.31 199.77 678.77 281.18 Q 760.23 362.58 760.23 479.88 Q 760.23 596.98 678.89 678.37 Q 597.55 759.77 480.35 759.77 Z M 481.46 729 Q 584.38 729 656.69 656.44 Q 729 583.88 729 480.23 Q 729 460.91 725.77 442.07 Q 722.54 423.22 716.08 404.46 Q 691.08 408.69 674.38 410.58 Q 657.69 412.46 643.19 412.46 Q 576.15 412.46 514.27 379.62 Q 452.38 346.77 407 289.62 Q 382.54 352.46 337.12 399.5 Q 291.69 446.54 230.54 468.08 Q 229.77 577.54 303.29 653.27 Q 376.8 729 481.46 729 Z M 237.77 430.46 Q 282.15 409.77 327.81 363.88 Q 373.46 318 380.54 251.15 Q 323.62 274.92 286.15 322.35 Q 248.69 369.77 237.77 430.46 Z M 392.69 545.38 Q 376.6 545.38 365.73 534.51 Q 354.85 523.63 354.85 507.54 Q 354.85 491.46 365.73 479.96 Q 376.6 468.46 392.69 468.46 Q 408.77 468.46 420.27 479.96 Q 431.77 491.46 431.77 507.54 Q 431.77 523.63 420.27 534.51 Q 408.77 545.38 392.69 545.38 Z M 647.85 381.69 Q 663.92 381.69 678.27 379.92 Q 692.62 378.15 706.69 374.62 Q 676.77 307.31 614.08 268.92 Q 551.38 230.54 480 230.54 Q 462 230.54 447.31 232.19 Q 432.62 233.85 416.23 238.15 Q 451 312.08 518.81 346.88 Q 586.62 381.69 647.85 381.69 Z M 567.84 545.62 Q 551.76 545.62 540.76 534.67 Q 529.77 523.72 529.77 507.54 Q 529.77 491.36 540.71 479.8 Q 551.66 468.23 567.84 468.23 Q 583.92 468.23 595.42 479.8 Q 606.92 491.36 606.92 507.54 Q 606.92 523.72 595.42 534.67 Q 583.92 545.62 567.84 545.62 Z M 80 236.62 L 80 135.38 Q 80 112.33 96.16 96.16 Q 112.33 80 135.38 80 L 236.62 80 L 236.62 110.77 L 135.38 110.77 Q 126.15 110.77 118.46 118.46 Q 110.77 126.15 110.77 135.38 L 110.77 236.62 L 80 236.62 Z M 236.62 880 L 135.38 880 Q 112.33 880 96.16 863.84 Q 80 847.67 80 824.62 L 80 723.38 L 110.77 723.38 L 110.77 824.62 Q 110.77 833.85 118.46 841.54 Q 126.15 849.23 135.38 849.23 L 236.62 849.23 L 236.62 880 Z M 723.38 880 L 723.38 849.23 L 824.62 849.23 Q 833.85 849.23 841.54 841.54 Q 849.23 833.85 849.23 824.62 L 849.23 723.38 L 880 723.38 L 880 824.62 Q 880 847.67 863.84 863.84 Q 847.67 880 824.62 880 L 723.38 880 Z M 849.23 236.62 L 849.23 135.38 Q 849.23 126.15 841.54 118.46 Q 833.85 110.77 824.62 110.77 L 723.38 110.77 L 723.38 80 L 824.62 80 Q 847.67 80 863.84 96.16 Q 880 112.33 880 135.38 L 880 236.62 L 849.23 236.62 Z M 416.23 238.15 Z M 380.54 251.15 Z", "revanced_hide_comment_timestamp_and_emoji_buttons" to "M 615.41 418.54 Q 632.35 418.54 644.63 406.07 Q 656.92 393.6 656.92 376.67 Q 656.92 359.73 644.45 347.44 Q 631.98 335.15 615.05 335.15 Q 598.12 335.15 585.83 347.62 Q 573.54 360.09 573.54 377.03 Q 573.54 393.96 586.01 406.25 Q 598.48 418.54 615.41 418.54 Z M 344.95 418.54 Q 361.88 418.54 374.17 406.07 Q 386.46 393.6 386.46 376.67 Q 386.46 359.73 373.99 347.44 Q 361.52 335.15 344.59 335.15 Q 327.65 335.15 315.37 347.62 Q 303.08 360.09 303.08 377.03 Q 303.08 393.96 315.55 406.25 Q 328.02 418.54 344.95 418.54 Z M 480.13 840 Q 405.46 840 339.72 811.66 Q 273.99 783.32 225.36 734.74 Q 176.73 686.16 148.37 620.48 Q 120 554.81 120 480.13 Q 120 405.46 148.34 339.72 Q 176.68 273.99 225.26 225.36 Q 273.84 176.73 339.52 148.37 Q 405.19 120 479.87 120 Q 554.54 120 620.28 148.34 Q 686.01 176.68 734.64 225.26 Q 783.27 273.84 811.63 339.52 Q 840 405.19 840 479.87 Q 840 554.54 811.66 620.28 Q 783.32 686.01 734.74 734.64 Q 686.16 783.27 620.48 811.63 Q 554.81 840 480.13 840 Z M 480 480 Z M 479.93 809.23 Q 617.76 809.23 713.5 713.57 Q 809.23 617.91 809.23 480.07 Q 809.23 342.24 713.57 246.5 Q 617.91 150.77 480.07 150.77 Q 342.24 150.77 246.5 246.43 Q 150.77 342.09 150.77 479.93 Q 150.77 617.76 246.43 713.5 Q 342.09 809.23 479.93 809.23 Z M 479.32 675.15 Q 528.71 675.15 570.49 653.12 Q 612.28 631.08 639.26 591.52 Q 645.38 582.08 639.79 572.62 Q 634.19 563.15 623.77 563.15 L 336.15 563.15 Q 325.31 563.15 319.96 572.62 Q 314.62 582.08 320.74 591.52 Q 347.63 631.08 389.21 653.12 Q 430.79 675.15 479.32 675.15 Z", + "revanced_hide_double_tap_overlay_filter" to "M 568.38 840 Q 549.58 840 532.21 832.77 Q 514.85 825.54 501.15 811.85 L 330.31 641.54 L 350.15 620.69 Q 358.54 612.31 369.64 610.23 Q 380.74 608.15 392.62 611.62 L 480 631.54 L 480 336.15 Q 480 329.58 484.38 325.17 Q 488.77 320.77 495.5 320.77 Q 502.23 320.77 506.5 325.17 Q 510.77 329.58 510.77 336.15 L 510.77 672.31 L 370.08 636.54 L 522.62 790.38 Q 531.92 799.92 543.5 804.58 Q 555.08 809.23 568.38 809.23 L 716.92 809.23 Q 760.31 809.23 790.92 778.61 Q 821.54 747.98 821.54 704.62 L 821.54 573.08 Q 821.54 566.5 825.92 562.1 Q 830.31 557.69 837.04 557.69 Q 843.77 557.69 848.04 562.1 Q 852.31 566.5 852.31 573.08 L 852.31 704.62 Q 852.31 761.46 813.04 800.73 Q 773.77 840 716.92 840 L 568.38 840 Z M 593.92 578.46 L 593.92 290 Q 593.92 283.42 598.31 279.02 Q 602.69 274.62 609.42 274.62 Q 616.15 274.62 620.42 279.02 Q 624.69 283.42 624.69 290 L 624.69 578.46 L 593.92 578.46 Z M 707.62 578.46 L 707.62 477.69 Q 707.62 471.12 712 466.71 Q 716.38 462.31 723.12 462.31 Q 729.85 462.31 734.12 466.71 Q 738.38 471.12 738.38 477.69 L 738.38 578.46 L 707.62 578.46 Z M 716.92 809.23 L 522.62 809.23 L 716.92 809.23 Z M 175.38 720 Q 152.33 720 136.16 703.84 Q 120 687.67 120 664.62 L 120 215.38 Q 120 192.33 136.16 176.16 Q 152.33 160 175.38 160 L 744.62 160 Q 767.67 160 783.84 176.16 Q 800 192.33 800 215.38 L 800 362.31 L 769.23 362.31 L 769.23 215.38 Q 769.23 206.15 761.54 198.46 Q 753.85 190.77 744.62 190.77 L 175.38 190.77 Q 166.15 190.77 158.46 198.46 Q 150.77 206.15 150.77 215.38 L 150.77 664.62 Q 150.77 673.85 158.46 681.54 Q 166.15 689.23 175.38 689.23 L 261.46 689.23 L 292 720 L 175.38 720 Z", "revanced_hide_fullscreen_share_button" to "revanced_hide_action_button_share", "revanced_remember_repeat_state" to "M 219.85 723.08 L 303.31 806.54 Q 307.69 811.06 307.96 817.22 Q 308.23 823.38 303.09 828.6 Q 297.82 833.81 292.03 833.87 Q 286.23 833.92 281.08 828.77 L 179.46 727.15 Q 175.23 722.92 173.23 718.07 Q 171.23 713.22 171.23 707.46 Q 171.23 701.69 173.23 697.08 Q 175.23 692.46 179.46 688.23 L 281.08 586.62 Q 285.63 582.23 291.89 581.96 Q 298.15 581.69 303.31 586.96 Q 308.35 592.22 308.41 597.96 Q 308.46 603.69 303.31 608.85 L 219.85 692.31 L 676.92 692.31 Q 687.69 692.31 694.62 685.38 Q 701.54 678.46 701.54 667.69 L 701.54 547.69 Q 701.54 541.12 706 536.71 Q 710.45 532.31 717.11 532.31 Q 723.77 532.31 728.04 536.71 Q 732.31 541.12 732.31 547.69 L 732.31 667.69 Q 732.31 690.13 715.84 706.61 Q 699.37 723.08 676.92 723.08 L 219.85 723.08 Z M 740.15 267.69 L 283.08 267.69 Q 272.31 267.69 265.38 274.62 Q 258.46 281.54 258.46 292.31 L 258.46 412.31 Q 258.46 418.88 254 423.29 Q 249.55 427.69 242.89 427.69 Q 236.23 427.69 231.96 423.29 Q 227.69 418.88 227.69 412.31 L 227.69 292.31 Q 227.69 269.87 244.16 253.39 Q 260.63 236.92 283.08 236.92 L 740.15 236.92 L 656.69 153.46 Q 652.31 148.94 652.04 142.78 Q 651.77 136.62 656.91 131.4 Q 662.18 126.19 667.97 126.13 Q 673.77 126.08 678.92 131.23 L 780.54 232.85 Q 784.77 237.08 787.15 241.93 Q 789.54 246.78 789.54 252.54 Q 789.54 258.31 787.15 262.92 Q 784.77 267.54 780.54 271.77 L 678.92 373.38 Q 674.37 377.77 668.11 378.04 Q 661.85 378.31 656.69 373.04 Q 651.65 367.78 651.59 362.04 Q 651.54 356.31 656.69 351.15 L 740.15 267.69 Z", "revanced_remember_shuffle_state" to "revanced_hide_flyout_menu_shuffle_play", + // Player + "revanced_remember_playback_speed_last_selected" to "M 425.461 614.616 Q 443.077 632.616 475.038 630.346 Q 507 628.077 520.846 607.077 L 727.616 312.692 L 433.385 519.385 Q 411.846 534 409.846 565.308 Q 407.846 596.615 425.461 614.616 Z M 478.769 200.231 Q 533.462 200.231 582.385 214.884 Q 631.308 229.538 679.846 262.231 L 654 282.308 Q 613.615 256.154 568.269 243.577 Q 522.923 231 478.961 231 Q 342.121 231 246.445 327.639 Q 150.769 424.278 150.769 561.744 Q 150.769 605.154 162.5 648.462 Q 174.231 691.769 196.667 729.231 L 760.846 729.231 Q 783.615 692.462 795.462 647.923 Q 807.308 603.385 807.308 558.923 Q 807.308 520 795.962 473.423 Q 784.615 426.846 758 388.923 L 778.539 363.077 Q 811.923 416.769 824.385 462.884 Q 836.846 509 838.077 556.769 Q 838.539 609.077 826.846 654.385 Q 815.154 699.692 790.462 743.923 Q 784.616 753.846 777.654 756.923 Q 770.692 760 759.154 760 L 198.154 760 Q 189.511 760 181.14 754.962 Q 172.769 749.923 167.846 740.846 Q 148 705.154 134 661.423 Q 120 617.692 120 561.692 Q 120 487.923 147.978 422.218 Q 175.956 356.513 224.247 307.295 Q 272.538 258.077 338.295 229.154 Q 404.052 200.231 478.769 200.231 Z M 473.615 487.385 Z", + "revanced_remember_video_quality_last_selected" to "M 592.69 651.08 L 623.46 651.08 L 623.46 589.15 L 655.23 589.15 Q 671.76 589.15 683.57 577.41 Q 695.38 565.66 695.38 549.23 L 695.38 411 Q 695.38 394.47 683.57 382.66 Q 671.76 370.85 655.23 370.85 L 563.08 370.85 Q 546.77 370.85 533.38 382.66 Q 520 394.47 520 411 L 520 549.23 Q 520 565.66 533.38 577.41 Q 546.77 589.15 563.08 589.15 L 592.69 589.15 L 592.69 651.08 Z M 264.62 589.15 L 295.38 589.15 L 295.38 504.77 L 409.23 504.77 L 409.23 589.15 L 440 589.15 L 440 370.85 L 409.23 370.85 L 409.23 474 L 295.38 474 L 295.38 370.85 L 264.62 370.85 L 264.62 589.15 Z M 563.08 558.38 Q 558.46 558.38 554.62 554.54 Q 550.77 550.69 550.77 546.08 L 550.77 413.92 Q 550.77 409.31 554.62 405.46 Q 558.46 401.62 563.08 401.62 L 652.31 401.62 Q 656.92 401.62 660.77 405.46 Q 664.62 409.31 664.62 413.92 L 664.62 546.08 Q 664.62 550.69 660.77 554.54 Q 656.92 558.38 652.31 558.38 L 563.08 558.38 Z M 175.38 760 Q 152.33 760 136.16 743.84 Q 120 727.67 120 704.62 L 120 255.38 Q 120 232.33 136.16 216.16 Q 152.33 200 175.38 200 L 784.62 200 Q 807.67 200 823.84 216.16 Q 840 232.33 840 255.38 L 840 704.62 Q 840 727.67 823.84 743.84 Q 807.67 760 784.62 760 L 175.38 760 Z M 175.38 729.23 L 784.62 729.23 Q 793.85 729.23 801.54 721.54 Q 809.23 713.85 809.23 704.62 L 809.23 255.38 Q 809.23 246.15 801.54 238.46 Q 793.85 230.77 784.62 230.77 L 175.38 230.77 Q 166.15 230.77 158.46 238.46 Q 150.77 246.15 150.77 255.38 L 150.77 704.62 Q 150.77 713.85 158.46 721.54 Q 166.15 729.23 175.38 729.23 Z M 150.77 729.23 L 150.77 230.77 L 150.77 729.23 Z", + // Misc + "revanced_change_share_sheet" to "revanced_hide_action_button_share", + "revanced_enable_opus_codec" to "M 498.445 225.191 C 409.356 225.838 332.555 239.944 268.01 267.467 C 188.575 301.394 135.618 351.697 109.18 418.362 C 101.242 438.803 96.979 458.062 96.352 476.146 C 88.714 607.252 172.458 681.097 224.169 713.924 C 244.921 727.904 263.372 734.832 263.372 734.832 L 287.071 658.597 L 294.079 639.858 C 325.275 645.791 359.951 649.928 398.303 652.167 C 515.733 659.061 614.148 645.566 693.583 611.631 C 773.017 577.737 825.537 527.842 851.135 461.903 C 876.732 396.008 864.533 342.108 814.505 300.154 L 814.473 300.178 C 775.008 267.112 714.252 244.985 632.37 233.678 L 572.196 426.243 C 570.897 433.312 568.657 441.327 565.19 450.572 C 559.043 466.019 551.647 478.747 542.959 488.769 C 534.258 498.807 524.523 506.634 513.737 512.347 C 502.941 518.017 491.197 521.948 478.518 524.105 C 465.825 526.254 452.715 526.918 439.159 526.125 C 425.585 525.33 414.037 523.471 404.537 520.539 C 395.028 517.61 386.282 512.762 378.304 505.965 C 372.411 499.296 368.985 490.546 368.048 479.692 C 367.107 468.851 369.725 455.441 375.884 439.461 C 381.399 425.573 388.375 413.463 396.83 403.174 C 405.276 392.881 415.157 384.897 426.462 379.237 C 437.255 373.565 448.857 369.761 461.278 367.847 C 473.665 365.944 487.441 365.446 502.556 366.332 C 515.082 367.074 526.741 368.933 537.562 371.95 C 542.691 373.364 547.191 375.238 551.102 377.488 L 597.276 229.622 C 585.876 228.54 574.214 227.586 562.088 226.888 C 540.223 225.599 519.004 225.042 498.445 225.191 Z M 518.855 249.594 C 532.487 249.804 546.427 250.324 560.678 251.16 L 560.698 251.16 C 562.213 251.25 563.612 251.406 565.109 251.5 L 535.4 346.648 C 525.29 344.382 514.888 342.713 503.978 342.062 L 503.954 342.062 C 487.461 341.097 472.038 341.603 457.634 343.816 L 457.626 343.816 C 442.789 346.102 428.615 350.728 415.512 357.582 C 401.195 364.78 388.585 375.037 378.204 387.688 C 367.985 400.129 359.768 414.509 353.446 430.424 L 353.407 430.541 L 353.357 430.663 C 346.385 448.758 342.547 465.348 343.979 481.818 C 345.259 496.642 350.489 511.07 360.254 522.123 L 361.391 523.411 L 362.7 524.521 C 372.993 533.291 384.783 539.883 397.476 543.79 C 409.48 547.489 422.794 549.525 437.751 550.399 C 452.997 551.29 467.958 550.539 482.525 548.071 L 482.54 548.071 C 497.555 545.518 511.798 540.792 524.906 533.909 L 524.946 533.885 L 524.987 533.872 C 538.522 526.703 550.686 516.838 561.168 504.753 C 572.054 492.194 580.69 477.027 587.621 459.617 L 587.714 459.387 L 587.799 459.155 C 591.346 449.699 593.758 441.116 595.389 433.03 L 649.024 261.425 C 717.399 273.095 767.93 292.827 799.018 318.869 L 799.418 319.208 C 820.988 337.418 832.841 356.322 837.627 377.455 C 842.446 398.732 840.147 423.42 828.635 453.052 L 828.635 453.061 C 805.611 512.368 759.271 557.188 684.154 589.241 L 684.147 589.249 C 609.196 621.269 514.533 634.631 399.718 627.888 L 399.71 627.888 C 362.232 625.704 328.564 621.677 298.567 615.969 L 278.621 612.173 L 264.224 650.675 L 248.83 700.171 C 244.984 697.977 241.9 696.607 237.614 693.718 L 237.338 693.538 L 237.059 693.363 C 189.221 662.996 113.458 597.771 120.463 477.563 L 120.487 477.28 L 120.495 476.99 C 121.009 462.165 124.543 445.616 131.66 427.278 C 155.541 367.135 202.398 321.901 277.438 289.85 C 333.686 265.863 400.767 252.328 478.881 249.884 C 491.901 249.475 505.222 249.379 518.855 249.594 Z", "revanced_enable_debug_logging" to "M 243.08 447.46 L 243.08 413.51 Q 243.08 352.38 270.69 302.62 Q 298.31 252.85 344.62 220.23 L 281.15 156.77 L 311 126.15 L 382.81 197.85 Q 404.16 187.38 429.23 182.04 Q 454.31 176.69 479.84 176.69 Q 505.38 176.69 530.65 182.04 Q 555.92 187.38 577.31 197.85 L 649 126.15 L 678.85 156.77 L 615.38 220.23 Q 661.69 252.85 689.31 302.67 Q 716.92 352.5 716.92 413.55 L 716.92 447.46 L 243.08 447.46 Z M 581.54 379.77 Q 595.92 379.77 605.65 369.65 Q 615.38 359.54 615.38 345.92 Q 615.38 331.54 605.65 321.81 Q 595.92 312.08 581.54 312.08 Q 567.15 312.08 557.42 321.81 Q 547.69 331.54 547.69 345.92 Q 547.69 359.54 557.42 369.65 Q 567.15 379.77 581.54 379.77 Z M 378.46 379.77 Q 392.85 379.77 402.58 369.65 Q 412.31 359.54 412.31 345.92 Q 412.31 331.54 402.58 321.81 Q 392.85 312.08 378.46 312.08 Q 364.08 312.08 354.35 321.81 Q 344.62 331.54 344.62 345.92 Q 344.62 359.54 354.35 369.65 Q 364.08 379.77 378.46 379.77 Z M 480 853.85 Q 381 853.85 312.04 784.88 Q 243.08 715.92 243.08 616.92 L 243.08 481.31 L 716.92 481.31 L 716.92 617.1 Q 716.92 716.23 647.96 785.04 Q 579 853.85 480 853.85 Z", "gms_core_settings" to "M 432.54 840 C 427.307 840 422.563 838.283 418.31 834.85 C 414.05 831.41 411.51 827.077 410.69 821.85 L 397.23 725.54 C 382.51 720.873 366.357 713.643 348.77 703.85 C 331.177 694.05 316.28 683.537 304.08 672.31 L 216.54 712.31 C 211.307 714.257 206.077 714.5 200.85 713.04 C 195.617 711.58 191.617 708.31 188.85 703.23 L 140.08 618.46 C 137.307 613.387 136.447 608.36 137.5 603.38 C 138.553 598.407 141.54 594.203 146.46 590.77 L 225.69 531.77 C 224.357 523.717 223.267 515.217 222.42 506.27 C 221.573 497.323 221.15 488.823 221.15 480.77 C 221.15 473.23 221.573 464.987 222.42 456.04 C 223.267 447.093 224.357 437.823 225.69 428.23 L 146.46 369.23 C 141.54 365.797 138.68 361.463 137.88 356.23 C 137.087 350.997 138.077 345.843 140.85 340.77 L 188.85 258.31 C 191.617 253.743 195.617 250.6 200.85 248.88 C 206.077 247.167 211.307 247.283 216.54 249.23 L 303.31 287.69 C 317.05 276.463 332.203 266.08 348.77 256.54 C 365.337 247 381.233 239.973 396.46 235.46 L 410.69 138.15 C 411.51 132.923 414.05 128.59 418.31 125.15 C 422.563 121.717 427.307 120 432.54 120 L 527.46 120 C 532.693 120 537.437 121.717 541.69 125.15 C 545.95 128.59 548.49 132.923 549.31 138.15 L 562.77 235.23 C 579.537 241.437 595.473 248.757 610.58 257.19 C 625.68 265.63 640.027 275.797 653.62 287.69 L 744.23 249.23 C 749.463 247.283 754.657 247.167 759.81 248.88 C 764.963 250.6 768.923 253.743 771.69 258.31 L 819.92 341.54 C 822.693 346.613 823.553 351.807 822.5 357.12 C 821.447 362.427 818.46 366.463 813.54 369.23 L 731.23 429.31 C 733.59 438.537 735.063 447.37 735.65 455.81 C 736.243 464.243 736.54 472.307 736.54 480 C 736.54 487.18 736.117 494.95 735.27 503.31 C 734.423 511.67 733.077 520.977 731.23 531.23 L 811.23 590.77 C 816.157 593.537 819.273 597.573 820.58 602.88 C 821.887 608.193 821.153 613.387 818.38 618.46 L 771.15 702.46 C 767.87 707.54 763.487 710.81 758 712.27 C 752.513 713.73 747.41 713.487 742.69 711.54 L 653.62 671.54 C 639.36 683.793 624.627 694.6 609.42 703.96 C 594.22 713.32 578.67 720.257 562.77 724.77 L 549.31 821.85 C 548.49 827.077 545.95 831.41 541.69 834.85 C 537.437 838.283 532.693 840 527.46 840 L 432.54 840 Z M 438.31 809.23 L 520.92 809.23 L 535.69 698 C 556.15 692.667 574.933 685.103 592.04 675.31 C 609.14 665.517 626.46 652.363 644 635.85 L 746.92 680.31 L 786.92 610.62 L 696 543.15 C 698.667 530.797 700.707 519.63 702.12 509.65 C 703.527 499.677 704.23 489.793 704.23 480 C 704.23 469.18 703.563 459.04 702.23 449.58 C 700.897 440.113 698.82 429.713 696 418.38 L 788.46 349.38 L 748.46 279.69 L 643.23 324.15 C 630.463 309.897 613.9 296.553 593.54 284.12 C 573.18 271.68 553.64 264.307 534.92 262 L 521.69 150.77 L 438.31 150.77 L 425.85 261.23 C 404.203 265.383 384.573 272.487 366.96 282.54 C 349.347 292.593 332.103 306.207 315.23 323.38 L 211.54 279.69 L 171.54 349.38 L 262.46 416.08 C 259.28 425.873 256.987 436.14 255.58 446.88 C 254.167 457.627 253.46 468.923 253.46 480.77 C 253.46 491.59 254.167 502.117 255.58 512.35 C 256.987 522.577 259.023 532.843 261.69 543.15 L 171.54 610.62 L 211.54 680.31 L 314.46 636.62 C 330.46 653.127 347.397 666.28 365.27 676.08 C 383.143 685.873 403.08 693.437 425.08 698.77 L 438.31 809.23 Z M 430.15 587.46 L 529.85 587.46 C 540.384 587.46 549.427 583.683 556.98 576.13 C 564.534 568.583 568.31 559.54 568.31 549 L 568.31 544.76 C 568.31 540.353 566.887 536.766 564.04 534 C 561.2 531.233 557.777 529.85 553.77 529.85 L 551.31 529.85 C 547.23 529.85 543.914 531.27 541.36 534.11 C 538.814 536.95 537.54 540.373 537.54 544.38 C 537.54 547.46 536.257 550.283 533.69 552.85 C 531.13 555.41 528.31 556.69 525.23 556.69 L 434.77 556.69 C 431.69 556.69 428.87 555.41 426.31 552.85 C 423.744 550.283 422.46 547.46 422.46 544.38 L 422.46 415.62 C 422.46 412.54 423.744 409.716 426.31 407.15 C 428.87 404.59 431.69 403.31 434.77 403.31 L 525.23 403.31 C 528.31 403.31 531.13 404.59 533.69 407.15 C 536.257 409.716 537.54 412.54 537.54 415.62 C 537.54 419.72 538.814 423.166 541.36 425.96 C 543.914 428.753 547.23 430.15 551.31 430.15 L 553.77 430.15 C 557.777 430.15 561.2 428.766 564.04 426 C 566.887 423.233 568.31 419.646 568.31 415.24 L 568.31 411 C 568.31 400.46 564.534 391.416 556.98 383.87 C 549.427 376.316 540.384 372.54 529.85 372.54 L 430.15 372.54 C 419.617 372.54 410.574 376.316 403.02 383.87 C 395.467 391.416 391.69 400.46 391.69 411 L 391.69 549 C 391.69 559.54 395.467 568.583 403.02 576.13 C 410.574 583.683 419.617 587.46 430.15 587.46 Z", "revanced_sanitize_sharing_links" to "M 264.874 586.16 C 219.754 586.16 181.294 570.263 149.494 538.47 C 117.694 506.677 101.794 468.227 101.794 423.12 C 101.794 378.013 117.694 339.55 149.494 307.73 C 181.294 275.91 219.754 260 264.874 260 L 395.644 260 C 399.998 260 403.651 261.497 406.604 264.49 C 409.551 267.477 411.024 271.18 411.024 275.6 C 411.024 280.02 409.551 283.653 406.604 286.5 C 403.651 289.347 399.998 290.77 395.644 290.77 L 264.784 290.77 C 228.004 290.77 196.771 303.59 171.084 329.23 C 145.404 354.87 132.564 386.073 132.564 422.84 C 132.564 459.613 145.404 490.9 171.084 516.7 C 196.771 542.493 228.004 555.39 264.784 555.39 L 395.644 555.39 C 399.998 555.39 403.651 556.883 406.604 559.87 C 409.551 562.863 411.024 566.57 411.024 570.99 C 411.024 575.41 409.551 579.043 406.604 581.89 C 403.651 584.737 399.998 586.16 395.644 586.16 L 264.874 586.16 Z M 774.144 538.511 C 771.086 540.683 766.86 540.783 764.544 540.57 C 760.366 540.185 758.078 538.357 754.98 535.666 C 751.882 532.975 751.63 531.654 750.649 528.904 C 750.182 527.596 748.871 524.358 751.415 519.354 C 751.415 519.354 791.024 460.087 791.024 423.32 C 791.024 386.547 778.184 355.26 752.504 329.46 C 726.817 303.667 695.584 290.77 658.804 290.77 L 527.944 290.77 C 523.591 290.77 519.937 289.277 516.984 286.29 C 514.037 283.297 512.564 279.59 512.564 275.17 C 512.564 270.75 514.037 267.117 516.984 264.27 C 519.937 261.423 523.591 260 527.944 260 L 658.714 260 C 703.834 260 742.294 275.897 774.094 307.69 C 805.894 339.483 821.794 377.933 821.794 423.04 C 821.794 468.147 775.114 537.606 774.094 538.43 C 773.074 539.254 774.144 538.511 774.144 538.511 Z M 339.874 438.46 C 335.514 438.46 331.861 436.967 328.914 433.98 C 325.961 430.987 324.484 427.28 324.484 422.86 C 324.484 418.44 325.961 414.807 328.914 411.96 C 331.861 409.12 335.514 407.7 339.874 407.7 L 584.484 407.7 C 588.344 407.7 591.874 409.193 595.074 412.18 C 598.274 415.173 599.874 418.88 599.874 423.3 C 599.874 427.72 598.274 431.353 595.074 434.2 C 591.874 437.04 588.344 438.46 584.484 438.46 L 339.874 438.46 Z M 646.735 588.639 L 693.414 588.639 L 693.414 455.293 C 693.625 448.262 691.73 443.428 686.819 438.764 C 682.285 433.815 677.325 431.938 670.075 431.938 C 662.807 431.938 658.004 433.624 653.477 438.498 C 648.582 443.064 646.523 448.007 646.735 455.196 L 646.735 588.639 Z M 535.979 661.988 L 804.17 661.988 L 804.17 621.073 C 804.243 619.885 804.252 619.077 804.117 618.501 C 803.933 617.98 803.629 617.584 802.916 617.122 L 802.882 617.102 L 802.939 617.136 L 802.837 617.054 L 802.682 616.929 L 802.549 616.765 C 802.173 616.141 801.725 615.567 801.043 615.343 C 800.452 615.148 799.673 615.201 798.63 615.302 L 541.758 615.309 C 540.691 615.221 539.923 615.135 539.324 615.274 C 538.608 615.44 538.111 616 537.717 616.642 L 537.652 616.721 L 537.57 616.815 L 537.447 616.924 C 536.071 617.969 535.788 618.595 535.971 620.804 L 535.979 661.988 Z M 508.72 774.053 L 508.78 774.118 L 508.859 774.245 C 509.474 775.283 509.976 775.881 510.571 776.247 C 511.209 776.521 511.95 776.583 513.159 776.417 L 513.22 776.409 L 513.152 776.418 L 565.057 776.41 L 565.057 732.567 C 565.284 729.457 566.793 725.542 568.823 723.197 L 568.859 723.155 L 568.892 723.117 L 568.98 723.039 C 571.239 721.103 575.188 719.199 578.494 719.199 C 581.796 719.199 585.587 720.982 587.831 722.966 L 587.879 723.011 L 587.933 723.06 L 587.966 723.091 L 588.065 723.203 C 589.949 725.489 591.494 729.213 591.72 732.322 L 591.726 776.41 L 656.742 776.41 L 656.742 732.568 C 656.974 729.451 658.491 725.532 660.502 723.204 L 660.527 723.174 L 660.572 723.122 L 660.672 723.035 C 662.928 721.096 666.87 719.199 670.179 719.199 C 673.482 719.199 677.271 720.98 679.514 722.964 L 679.567 723.014 L 679.616 723.059 L 679.65 723.09 L 679.746 723.198 C 681.629 725.486 683.175 729.217 683.401 732.322 L 683.407 776.41 L 748.423 776.41 L 748.423 732.568 C 748.656 729.451 750.165 725.553 752.17 723.221 L 752.225 723.161 L 752.262 723.12 L 752.344 723.048 C 754.601 721.106 758.552 719.199 761.86 719.199 C 765.214 719.199 768.948 721.002 771.135 722.905 L 771.253 723.013 L 771.299 723.055 L 771.418 723.196 C 773.249 725.43 774.834 729.143 775.085 732.292 L 775.093 776.41 L 826.747 776.41 L 826.743 776.41 C 828.006 776.549 828.813 776.524 829.478 776.288 C 830.101 775.964 830.588 775.454 831.148 774.44 L 831.197 774.357 L 831.239 774.29 L 831.34 774.176 C 832.184 773.282 832.647 772.626 832.853 771.97 C 832.961 771.295 832.846 770.602 832.392 769.542 L 832.395 769.548 L 807.926 684.253 L 532.224 684.253 L 507.807 769.382 L 507.811 769.372 C 507.368 770.472 507.205 771.203 507.272 771.877 C 507.439 772.532 507.826 773.138 508.662 773.991 L 508.72 774.053 Z M 823.872 803.08 L 516.178 803.08 C 505.681 802.767 495.733 797.822 488.81 789.629 C 482.33 780.953 480.227 769.972 482.969 759.447 L 509.309 668.961 L 509.309 623.173 C 509.536 614.027 513.263 605.083 519.403 598.606 C 525.882 592.467 534.786 588.865 543.927 588.639 L 620.065 588.639 L 620.065 455.228 C 620.295 441.882 625.518 429.339 634.704 419.822 C 644.207 410.638 656.692 405.268 670.075 405.268 C 683.46 405.268 696.029 410.726 705.528 419.906 C 714.719 429.427 719.854 441.944 720.084 455.286 L 720.084 588.639 L 796.305 588.639 C 805.448 588.867 814.4 592.6 820.877 598.737 C 827.014 605.213 830.615 614.113 830.84 623.256 L 830.84 668.97 L 857.238 760.388 C 859.706 770.645 857.386 781.446 851.039 789.956 C 844.225 798.038 834.36 802.775 823.872 803.08 Z", @@ -150,6 +161,9 @@ object VisualPreferencesIconsPatch : BaseResourcePatch( val emptyTitles = setOf( "revanced_enable_debug_buffer_logging", + "revanced_hide_fullscreen_ads_type", + "revanced_remember_playback_speed_last_selected_toast", + "revanced_remember_video_quality_last_selected_toast", "revanced_replace_flyout_menu_dismiss_queue_continue_watch", "revanced_replace_flyout_menu_report_only_player", "revanced_enable_zen_mode_podcast", diff --git a/src/main/kotlin/app/revanced/patches/music/video/information/VideoInformationPatch.kt b/src/main/kotlin/app/revanced/patches/music/video/information/VideoInformationPatch.kt index 3f1817f5d..53cd1e098 100644 --- a/src/main/kotlin/app/revanced/patches/music/video/information/VideoInformationPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/video/information/VideoInformationPatch.kt @@ -8,6 +8,7 @@ import app.revanced.patcher.fingerprint.MethodFingerprintResult import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.PatchException import app.revanced.patcher.patch.annotation.Patch +import app.revanced.patcher.util.proxy.mutableTypes.MutableClass import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable import app.revanced.patcher.util.smali.toInstructions @@ -22,20 +23,26 @@ import app.revanced.patches.music.video.information.fingerprints.VideoLengthFing import app.revanced.patches.music.video.information.fingerprints.VideoQualityListFingerprint import app.revanced.patches.music.video.information.fingerprints.VideoQualityTextFingerprint import app.revanced.patches.music.video.videoid.VideoIdPatch +import app.revanced.patches.shared.fingerprints.MdxPlayerDirectorSetVideoStageFingerprint import app.revanced.util.addFieldAndInstructions +import app.revanced.util.getReference import app.revanced.util.getTargetIndexWithFieldReferenceTypeReversedOrThrow import app.revanced.util.getTargetIndexWithMethodReferenceNameReversedOrThrow import app.revanced.util.getWalkerMethod +import app.revanced.util.indexOfFirstInstructionOrThrow import app.revanced.util.resultOrThrow import com.android.tools.smali.dexlib2.AccessFlags +import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction import com.android.tools.smali.dexlib2.iface.reference.FieldReference +import com.android.tools.smali.dexlib2.iface.reference.MethodReference import com.android.tools.smali.dexlib2.immutable.ImmutableMethod import com.android.tools.smali.dexlib2.immutable.ImmutableMethodImplementation import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter +import com.android.tools.smali.dexlib2.util.MethodUtil @Patch( dependencies = [ @@ -46,6 +53,7 @@ import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter @Suppress("MemberVisibilityCanBePrivate") object VideoInformationPatch : BytecodePatch( setOf( + MdxPlayerDirectorSetVideoStageFingerprint, PlayerControllerSetTimeReferenceFingerprint, PlaybackSpeedParentFingerprint, SeekBarConstructorFingerprint, @@ -57,6 +65,23 @@ object VideoInformationPatch : BytecodePatch( private const val INTEGRATIONS_CLASS_DESCRIPTOR = "$SHARED_PATH/VideoInformation;" + /** + * Used in [VideoEndFingerprint] and [MdxPlayerDirectorSetVideoStageFingerprint]. + * Since both classes are inherited from the same class, + * [VideoEndFingerprint] and [MdxPlayerDirectorSetVideoStageFingerprint] always have the same [seekSourceEnumType] and [seekSourceMethodName]. + */ + private var seekSourceEnumType = "" + private var seekSourceMethodName = "" + + private lateinit var videoInformationMutableClass: MutableClass + private lateinit var context: BytecodeContext + + private lateinit var playerConstructorMethod: MutableMethod + private var playerConstructorInsertIndex = -1 + + private lateinit var mdxConstructorMethod: MutableMethod + private var mdxConstructorInsertIndex = -1 + private lateinit var videoTimeConstructorMethod: MutableMethod private var videoTimeConstructorInsertIndex = 2 @@ -64,54 +89,107 @@ object VideoInformationPatch : BytecodePatch( lateinit var rectangleFieldName: String internal lateinit var playbackSpeedResult: MethodFingerprintResult + private fun addSeekInterfaceMethods( + result: MethodFingerprintResult, + seekMethodName: String, + methodName: String, + fieldName: String + ) { + result.mutableMethod.apply { + result.mutableClass.methods.add( + ImmutableMethod( + definingClass, + "seekTo", + listOf(ImmutableMethodParameter("J", annotations, "time")), + "Z", + AccessFlags.PUBLIC or AccessFlags.FINAL, + annotations, + null, + ImmutableMethodImplementation( + 4, """ + # first enum (field a) is SEEK_SOURCE_UNKNOWN + sget-object v0, $seekSourceEnumType->a:$seekSourceEnumType + invoke-virtual {p0, p1, p2, v0}, ${definingClass}->$seekMethodName(J$seekSourceEnumType)Z + move-result p1 + return p1 + """.toInstructions(), + null, + null + ) + ).toMutable() + ) + + val smaliInstructions = + """ + if-eqz v0, :ignore + invoke-virtual {v0, p0, p1}, $definingClass->seekTo(J)Z + move-result v0 + return v0 + :ignore + const/4 v0, 0x0 + return v0 + """ + + videoInformationMutableClass.addFieldAndInstructions( + context, + methodName, + fieldName, + definingClass, + smaliInstructions, + true + ) + } + } + override fun execute(context: BytecodeContext) { - val videoInformationMutableClass = + this.context = context + videoInformationMutableClass = context.findClass(INTEGRATIONS_CLASS_DESCRIPTOR)!!.mutableClass VideoEndFingerprint.resultOrThrow().let { it.mutableMethod.apply { - val seekSourceEnumType = parameterTypes[1].toString() - - it.mutableClass.methods.add( - ImmutableMethod( - definingClass, - "seekTo", - listOf(ImmutableMethodParameter("J", annotations, "time")), - "Z", - AccessFlags.PUBLIC or AccessFlags.FINAL, - annotations, - null, - ImmutableMethodImplementation( - 4, """ - sget-object v0, $seekSourceEnumType->a:$seekSourceEnumType - invoke-virtual {p0, p1, p2, v0}, ${definingClass}->${name}(J$seekSourceEnumType)Z - move-result p1 - return p1 - """.toInstructions(), - null, - null - ) - ).toMutable() - ) + playerConstructorMethod = + it.mutableClass.methods.first { method -> MethodUtil.isConstructor(method) } - val smaliInstructions = - """ - if-eqz v0, :ignore - invoke-virtual {v0, p0, p1}, $definingClass->seekTo(J)Z - move-result v0 - return v0 - :ignore - const/4 v0, 0x0 - return v0 - """ + playerConstructorInsertIndex = + playerConstructorMethod.indexOfFirstInstructionOrThrow { + opcode == Opcode.INVOKE_DIRECT && getReference()?.name == "" + } + 1 + + // hook the player controller for use through integrations + onCreateHook(INTEGRATIONS_CLASS_DESCRIPTOR, "initialize") + + seekSourceEnumType = parameterTypes[1].toString() + seekSourceMethodName = name - videoInformationMutableClass.addFieldAndInstructions( - context, + // Create integrations interface methods. + addSeekInterfaceMethods( + it, + seekSourceMethodName, "overrideVideoTime", - "videoInformationClass", - definingClass, - smaliInstructions, - true + "videoInformationClass" + ) + } + } + + MdxPlayerDirectorSetVideoStageFingerprint.resultOrThrow().let { + it.mutableMethod.apply { + mdxConstructorMethod = + it.mutableClass.methods.first { method -> MethodUtil.isConstructor(method) } + + mdxConstructorInsertIndex = mdxConstructorMethod.indexOfFirstInstructionOrThrow { + opcode == Opcode.INVOKE_DIRECT && getReference()?.name == "" + } + 1 + + // hook the MDX director for use through integrations + onCreateHookMdx(INTEGRATIONS_CLASS_DESCRIPTOR, "initializeMdx") + + // Create integrations interface methods. + addSeekInterfaceMethods( + it, + seekSourceMethodName, + "overrideMDXVideoTime", + "videoInformationMDXClass" ) } } @@ -246,6 +324,33 @@ object VideoInformationPatch : BytecodePatch( private fun MutableMethod.insertTimeHook(insertIndex: Int, descriptor: String) = insert(insertIndex, "p1, p2", descriptor) + /** + * Hook the player controller. Called when a video is opened or the current video is changed. + * + * Note: This hook is called very early and is called before the video id, video time, video length, + * and many other data fields are set. + * + * @param targetMethodClass The descriptor for the class to invoke when the player controller is created. + * @param targetMethodName The name of the static method to invoke when the player controller is created. + */ + internal fun onCreateHook(targetMethodClass: String, targetMethodName: String) = + playerConstructorMethod.addInstruction( + playerConstructorInsertIndex++, + "invoke-static { }, $targetMethodClass->$targetMethodName()V" + ) + + /** + * Hook the MDX player director. Called when playing videos while casting to a big screen device. + * + * @param targetMethodClass The descriptor for the class to invoke when the player controller is created. + * @param targetMethodName The name of the static method to invoke when the player controller is created. + */ + internal fun onCreateHookMdx(targetMethodClass: String, targetMethodName: String) = + mdxConstructorMethod.addInstruction( + mdxConstructorInsertIndex++, + "invoke-static { }, $targetMethodClass->$targetMethodName()V" + ) + /** * Hook the video time. * The hook is usually called once per second. diff --git a/src/main/kotlin/app/revanced/patches/shared/captions/BaseAutoCaptionsPatch.kt b/src/main/kotlin/app/revanced/patches/shared/captions/BaseAutoCaptionsPatch.kt deleted file mode 100644 index cd819bf5f..000000000 --- a/src/main/kotlin/app/revanced/patches/shared/captions/BaseAutoCaptionsPatch.kt +++ /dev/null @@ -1,65 +0,0 @@ -package app.revanced.patches.shared.captions - -import app.revanced.patcher.data.BytecodeContext -import app.revanced.patcher.extensions.InstructionExtensions.addInstructions -import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels -import app.revanced.patcher.extensions.InstructionExtensions.getInstruction -import app.revanced.patcher.patch.BytecodePatch -import app.revanced.patcher.util.smali.ExternalLabel -import app.revanced.patches.shared.captions.fingerprints.SubtitleButtonControllerFingerprint -import app.revanced.patches.shared.captions.fingerprints.SubtitleTrackFingerprint -import app.revanced.patches.shared.fingerprints.StartVideoInformerFingerprint -import app.revanced.util.resultOrThrow -import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction - -abstract class BaseAutoCaptionsPatch( - private val classDescriptor: String, - private val captionsButtonStatus: Boolean -) : BytecodePatch( - setOf( - StartVideoInformerFingerprint, - SubtitleButtonControllerFingerprint, - SubtitleTrackFingerprint - ) -) { - override fun execute(context: BytecodeContext) { - - SubtitleTrackFingerprint.resultOrThrow().mutableMethod.apply { - if (captionsButtonStatus) { - addInstructionsWithLabels( - 0, """ - invoke-static {}, $classDescriptor->disableAutoCaptions()Z - move-result v0 - if-eqz v0, :disabled - const/4 v0, 0x1 - return v0 - """, ExternalLabel("disabled", getInstruction(0)) - ) - } else { - val index = implementation!!.instructions.lastIndex - val register = getInstruction(index).registerA - - addInstructions( - index, """ - invoke-static {v$register}, $classDescriptor->disableAutoCaptions(Z)Z - move-result v$register - """ - ) - } - } - - if (!captionsButtonStatus) return - - mapOf( - StartVideoInformerFingerprint to 0, - SubtitleButtonControllerFingerprint to 1 - ).forEach { (fingerprint, enabled) -> - fingerprint.resultOrThrow().mutableMethod.addInstructions( - 0, """ - const/4 v0, 0x$enabled - invoke-static {v0}, $classDescriptor->setCaptionsButtonStatus(Z)V - """ - ) - } - } -} \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/shared/captions/fingerprints/SubtitleButtonControllerFingerprint.kt b/src/main/kotlin/app/revanced/patches/shared/captions/fingerprints/SubtitleButtonControllerFingerprint.kt deleted file mode 100644 index 4041509b5..000000000 --- a/src/main/kotlin/app/revanced/patches/shared/captions/fingerprints/SubtitleButtonControllerFingerprint.kt +++ /dev/null @@ -1,23 +0,0 @@ -package app.revanced.patches.shared.captions.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode - -internal object SubtitleButtonControllerFingerprint : MethodFingerprint( - returnType = "V", - accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf("Lcom/google/android/libraries/youtube/player/subtitles/model/SubtitleTrack;"), - opcodes = listOf( - Opcode.IGET_OBJECT, - Opcode.IF_NEZ, - Opcode.RETURN_VOID, - Opcode.IGET_BOOLEAN, - Opcode.CONST_4, - Opcode.IF_NEZ, - Opcode.CONST, - Opcode.INVOKE_VIRTUAL, - Opcode.IGET_OBJECT, - ) -) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/MdxPlayerDirectorSetVideoStageFingerprint.kt b/src/main/kotlin/app/revanced/patches/shared/fingerprints/MdxPlayerDirectorSetVideoStageFingerprint.kt similarity index 78% rename from src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/MdxPlayerDirectorSetVideoStageFingerprint.kt rename to src/main/kotlin/app/revanced/patches/shared/fingerprints/MdxPlayerDirectorSetVideoStageFingerprint.kt index 800e579ef..5ffa26abe 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/MdxPlayerDirectorSetVideoStageFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/shared/fingerprints/MdxPlayerDirectorSetVideoStageFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.video.information.fingerprints +package app.revanced.patches.shared.fingerprints import app.revanced.patcher.fingerprint.MethodFingerprint diff --git a/src/main/kotlin/app/revanced/patches/shared/captions/fingerprints/SubtitleTrackFingerprint.kt b/src/main/kotlin/app/revanced/patches/shared/fingerprints/SubtitleTrackFingerprint.kt similarity index 86% rename from src/main/kotlin/app/revanced/patches/shared/captions/fingerprints/SubtitleTrackFingerprint.kt rename to src/main/kotlin/app/revanced/patches/shared/fingerprints/SubtitleTrackFingerprint.kt index b1a6012a7..b97457386 100644 --- a/src/main/kotlin/app/revanced/patches/shared/captions/fingerprints/SubtitleTrackFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/shared/fingerprints/SubtitleTrackFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.shared.captions.fingerprints +package app.revanced.patches.shared.fingerprints import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.MethodFingerprint diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/AutoCaptionsBytecodePatch.kt b/src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/AutoCaptionsBytecodePatch.kt deleted file mode 100644 index 914f4db85..000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/AutoCaptionsBytecodePatch.kt +++ /dev/null @@ -1,6 +0,0 @@ -package app.revanced.patches.youtube.general.autocaptions - -import app.revanced.patches.shared.captions.BaseAutoCaptionsPatch -import app.revanced.patches.youtube.utils.integrations.Constants.GENERAL_CLASS_DESCRIPTOR - -object AutoCaptionsBytecodePatch : BaseAutoCaptionsPatch(GENERAL_CLASS_DESCRIPTOR, true) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/AutoCaptionsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/AutoCaptionsPatch.kt index 52a9b95a0..4ed2f9a3d 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/AutoCaptionsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/AutoCaptionsPatch.kt @@ -1,24 +1,57 @@ package app.revanced.patches.youtube.general.autocaptions import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction +import app.revanced.patcher.util.smali.ExternalLabel +import app.revanced.patches.shared.fingerprints.SubtitleTrackFingerprint +import app.revanced.patches.youtube.general.autocaptions.fingerprints.StoryboardRendererDecoderRecommendedLevelFingerprint import app.revanced.patches.youtube.utils.compatibility.Constants.COMPATIBLE_PACKAGE -import app.revanced.patches.youtube.utils.playertype.PlayerTypeHookPatch +import app.revanced.patches.youtube.utils.fingerprints.StartVideoInformerFingerprint +import app.revanced.patches.youtube.utils.integrations.Constants.GENERAL_CLASS_DESCRIPTOR import app.revanced.patches.youtube.utils.settings.SettingsPatch import app.revanced.util.patch.BaseBytecodePatch +import app.revanced.util.resultOrThrow @Suppress("unused") object AutoCaptionsPatch : BaseBytecodePatch( name = "Disable auto captions", description = "Adds an option to disable captions from being automatically enabled.", - dependencies = setOf( - AutoCaptionsBytecodePatch::class, - PlayerTypeHookPatch::class, - SettingsPatch::class - ), - compatiblePackages = COMPATIBLE_PACKAGE + dependencies = setOf(SettingsPatch::class), + compatiblePackages = COMPATIBLE_PACKAGE, + fingerprints = setOf( + SubtitleTrackFingerprint, + StartVideoInformerFingerprint, + StoryboardRendererDecoderRecommendedLevelFingerprint, + ) ) { override fun execute(context: BytecodeContext) { + SubtitleTrackFingerprint.resultOrThrow().mutableMethod.apply { + addInstructionsWithLabels( + 0, """ + invoke-static {}, $GENERAL_CLASS_DESCRIPTOR->disableAutoCaptions()Z + move-result v0 + if-eqz v0, :disabled + const/4 v0, 0x1 + return v0 + """, ExternalLabel("disabled", getInstruction(0)) + ) + } + + mapOf( + StartVideoInformerFingerprint to 0, + StoryboardRendererDecoderRecommendedLevelFingerprint to 1 + ).forEach { (fingerprint, enabled) -> + fingerprint.resultOrThrow().mutableMethod.addInstructions( + 0, """ + const/4 v0, 0x$enabled + invoke-static {v0}, $GENERAL_CLASS_DESCRIPTOR->setCaptionsButtonStatus(Z)V + """ + ) + } + /** * Add settings */ diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/fingerprints/StoryboardRendererDecoderRecommendedLevelFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/fingerprints/StoryboardRendererDecoderRecommendedLevelFingerprint.kt new file mode 100644 index 000000000..c20b3d2b9 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/fingerprints/StoryboardRendererDecoderRecommendedLevelFingerprint.kt @@ -0,0 +1,12 @@ +package app.revanced.patches.youtube.general.autocaptions.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.MethodFingerprint +import com.android.tools.smali.dexlib2.AccessFlags + +internal object StoryboardRendererDecoderRecommendedLevelFingerprint : MethodFingerprint( + returnType = "V", + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, + parameters = listOf("Lcom/google/android/libraries/youtube/innertube/model/player/PlayerResponseModel;"), + strings = listOf("#-1#") +) diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/visual/VisualPreferencesIconsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/visual/VisualPreferencesIconsPatch.kt index 8878fadbd..3e3f47fe9 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/visual/VisualPreferencesIconsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/visual/VisualPreferencesIconsPatch.kt @@ -74,6 +74,7 @@ object VisualPreferencesIconsPatch : BaseResourcePatch( "revanced_disable_hdr_video" to "M 650.615 587.692 L 650.615 372.308 L 772.539 372.308 Q 796.308 372.308 812 388 Q 827.692 403.692 827.692 427.461 L 827.692 452.308 Q 827.692 467.769 816.692 483.231 Q 805.692 498.692 784.077 503.769 L 819.846 587.692 L 787.769 587.692 L 754.462 507.462 L 680.154 507.462 L 680.154 587.692 L 650.615 587.692 Z M 680.154 477.154 L 773.539 477.154 Q 782.769 477.154 790.462 469.462 Q 798.154 461.769 798.154 452.539 L 798.154 426.461 Q 798.154 417.231 790.462 409.538 Q 782.769 401.846 773.539 401.846 L 680.154 401.846 L 680.154 477.154 Z M 132.308 587.692 L 132.308 372.308 L 161.846 372.308 L 161.846 456.692 L 279.846 456.692 L 279.846 372.308 L 309.385 372.308 L 309.385 587.692 L 279.846 587.692 L 279.846 486.231 L 161.846 486.231 L 161.846 587.692 L 132.308 587.692 Z M 391.077 587.692 L 391.077 372.308 L 513.769 372.308 Q 537.539 372.308 553.231 388 Q 568.923 403.692 568.923 427.461 L 568.923 532.539 Q 568.923 556.308 553.231 572 Q 537.539 587.692 513.769 587.692 L 391.077 587.692 Z M 421.385 558.154 L 514 558.154 Q 523.231 558.154 530.923 550.462 Q 538.615 542.769 538.615 533.539 L 538.615 426.461 Q 538.615 417.231 530.923 409.538 Q 523.231 401.846 514 401.846 L 421.385 401.846 L 421.385 558.154 Z", "revanced_disable_quic_protocol" to "M 701.463 587.69 C 693.203 587.69 686.496 585.023 681.343 579.69 C 676.19 574.357 673.613 567.743 673.613 559.85 L 673.613 400.15 C 673.613 392.257 676.19 385.643 681.343 380.31 C 686.496 374.977 693.203 372.31 701.463 372.31 L 776.773 372.31 C 784.666 372.31 791.28 374.977 796.613 380.31 C 801.946 385.643 804.613 392.267 804.613 400.18 L 804.613 408.92 C 804.613 413.187 803.21 416.717 800.403 419.51 C 797.59 422.297 794.036 423.69 789.743 423.69 C 785.443 423.69 781.923 422.297 779.183 419.51 C 776.443 416.717 775.073 413.187 775.073 408.92 L 775.073 401.85 L 703.153 401.85 L 703.153 558.15 L 775.073 558.15 L 775.073 552.54 C 775.073 547.62 776.48 543.8 779.293 541.08 C 782.1 538.36 785.653 537 789.953 537 C 794.253 537 797.77 538.36 800.503 541.08 C 803.243 543.8 804.613 547.537 804.613 552.29 L 804.613 559.85 C 804.613 567.743 801.946 574.357 796.613 579.69 C 791.28 585.023 784.666 587.69 776.773 587.69 L 701.463 587.69 Z M 198.467 556.92 C 195.387 556.92 192.567 555.64 190.007 553.08 C 187.44 550.513 186.157 547.693 186.157 544.62 L 186.157 412.46 C 186.157 409.387 187.44 406.567 190.007 404 C 192.567 401.44 195.387 400.16 198.467 400.16 L 287.697 400.16 C 290.77 400.16 293.59 401.44 296.157 404 C 298.724 406.567 300.007 409.387 300.007 412.46 L 300.007 544.62 C 300.007 547.693 298.724 550.513 296.157 553.08 C 293.59 555.64 290.77 556.92 287.697 556.92 L 198.467 556.92 Z M 228.077 587.69 L 228.077 634.62 C 228.077 638.92 229.5 642.493 232.347 645.34 C 235.187 648.193 238.75 649.62 243.037 649.62 C 247.324 649.62 251.03 648.193 254.157 645.34 C 257.284 642.493 258.847 638.92 258.847 634.62 L 258.847 587.69 L 290.617 587.69 C 301.637 587.69 311.084 583.777 318.957 575.95 C 326.83 568.117 330.767 558.723 330.767 547.77 L 330.767 409.54 C 330.767 398.52 326.83 389.073 318.957 381.2 C 311.084 373.327 301.637 369.39 290.617 369.39 L 198.467 369.39 C 187.594 369.39 177.694 373.327 168.767 381.2 C 159.847 389.073 155.387 398.52 155.387 409.54 L 155.387 547.77 C 155.387 558.723 159.847 568.117 168.767 575.95 C 177.694 583.777 187.594 587.69 198.467 587.69 L 228.077 587.69 Z M 603.383 587.69 C 607.803 587.69 611.436 586.217 614.283 583.27 C 617.13 580.323 618.553 576.67 618.553 572.31 L 618.553 384.77 C 618.553 380.41 617.056 376.757 614.063 373.81 C 611.076 370.863 607.373 369.39 602.953 369.39 C 598.533 369.39 594.9 370.863 592.053 373.81 C 589.206 376.757 587.783 380.41 587.783 384.77 L 587.783 572.31 C 587.783 576.67 589.276 580.323 592.263 583.27 C 595.256 586.217 598.963 587.69 603.383 587.69 Z M 422.849 587.69 C 412.898 587.474 403.322 583.483 396.251 576.726 C 389.491 569.651 385.598 560.108 385.386 550.164 L 385.391 383.745 C 385.619 380.204 387.416 376.098 389.659 373.551 L 389.726 373.476 L 389.764 373.442 L 389.807 373.403 C 392.36 371.18 396.379 369.39 400.022 369.39 C 403.719 369.39 407.925 371.442 410.4 373.67 L 410.485 373.747 L 410.525 373.794 L 410.558 373.833 C 412.726 376.416 414.251 380.469 414.448 383.936 L 414.445 550.314 C 414.278 552.931 414.659 554.287 416.053 555.678 L 416.085 555.646 L 416.166 555.728 L 416.232 555.661 L 416.841 556.398 L 417.501 557.006 L 417.441 557.069 C 418.83 558.472 420.242 558.785 422.922 558.628 L 497.335 558.631 C 500.001 558.8 501.355 558.41 502.769 556.954 L 502.705 556.883 L 503.363 556.288 L 503.964 555.57 L 504.028 555.635 L 504.358 555.309 C 505.529 554.017 505.788 552.68 505.65 550.154 L 505.655 383.746 C 505.882 380.205 507.682 376.094 509.929 373.545 L 510.026 373.447 L 510.072 373.405 C 512.617 371.198 516.639 369.39 520.288 369.39 C 523.981 369.39 528.187 371.438 530.663 373.67 L 530.753 373.75 L 530.797 373.803 L 530.82 373.831 C 532.992 376.417 534.516 380.468 534.711 383.936 L 534.711 550.227 C 534.495 560.178 530.505 569.753 523.747 576.825 C 516.67 583.587 507.131 587.478 497.184 587.69 L 422.849 587.69 Z", "revanced_enable_debug_logging" to "M 243.08 447.46 L 243.08 413.51 Q 243.08 352.38 270.69 302.62 Q 298.31 252.85 344.62 220.23 L 281.15 156.77 L 311 126.15 L 382.81 197.85 Q 404.16 187.38 429.23 182.04 Q 454.31 176.69 479.84 176.69 Q 505.38 176.69 530.65 182.04 Q 555.92 187.38 577.31 197.85 L 649 126.15 L 678.85 156.77 L 615.38 220.23 Q 661.69 252.85 689.31 302.67 Q 716.92 352.5 716.92 413.55 L 716.92 447.46 L 243.08 447.46 Z M 581.54 379.77 Q 595.92 379.77 605.65 369.65 Q 615.38 359.54 615.38 345.92 Q 615.38 331.54 605.65 321.81 Q 595.92 312.08 581.54 312.08 Q 567.15 312.08 557.42 321.81 Q 547.69 331.54 547.69 345.92 Q 547.69 359.54 557.42 369.65 Q 567.15 379.77 581.54 379.77 Z M 378.46 379.77 Q 392.85 379.77 402.58 369.65 Q 412.31 359.54 412.31 345.92 Q 412.31 331.54 402.58 321.81 Q 392.85 312.08 378.46 312.08 Q 364.08 312.08 354.35 321.81 Q 344.62 331.54 344.62 345.92 Q 344.62 359.54 354.35 369.65 Q 364.08 379.77 378.46 379.77 Z M 480 853.85 Q 381 853.85 312.04 784.88 Q 243.08 715.92 243.08 616.92 L 243.08 481.31 L 716.92 481.31 L 716.92 617.1 Q 716.92 716.23 647.96 785.04 Q 579 853.85 480 853.85 Z", + "revanced_disable_default_playback_speed_music" to "M 388.351 504.732 C 389.685 483.86 397.531 468.552 411.89 458.809 L 706.121 252.116 L 499.351 546.501 C 490.121 560.501 474.851 568.257 453.543 569.77 C 432.236 571.283 415.71 566.04 403.966 554.04 C 392.223 542.039 387.018 525.603 388.351 504.732 Z M 443.79 133.952 C 480.252 133.952 514.791 138.836 547.406 148.605 C 580.022 158.374 612.509 174.157 644.867 195.952 L 619.021 216.029 C 592.098 198.593 563.521 185.683 533.29 177.298 C 503.06 168.913 473.29 164.721 443.982 164.721 C 352.756 164.721 275.25 196.934 211.466 261.36 C 147.682 325.786 115.79 403.821 115.79 495.465 C 115.79 524.405 119.701 553.311 127.521 582.183 C 135.342 611.054 146.731 637.977 161.688 662.952 L 543.819 662.952 C 548.08 674.91 555.02 685.448 563.853 693.721 L 163.175 693.721 C 157.413 693.721 151.742 692.042 146.161 688.683 C 140.581 685.324 136.149 680.618 132.867 674.567 C 119.637 650.772 108.355 624.298 99.021 595.144 C 89.688 565.99 85.021 532.746 85.021 495.413 C 85.021 446.234 94.347 399.742 112.999 355.939 C 131.651 312.136 157.074 273.828 189.268 241.016 C 221.462 208.204 259.478 182.157 303.316 162.875 C 347.154 143.593 393.979 133.952 443.79 133.952 Z M 774.467 412.847 C 766.903 381.796 754.249 353.629 736.505 328.347 L 757.044 302.501 C 779.3 338.296 794.582 371.565 802.89 402.308 C 802.963 402.579 803.036 402.851 803.109 403.123 C 792.96 406.195 783.516 410.223 774.998 415.049 C 774.823 414.316 774.646 413.582 774.467 412.847 Z M 762.978 475.278 L 874.978 475.278 L 874.978 527.578 L 793.518 527.578 L 793.518 743.348 C 793.518 767.548 785.788 787.381 770.328 802.848 C 754.868 818.314 735.175 826.048 711.248 826.048 C 687.322 826.048 667.615 818.318 652.128 802.858 C 636.642 787.398 628.898 767.704 628.898 743.778 C 628.898 719.851 636.632 700.144 652.098 684.658 C 667.565 669.171 687.398 661.428 711.598 661.428 C 722.418 661.428 732.238 663.018 741.058 666.198 C 749.878 669.378 757.185 674.148 762.978 680.508 L 762.978 475.278 Z", "revanced_enable_default_playback_speed_shorts" to "M 359.453 489.454 C 360.787 468.582 368.633 453.274 382.992 443.531 L 677.223 236.838 L 470.453 531.223 C 461.223 545.223 445.953 552.979 424.645 554.492 C 403.338 556.005 386.812 550.762 375.068 538.762 C 363.325 526.761 358.12 510.325 359.453 489.454 Z M 745.569 397.569 C 738.005 366.518 725.351 338.351 707.607 313.069 L 728.146 287.223 C 750.402 323.018 765.684 356.287 773.992 387.03 C 774.065 387.301 774.138 387.573 774.211 387.845 C 764.062 390.917 754.618 394.945 746.1 399.771 C 745.925 399.038 745.748 398.304 745.569 397.569 Z M 414.892 118.674 C 451.354 118.674 485.893 123.558 518.508 133.327 C 551.124 143.096 583.611 158.879 615.969 180.674 L 590.123 200.751 C 563.2 183.315 534.623 170.405 504.392 162.02 C 474.162 153.635 444.392 149.443 415.084 149.443 C 323.858 149.443 246.352 181.656 182.568 246.082 C 118.784 310.508 86.892 388.543 86.892 480.187 C 86.892 509.127 90.803 538.033 98.623 566.905 C 106.444 595.776 117.833 622.699 132.79 647.674 L 514.921 647.674 C 519.182 659.632 526.122 670.17 534.955 678.443 L 134.277 678.443 C 128.515 678.443 122.844 676.764 117.263 673.405 C 111.683 670.046 107.251 665.34 103.969 659.289 C 90.739 635.494 79.457 609.02 70.123 579.866 C 60.79 550.712 56.123 517.468 56.123 480.135 C 56.123 430.956 65.449 384.464 84.101 340.661 C 102.753 296.858 128.176 258.55 160.37 225.738 C 192.564 192.926 230.58 166.879 274.418 147.597 C 318.256 128.315 365.081 118.674 414.892 118.674 Z M 682.995 564.381 L 682.995 696.604 L 800.874 630.492 L 682.995 564.381 Z M 612.907 683.92 L 612.908 683.919 C 612.907 683.919 612.907 683.92 612.907 683.92 C 612.909 683.921 612.911 683.921 612.913 683.922 L 612.907 683.92 C 593.933 697.159 580.671 713.919 573.324 736.248 C 566.428 759.47 568.87 783.009 580.461 802.873 C 592.731 822.323 612.392 835.486 636.161 840.05 C 659.897 843.888 684.498 839.032 706.555 825.966 L 855.105 735.796 C 876.874 722.259 892.527 702.812 900.057 679.937 C 906.952 656.708 904.476 633.206 892.932 613.332 C 881.132 594.701 864.919 583.403 844.452 577.804 C 844.45 577.803 844.448 577.803 844.447 577.802 L 844.452 577.804 C 863.431 564.568 876.721 547.808 884.043 525.458 C 890.98 502.224 888.454 478.733 876.911 458.869 C 864.615 439.462 844.975 426.242 821.2 421.672 C 797.466 417.837 772.863 422.689 750.805 435.758 L 602.256 525.926 C 580.488 539.463 564.832 558.911 557.304 581.785 C 550.409 605.015 552.884 628.516 564.428 648.39 C 576.228 667.022 592.442 678.321 612.907 683.92 Z M 643.932 657.897 C 643.129 657.817 634.043 657.083 627.007 655.824 C 610.048 653.202 599.058 645.775 591.149 631.98 C 582.525 618.598 581.333 605.514 586.834 589.291 C 591.749 572.69 601.41 560.899 617.679 551.326 L 766.238 461.145 C 782.227 451.135 797.371 448.141 814.36 451.442 C 831.296 454.03 841.853 461.395 850.093 475.129 C 858.476 488.772 860.01 501.801 854.506 517.969 C 849.6 534.558 839.473 546.631 823.24 556.21 L 801 570.414 L 801.019 570.353 L 793.393 581.429 L 792.678 585.747 L 792.601 586.92 L 792.62 587.034 L 793.009 589.379 C 793.254 590.83 793.656 592.328 794.11 593.48 L 794.11 593.637 L 794.279 593.889 L 794.449 594.144 C 797.503 598.742 805.139 603.076 812.123 603.918 C 814.478 604.013 822.365 604.459 830.355 605.9 C 847.321 608.516 858.303 615.948 866.211 629.745 C 874.836 643.125 876.027 656.207 870.526 672.432 C 865.61 689.025 855.951 700.823 839.682 710.396 L 691.121 800.577 C 675.134 810.587 659.994 813.584 643.005 810.282 C 626.034 807.668 615.079 800.237 607.17 786.441 C 598.544 773.061 597.353 759.972 602.855 743.754 C 607.752 727.171 618.089 714.964 634.311 705.377 C 635.692 704.407 651.771 693.118 653.826 691.735 C 658.863 688.131 664.096 681.167 665.292 675.364 L 665.328 675.185 L 665.34 673.099 L 665.316 672.991 L 665.297 672.901 C 664.995 671.507 664.363 669.906 663.532 668.373 L 658.182 662.064 L 652.56 659.706 C 650.022 658.928 647.023 658.281 643.932 657.897 Z", "revanced_enable_external_browser" to "M 675.38 697.62 L 675.38 806 Q 675.38 812.6 670.94 816.99 Q 666.5 821.38 659.82 821.38 Q 653.15 821.38 648.88 816.99 Q 644.62 812.6 644.62 806 L 644.62 667.69 Q 644.62 658.27 651.44 651.44 Q 658.27 644.62 667.69 644.62 L 806 644.62 Q 812.6 644.62 816.99 649.06 Q 821.38 653.5 821.38 660.18 Q 821.38 666.85 816.99 671.12 Q 812.6 675.38 806 675.38 L 696.62 675.38 L 829 807.77 Q 833.38 812.15 833.38 818.54 Q 833.38 824.93 829.39 829.16 Q 824.62 834.15 817.92 833.77 Q 811.22 833.38 806.77 829 L 675.38 697.62 Z M 480 840 Q 405.46 840 339.77 811.58 Q 274.08 783.15 225.46 734.54 Q 176.85 685.92 148.42 620.48 Q 120 555.04 120 481.23 Q 120 405.43 148.42 340.07 Q 176.85 274.72 225.46 225.78 Q 274.08 176.85 339.77 148.42 Q 405.46 120 480 120 Q 554.54 120 620.23 148.42 Q 685.92 176.85 734.54 225.78 Q 783.15 274.72 811.58 340.07 Q 840 405.43 840 481.23 Q 840 493.69 839 506.65 Q 838 519.62 836 532.08 Q 835.54 539.15 829.77 544.19 Q 824 549.23 817.93 549.23 Q 811.85 549.23 807.81 545.12 Q 803.77 541 805 534.38 Q 807 521.15 808.12 507.42 Q 809.23 493.69 809.23 481.23 Q 809.23 456.17 805.52 431.12 Q 801.8 406.06 794.37 381.77 L 621.85 381.77 Q 626.15 406.31 628.15 431.28 Q 630.15 456.26 630.15 481.23 Q 630.15 493.69 629.15 506.65 Q 628.15 519.62 627.92 532.85 Q 626.92 538.92 622.28 544.08 Q 617.63 549.23 611.43 549.23 Q 604.46 549.23 600.31 545.23 Q 596.15 541.23 597.15 534.62 Q 598.38 521.38 598.88 507.54 Q 599.38 493.69 599.38 481.23 Q 599.38 456.17 597.5 431.12 Q 595.62 406.06 591.08 381.77 L 369.58 381.77 Q 365.38 406.31 363.12 431.12 Q 360.85 455.92 360.85 480.73 Q 360.85 505.54 363.12 529.85 Q 365.38 554.15 369.15 578.46 L 543.08 578.46 Q 549.67 578.46 554.07 582.91 Q 558.46 587.35 558.46 594.02 Q 558.46 600.69 554.07 604.96 Q 549.67 609.23 543.08 609.23 L 375.54 609.23 Q 391.08 665.31 414.54 717.85 Q 438 770.38 480 810.77 Q 494.56 810.77 507.97 809.27 Q 521.38 807.77 534.85 805.77 Q 540.46 804.54 544.85 808.69 Q 549.23 812.85 549.23 818.46 Q 549.23 824.91 545.08 829.73 Q 540.92 834.54 534.08 835.77 Q 520.62 837.77 507.42 838.88 Q 494.23 840 480 840 Z M 165.63 578.46 L 338.15 578.46 Q 334.12 554.15 332.1 529.85 Q 330.08 505.54 330.08 481.23 Q 330.08 456.17 331.85 431.12 Q 333.62 406.06 337.92 381.77 L 165.56 381.77 Q 158.16 406.11 154.47 431.22 Q 150.77 456.32 150.77 481.43 Q 150.77 505.77 154.48 530.13 Q 158.2 554.49 165.63 578.46 Z M 437.08 808.23 Q 403.38 764.15 380.12 713.77 Q 356.85 663.38 343.77 609.23 L 175.08 609.23 Q 211.15 689.31 280.69 742.46 Q 350.23 795.62 437.08 808.23 Z M 175.08 351 L 343.13 351 Q 356.08 296.08 378.58 245.19 Q 401.08 194.31 438.08 151.54 Q 350.92 165.54 281.65 218.35 Q 212.38 271.15 175.08 351 Z M 375.54 351 L 584.69 351 Q 570.92 294.69 544.85 243.15 Q 518.77 191.62 480 148.77 Q 440.46 191.08 414.77 242.88 Q 389.08 294.69 375.54 351 Z M 617.03 351 L 784.92 351 Q 747.62 271.15 678.46 217.85 Q 609.31 164.54 522.92 151.77 Q 556.85 195.85 578.96 246.73 Q 601.08 297.62 617.03 351 Z", "revanced_enable_old_quality_layout" to "revanced_default_video_quality_wifi", diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/backgroundplayback/BackgroundPlaybackPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/backgroundplayback/BackgroundPlaybackPatch.kt index c4c72bc71..54e3870a9 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/backgroundplayback/BackgroundPlaybackPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/backgroundplayback/BackgroundPlaybackPatch.kt @@ -13,6 +13,7 @@ import app.revanced.patches.youtube.utils.compatibility.Constants.COMPATIBLE_PAC import app.revanced.patches.youtube.utils.integrations.Constants.MISC_PATH import app.revanced.patches.youtube.utils.playertype.PlayerTypeHookPatch import app.revanced.patches.youtube.utils.settings.SettingsPatch +import app.revanced.patches.youtube.video.information.VideoInformationPatch import app.revanced.util.getWalkerMethod import app.revanced.util.patch.BaseBytecodePatch import app.revanced.util.resultOrThrow @@ -26,6 +27,7 @@ object BackgroundPlaybackPatch : BaseBytecodePatch( description = "Removes restrictions on background playback, including for music and kids videos.", dependencies = setOf( PlayerTypeHookPatch::class, + VideoInformationPatch::class, SettingsPatch::class ), compatiblePackages = COMPATIBLE_PACKAGE, diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/components/PlayerComponentsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/player/components/PlayerComponentsPatch.kt index cf863f8cc..c5ecd85d5 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/player/components/PlayerComponentsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/player/components/PlayerComponentsPatch.kt @@ -9,7 +9,6 @@ import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction import app.revanced.patcher.patch.PatchException import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod import app.revanced.patcher.util.smali.ExternalLabel -import app.revanced.patches.shared.fingerprints.StartVideoInformerFingerprint import app.revanced.patches.shared.litho.LithoFilterPatch import app.revanced.patches.youtube.player.components.fingerprints.CrowdfundingBoxFingerprint import app.revanced.patches.youtube.player.components.fingerprints.EngagementPanelControllerFingerprint @@ -34,6 +33,7 @@ import app.revanced.patches.youtube.player.components.fingerprints.WatermarkPare import app.revanced.patches.youtube.player.speedoverlay.SpeedOverlayPatch import app.revanced.patches.youtube.utils.compatibility.Constants.COMPATIBLE_PACKAGE import app.revanced.patches.youtube.utils.controlsoverlay.ControlsOverlayConfigPatch +import app.revanced.patches.youtube.utils.fingerprints.StartVideoInformerFingerprint import app.revanced.patches.youtube.utils.fingerprints.YouTubeControlsOverlayFingerprint import app.revanced.patches.youtube.utils.fix.suggestedvideoendscreen.SuggestedVideoEndScreenPatch import app.revanced.patches.youtube.utils.integrations.Constants.COMPONENTS_PATH @@ -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( diff --git a/src/main/kotlin/app/revanced/patches/shared/fingerprints/StartVideoInformerFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/StartVideoInformerFingerprint.kt similarity index 89% rename from src/main/kotlin/app/revanced/patches/shared/fingerprints/StartVideoInformerFingerprint.kt rename to src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/StartVideoInformerFingerprint.kt index dec566143..0609b6a3a 100644 --- a/src/main/kotlin/app/revanced/patches/shared/fingerprints/StartVideoInformerFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/StartVideoInformerFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.shared.fingerprints +package app.revanced.patches.youtube.utils.fingerprints import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.MethodFingerprint diff --git a/src/main/kotlin/app/revanced/patches/youtube/video/information/VideoInformationPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/video/information/VideoInformationPatch.kt index df1eaa5c1..414f8ef62 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/video/information/VideoInformationPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/video/information/VideoInformationPatch.kt @@ -14,13 +14,13 @@ import app.revanced.patcher.util.proxy.mutableTypes.MutableClass import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable import app.revanced.patcher.util.smali.toInstructions +import app.revanced.patches.shared.fingerprints.MdxPlayerDirectorSetVideoStageFingerprint import app.revanced.patches.youtube.utils.fingerprints.VideoEndFingerprint import app.revanced.patches.youtube.utils.integrations.Constants.SHARED_PATH import app.revanced.patches.youtube.utils.playertype.PlayerTypeHookPatch import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch import app.revanced.patches.youtube.video.information.fingerprints.ChannelIdFingerprint import app.revanced.patches.youtube.video.information.fingerprints.ChannelNameFingerprint -import app.revanced.patches.youtube.video.information.fingerprints.MdxPlayerDirectorSetVideoStageFingerprint import app.revanced.patches.youtube.video.information.fingerprints.OnPlaybackSpeedItemClickFingerprint import app.revanced.patches.youtube.video.information.fingerprints.PlaybackInitializationFingerprint import app.revanced.patches.youtube.video.information.fingerprints.PlaybackSpeedClassFingerprint @@ -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;" ) /** diff --git a/src/main/kotlin/app/revanced/patches/youtube/video/playback/VideoPlaybackPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/video/playback/VideoPlaybackPatch.kt index 4349c7db2..d532cf245 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/video/playback/VideoPlaybackPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/video/playback/VideoPlaybackPatch.kt @@ -176,6 +176,7 @@ object VideoPlaybackPatch : BaseBytecodePatch( } VideoInformationPatch.hookBackgroundPlay("$INTEGRATIONS_PLAYBACK_SPEED_CLASS_DESCRIPTOR->newVideoStarted(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JZ)V") + VideoIdPatch.hookPlayerResponseVideoId("$INTEGRATIONS_PLAYBACK_SPEED_CLASS_DESCRIPTOR->fetchPlaylistData(Ljava/lang/String;Z)V") context.updatePatchStatus(PATCH_STATUS_CLASS_DESCRIPTOR, "RememberPlaybackSpeed") diff --git a/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/PlayerResponseMethodHookPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/PlayerResponseMethodHookPatch.kt index f003075cc..68beae36b 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/PlayerResponseMethodHookPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/PlayerResponseMethodHookPatch.kt @@ -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() // 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( diff --git a/src/main/kotlin/app/revanced/util/BytecodeUtils.kt b/src/main/kotlin/app/revanced/util/BytecodeUtils.kt index e2c42f0ac..2c4f5d906 100644 --- a/src/main/kotlin/app/revanced/util/BytecodeUtils.kt +++ b/src/main/kotlin/app/revanced/util/BytecodeUtils.kt @@ -604,13 +604,35 @@ fun MutableMethod.getTargetIndexWithReferenceReversed(startIndex: Int, reference return -1 } -fun MethodFingerprintResult.getWalkerMethod(context: BytecodeContext, index: Int) = - mutableMethod.getWalkerMethod(context, index) +fun MethodFingerprintResult.getWalkerMethod(context: BytecodeContext, offset: Int) = + mutableMethod.getWalkerMethod(context, offset) -fun MutableMethod.getWalkerMethod(context: BytecodeContext, index: Int) = - context.toMethodWalker(this) - .nextMethod(index, true) - .getMethod() as MutableMethod +/** + * MethodWalker structural limitations cause incorrect class to be found + * + * MethodReference to find in YouTube 18.29.38: + * 'Lng;->d(Lou;)Z' + * + * Class found by MethodWalker in YouTube 18.29.38: + * 'Lcom/google/android/gms/maps/model/LatLng;' + * + * The reason this error occurs is because [BytecodeContext.findClass] checks whether className is included or not + * + * In ReVanced Patcher 19.3.1: + * fun findClass(className: String) = findClass { it.type.contains(className) } + * + * (Class 'Lcom/google/android/gms/maps/model/LatLng;' is returned because class 'Lcom/google/android/gms/maps/model/LatLng;' contains keyword 'Lng;') + * + * As a workaround, redefine MethodWalker here + */ +fun MutableMethod.getWalkerMethod(context: BytecodeContext, offset: Int): MutableMethod { + val newMethod = getInstruction(offset).reference as MethodReference + return context.findClass { classDef -> classDef.type == newMethod.definingClass } + ?.mutableClass + ?.methods + ?.first { method -> MethodUtil.methodSignaturesMatch(method, newMethod) } + ?: throw PatchException("This method can not be walked at offset $offset inside the method $name") +} fun MutableClass.addFieldAndInstructions( context: BytecodeContext, diff --git a/src/main/resources/music/settings/host/values/strings.xml b/src/main/resources/music/settings/host/values/strings.xml index 29546f502..7a2a5ae62 100644 --- a/src/main/resources/music/settings/host/values/strings.xml +++ b/src/main/resources/music/settings/host/values/strings.xml @@ -15,8 +15,6 @@ Tap on the continue button and disable battery optimizations." Enable cloud messaging to receive notifications. Open GmsCore GmsCore is not installed. Install it. - The domain to fetch images from.\nNote: Only enter the domain name, i.e., without the \"https\:\/\/\" prefix. - Alternative domain Replaces the domain that is blocked in some regions so that playlist thumbnails, channel avatars, etc. can be received. Bypass image region restrictions Change from in-app share sheet to system share sheet. @@ -228,6 +226,8 @@ If it is disabled, fullscreen ads are blocked. (there may be side effects)"Hide premium promotion popups Hides the premium renewal banner. Hide premium renewal banner + Hides the promotion alert banner. + Hide promotion alert banner Hides the Samples shelf in the feed. Hide Samples shelf List of settings menu names to filter, separated by new lines. @@ -307,7 +307,6 @@ Some features may not work properly in the old player layout." Dislikes are unavailable (%s). Shows a toast if the Return YouTube Dislike API is unavailable. Show a toast if API is unavailable - Hidden Removes tracking query parameters from URLs when sharing links. Sanitize sharing links About @@ -374,6 +373,4 @@ Some features may not work properly in the old player layout." Select the spoof app version target. Spoof app version target Spoof app version - Replaces the domain that is blocked in some regions so that playlist thumbnails, channel avatars, etc. can be received. - Use alternative domain for images diff --git a/src/main/resources/music/translations/bg-rBG/missing_strings.xml b/src/main/resources/music/translations/bg-rBG/missing_strings.xml index 49f85c9a0..af70286a6 100644 --- a/src/main/resources/music/translations/bg-rBG/missing_strings.xml +++ b/src/main/resources/music/translations/bg-rBG/missing_strings.xml @@ -1,317 +1,173 @@ - + - ReVanced Extended - Restart to load the layout normally - Refresh and restart - Account - Hide account menu - Hides account menu elements in the custom filter. - Account menu filter - List of account menu names to filter, separated by new lines. - Hide empty components - Hides empty components in the account menu. - Hides the handle in the account menu. - Hide terms container - Hides terms of service container. - Action Bar - Hide like and dislike buttons - Hides the like and dislike buttons. It does not work in the old player layout. - Hide comment button - Hides comment button. - Hide add to playlist button - Hides add to playlist button. - Hide download button - Hides download button. - Hide share button - Hides share button. - Hide radio button - Hides start radio button. - Hides labels in action buttons. - Hide action button labels - Override download action button - "Download button opens your external downloader. - -• Only overrides the download action button in the player. -• Does not override the download button in the flyout menu or library." - External downloader - Warning - "%1$s is not installed. -Please download %2$s from the website." - Ads - Hide fullscreen ads - Hides fullscreen ads. - Hide general ads - Hides general ads. - Hide music ads - Hides ads before playing a music. - Hide paid promotion label - Hides paid promotion label. - Hide premium promotion popups - Hides premium promotion popups. - Hide premium renewal banner - Hides the premium renewal banner. - Flyout Menu - Enable compact dialog - "Enables the compact flyout menu on phones. + Continue + Don\'t show again + "GmsCore does not have permission to run in the background. -Limitations: -• Album art in the library tab becomes smaller when organized in a grid. -• Sleep timer layout may appear unusual." - Add trim silence switch - "Adds 'Trim silence' switch to the playback speed flyout menu. +Follow the 'Don't kill my app!' guide for your device, and apply the instructions to your GmsCore installation. -Info: -• This feature is for podcasts. -• This feature is still in development, so it may be unstable." - Hide like and dislike button - Hide 3-column component - Hide add to queue menu - Hide captions menu - Hide delete playlist menu - Hide dismiss queue menu - Hide download menu - Hide edit playlist menu - Hide go to album menu - Hide go to artist menu - Hide go to episode menu - Hide go to podcast menu - Hide help & feedback menu - Hide play next menu - Hide quality menu - Hide remove from library menu - Hide remove from playlist menu - Hide report menu - Hide save episode for later menu - Hide save to library menu - Hide save to playlist menu - Hide share menu - Hide shuffle play menu - Hide sleep timer menu - Hide start radio menu - Hide stats for nerds menu - Hide subscribe / unsubscribe menu - Hide view song credit menu - Continue watching - Continues the video from the current time when switching to YouTube. - Watch on YouTube - Invalid video url. - Replace dismiss queue - Replaces \'Dismiss queue\' with \'Watch on YouTube\'. - Keep report in comments - Keeps the report menu in the comments section intact. - Replace report - Replaces \'Report\' with \'Playback speed\'. - General - Change start page - Select which page the app opens in. - Charts - Explore - Home - Library - Subscriptions - Disable dislike redirection - Disables redirection to the next track when clicking the dislike button. - Enables landscape mode when rotating the screen on phones. - Invalid custom filter: %s. - Hide button shelf - Hides button shelf in feed. - Hide carousel shelf - Hides carousel shelf in feed. - Hide playlist card shelf - Hides playlist card shelf in feed. - Hide samples shelf - Hides samples shelf in feed. - Hide cast button - Hides cast button. - Hide category bar - Hides category bar. - Hide floating button - Hides floating button in library. - Hide \'Tap to update\' button - Hides \'Tap to update\' button. - Hide history button - Hides history button in toolbar. - Hide notification button - Hides notification button in toolbar. - Hide sound search button - Hides sound search button in search bar. - Hide voice search button - Hides voice search button in search bar. - Restore old style library shelf - Returns the library tab to the old style. (Experimental) - Remove viewer discretion dialog - "Removes the viewer discretion dialog. -This does not bypass the age restriction. It just accepts it automatically." - Spoof app version - "Spoofs the client version to an older version. +This is required for the app to work." + "GmsCore battery optimizations must be disabled to prevent issues. -• This will change the appearance of the app, but unknown side effects may occur. -• If later disabled, the old UI may remain until the app data is cleared." - Spoof app version target - Select the spoof app version target. - 4.27.53 - Disable radio mode in Canadian regions - 6.11.52 - Disable real-time lyrics - Navigation Bar - Hide home button - Hides the home button. - Hide samples button - Hides the samples button. - Hide explore button - Hides the explore button. - Hide library button - Hides the library button. - Hide upgrade button - Hides the upgrade button. - Hides labels below the navigation buttons. - Player - Enable black player background +Tap on the continue button and disable battery optimizations." + Open website + Action needed + Enable cloud messaging to receive notifications. + Open GmsCore + GmsCore is not installed. Install it. + Replaces the domain that is blocked in some regions so that playlist thumbnails, channel avatars, etc. can be received. + Bypass image region restrictions + Change from in-app share sheet to system share sheet. + Change share sheet + Invalid custom playback speeds. Using default values. + Disable swipe to change tracks in the miniplayer. + Disable miniplayer gesture + Disable swipe to change tracks in the player. + Disable player gesture Changes the player background color to black. - Enable miniplayer next button - Enables next button in the miniplayer. - Enable miniplayer previous button - Enables previous button in the miniplayer. - Enable swipe to dismiss miniplayer + Enable black player background + Enables Cairo splash animation when the app starts up. + Enable Cairo splash animation + Includes the buffer in the debug log. + Enable debug buffer logging + Prints the debug log. + Adds a next track button to the miniplayer. + Add miniplayer next button + Adds a previous track button to the miniplayer. + Add miniplayer previous button + "Enable the OPUS codec if the player response includes the OPUS codec. + +Info: +• Latest YouTube Music clients use the OPUS audio codec by default. +• This is only valid for users spoofing with very old clients." Enables swipe down to dismiss miniplayer. - Enable zen mode in podcasts - Zen mode is also applied to podcasts. - Hide audio video switch toggle - Hides the audio video switch toggle in player. + Enable swipe to dismiss miniplayer + Also enables Zen mode for podcasts. + Enable Zen mode in podcasts + Export settings to file + Failed to export settings. + Settings were successfully exported. + Import settings from file + Import / Export settings as text + Import / Export settings + Import failed: %s. + Settings reset to default. + Imported %d settings. + Reset + Displays the optimization dialog for GMSCore at each application startup. + Show optimization dialog for GMSCore + Hides the Audio / Video toggle in the player. + Hide Audio / Video toggle + Hides the channel guidelines at the top of the comments section. Hide channel guidelines - Hides channel guidelines at the top of the comments section. + Hides the timestamp and emoji buttons when typing comments. Hide timestamp and emoji buttons - Hides timestamp and emoji buttons when typing comments. - Hide fullscreen share button - Hides the share button in the fullscreen player. - Remember repeat state - Remembers the state of the repeat toggle. - Remember shuffle state - Remembers the state of the shuffle toggle. - Restore old comments popup panels - Returns the comments popup panels to the old style. - Restore old player background - Returns the player background to the old style. - Restore old player layout - "Returns the player layout to the old style. -Some features may not work properly in the old player layout." - Replace cast button - "Replaces the cast button in the player with an 'Open music' button, which opens the official audio instead of the music video. (Experimental) - -Info: This feature does not work normally if any songs in the playlist cannot be played." - Already playing from the official music source. - Official music source is unavailable. + Hides dark overlay that appears when double-tapping to seek. + Hide double-tap overlay filter + Fullscreen ads are blocked. (there may be side effects) + Fullscreen ads are closed through the Close button. + Hides the Share button in the fullscreen player. + Hide fullscreen Share button + Hides labels below the navigation buttons. + Hides the Library button. + Hides the Samples button. + Hide Samples button + Hides the Upgrade button. + Hide Upgrade button + Hides the promotion alert banner. + Hide promotion alert banner + Miscellaneous + Return YouTube Dislike + SponsorBlock Video - Remember playback speed changes Remembers the last playback speed selected. - Remember video quality changes - Remembers the last video quality selected. - Invalid custom playback speeds. Using default values. + Remember playback speed changes + Show a toast when changing the default playback speed. + Show a toast Changing default speed to %s. + Remembers the state of the repeat toggle. + Remember repeat state + Remembers the state of the shuffle toggle. + Remember shuffle state + Remembers the last video quality selected. + Remember video quality changes + Show a toast when changing the default video quality. + Show a toast Changing default mobile data quality to %s. Failed to set quality. Changing default Wi-Fi quality to %s. - Return YouTube Dislike - Enable Return YouTube Dislike - Shows the dislike count of videos. - Displays the percentage of dislikes instead of the dislike count. - Hides the separator of the like button. - Show a toast if API is unavailable - Shows a toast if the Return YouTube Dislike API is unavailable. + Returns the comments popup panels to the old style. + Restore old comments popup panels + Returns the player background to the old style. + Restore old player background + "Returns the player layout to the old style. +Some features may not work properly in the old player layout." + Restore old player layout ReturnYouTubeDislike.com - Dislikes are temporarily unavailable (API timed out). + Hides the separator of the like button. + Displays the percentage of dislikes instead of the dislike count. + Shows the dislike count of videos. + Enable Return YouTube Dislike Dislikes are unavailable (status %d). + Dislikes are temporarily unavailable (API timed out). Dislikes are unavailable (%s). - SponsorBlock - Enable SponsorBlock - SponsorBlock is a crowd-sourced system for skipping annoying parts of YouTube videos. - Show a toast if API is unavailable - Shows a toast if the SponsorBlock API is unavailable. - Show a toast when skipping automatically - Shows a toast when a segment is automatically skipped. + Shows a toast if the Return YouTube Dislike API is unavailable. + Show a toast if API is unavailable + Removes tracking query parameters from URLs when sharing links. + Sanitize sharing links + About + sponsor.ajay.app + Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms. Change API URL - The address SponsorBlock uses to make calls to the server. Do not change this unless you know what you\'re doing. - API URL reset. - API URL is invalid. API URL changed. + API URL is invalid. + API URL reset. + The address SponsorBlock uses to make calls to the server. Do not change this unless you know what you\'re doing. + Color changed. + Color: + Invalid color code. Color reset to default. + Color reset. Change segment behavior - Sponsor - Paid promotion, paid referrals, and direct advertisements. Not for self-promotion or free shout-outs to causes / creators / websites / products they like. - Unpaid / Self Promotion - Similar to \'Sponsor\' except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with. + Enable SponsorBlock + SponsorBlock is a crowd-sourced system for skipping annoying parts of YouTube videos. + Reset color + Filler Tangent / Jokes + Tangential scenes added only for filler or humor that are not required to understand the main content of the video. Does not include segments providing context or background details. Interaction Reminder (Subscribe) 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. Intermission / Intro Animation An interval without actual content. Could be a pause, static frame, or repeating animation. Does not include transitions containing information. + Music: Non-Music Section + Only for use in music videos. Sections of music videos without music, that aren\'t already covered by another category. Endcards / Credits Credits or when the YouTube endcards appear. Not for conclusions with information. Preview / Recap / Hook Collection of clips that show what is coming up or what happened in the video or in other videos of a series, where all information is repeated elsewhere. - Filler Tangent / Jokes - Tangential scenes added only for filler or humor that are not required to understand the main content of the video. Does not include segments providing context or background details. - Music: Non-Music Section - Only for use in music videos. Sections of music videos without music, that aren\'t already covered by another category. - Skipped sponsor. - Skipped self promotion. + Unpaid / Self Promotion + Similar to Sponsor, except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with. + Sponsor + Paid promotion, paid referrals, and direct advertisements. Not for self-promotion or free shout-outs to causes / creators / websites / products they like. + Skip automatically + Disable + Skipped filler. Skipped annoying reminder. Skipped intro. - Skipped intermission. Skipped intermission. + Skipped intermission. + Skipped multiple segments. + Skipped a non-music section. Skipped outro. Skipped preview. - Skipped preview. Skipped recap. - Skipped filler. - Skipped a non-music section. - Skipped multiple segments. - Skip automatically - Disable + Skipped preview. + Skipped self promotion. + Skipped sponsor. SponsorBlock is temporarily unavailable. SponsorBlock is temporarily unavailable (status %d). SponsorBlock is temporarily unavailable (API timed out). - Color: - Color changed. - Color reset. - Invalid color code. Color reset to default. - Reset color - Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms. - About - sponsor.ajay.app - Miscellaneous - Prints the debug log. - Enable debug buffer logging - Includes the buffer in the debug log. - "Enables the opus audio codec instead of the mp4a audio codec. - -Info: -• Latest Android clients use the opus audio codec by default. -• This is only valid for users spoofing with very old clients." - Open GmsCore - Enable cloud messaging to receive notifications. - Show optimization dialog for GMSCore - Displays the optimization dialog for GMSCore at each application startup. - Don\'t show again - GmsCore is not installed. Install it. - Action needed - "GmsCore does not have permission to run in the background. - -Follow the 'Don't kill my app' guide for your phone, and apply the instructions to your MicroG installation. - -This is required for the app to work." - Open website - "GmsCore battery optimizations must be disabled to prevent issues. - -Tap on the continue button and disable battery optimizations." - Continue - Sanitize sharing links - Removes tracking query parameters from URLs when sharing links. - Import / Export settings - Export settings to file - Import settings from file - Import / Export settings as text - Failed to export settings. - Settings were successfully exported. - Import failed: %s. - Settings reset to default. - Imported %d settings. - Reset + Show a toast if API is unavailable + Shows a toast if the SponsorBlock API is unavailable. + Show a toast when skipping automatically + Shows a toast when a segment is automatically skipped. Settings copied to clipboard. diff --git a/src/main/resources/music/translations/bg-rBG/strings.xml b/src/main/resources/music/translations/bg-rBG/strings.xml index b8a2e7439..e0bc1d861 100644 --- a/src/main/resources/music/translations/bg-rBG/strings.xml +++ b/src/main/resources/music/translations/bg-rBG/strings.xml @@ -193,7 +193,6 @@ Компактен бутон за харесване Нехаресвания като процент Нехаресванията не са достъпни (достигнат лимит на API). - Скрит "Заменя клиентската версия със старата. • Това ще промени външния вид на приложението, но може да възникнат неизвестни проблеми. diff --git a/src/main/resources/music/translations/bn/missing_strings.xml b/src/main/resources/music/translations/bn/missing_strings.xml index 3b741dc61..0a7526045 100644 --- a/src/main/resources/music/translations/bn/missing_strings.xml +++ b/src/main/resources/music/translations/bn/missing_strings.xml @@ -1,284 +1,308 @@ - + - ReVanced Extended + Continue + Don\'t show again + "GmsCore does not have permission to run in the background. + +Follow the 'Don't kill my app!' guide for your device, and apply the instructions to your GmsCore installation. + +This is required for the app to work." + "GmsCore battery optimizations must be disabled to prevent issues. + +Tap on the continue button and disable battery optimizations." + Open website + Action needed + Enable cloud messaging to receive notifications. + Open GmsCore + GmsCore is not installed. Install it. + Replaces the domain that is blocked in some regions so that playlist thumbnails, channel avatars, etc. can be received. + Bypass image region restrictions + Change from in-app share sheet to system share sheet. + Change share sheet + Charts + Explore + Home + Library + Subscriptions + Select which page the app opens in. + Change start page + Invalid custom filter: %s. + Invalid custom playback speeds. Using default values. + Disables redirection to the next track when clicking the Dislike button. + Disable dislike redirection + Disable swipe to change tracks in the miniplayer. + Disable miniplayer gesture + Disable swipe to change tracks in the player. + Disable player gesture + Changes the player background color to black. + Enable black player background + Enables Cairo splash animation when the app starts up. + Enable Cairo splash animation + "Enables the compact flyout menu on phones. + +Limitations: +• Album art in the Library tab becomes smaller when organized in a grid. +• Sleep timer layout may appear unusual." + Includes the buffer in the debug log. + Enable debug buffer logging + Adds a next track button to the miniplayer. + Add miniplayer next button + Adds a previous track button to the miniplayer. + Add miniplayer previous button + Enables swipe down to dismiss miniplayer. + Enable swipe to dismiss miniplayer + "Adds a Trim silence switch to the playback speed flyout menu. + +Info: +• This feature is for podcasts. +• This feature is still in development, so it may be unstable." + Add Trim silence switch + Also enables Zen mode for podcasts. + Enable Zen mode in podcasts Restart to load the layout normally Refresh and restart - Account - Account menu filter - List of account menu names to filter, separated by new lines. - Action Bar - Hide like and dislike buttons - Hides the like and dislike buttons. It does not work in the old player layout. - Hide comment button - Hides comment button. - Hide add to playlist button - Hides add to playlist button. - Hide download button - Hides download button. - Hide share button - Hides share button. - Hide radio button - Hides start radio button. - Hides labels in action buttons. - Hide action button labels - Override download action button + Export settings to file + Failed to export settings. + Settings were successfully exported. + Import settings from file + Import / Export settings as text + Import failed: %s. + Reset + ReVanced Extended "Download button opens your external downloader. -• Only overrides the download action button in the player. -• Does not override the download button in the flyout menu or library." +• Only overrides the Download action button in the player. +• Does not override the Download button in the flyout menu or Library tab." + Override Download action button External downloader - Warning "%1$s is not installed. Please download %2$s from the website." - Ads - Hide fullscreen ads + Warning + Displays the optimization dialog for GMSCore at each application startup. + Show optimization dialog for GMSCore + List of account menu names to filter, separated by new lines. + Account menu filter + Hides the Save button. + Hide Save button + Hides the Comments button. + Hide Comments button + Hides the Download button. + Hide Download button + Hides the labels of the action buttons. + Hide action button labels + Hides the Like and Dislike buttons. It does not work in the old player layout. + Hide Like and Dislike buttons + Hides the Radio button. + Hide Radio button + Hides the Share button. + Hide Share button + Hides the Audio / Video toggle in the player. + Hide Audio / Video toggle + Hides the channel guidelines at the top of the comments section. + Hide channel guidelines + Hides the timestamp and emoji buttons when typing comments. + Hide timestamp and emoji buttons + Hides dark overlay that appears when double-tapping to seek. + Hide double-tap overlay filter + Hides the floating button in the Library tab. + Hide floating button + Hide 3-column component + Hide Add to queue menu + Hide Captions menu + Hide Delete playlist menu + Hide Dismiss queue menu + Hide Download menu + Hide Edit playlist menu + Hide Go to album menu + Hide Go to artist menu + Hide Go to episode menu + Hide Go to podcast menu + Hide Help & feedback menu + Hide Like and Dislike buttons + Hide Play next menu + Hide Quality menu + Hide Remove from library menu + Hide Remove from playlist menu + Hide Report menu + Hide Save episode for later menu + Hide Save to library menu + Hide Save to playlist menu + Hide Share menu + Hide Shuffle play menu + Hide Sleep timer menu + Hide Start radio menu + Hide Stats for nerds menu + Hide Subscribe / Unsubscribe menu + Hide View song credits menu + Fullscreen ads have been blocked. (DialogType: %s) + Fullscreen ads have been closed. Hides fullscreen ads. - Hide general ads + Hide fullscreen ads + "If it is enabled, fullscreen ads are closed through the Close button. +If it is disabled, fullscreen ads are blocked. (there may be side effects)" + Fullscreen ads are blocked. (there may be side effects) + Fullscreen ads are closed through the Close button. + Close fullscreen ads + Hides the Share button in the fullscreen player. + Hide fullscreen Share button Hides general ads. + Hide general ads + Hides the History button in the toolbar. + Hide History button + Hides the Explore button. + Hide Explore button + Hides the Home button. + Hide Home button + Hides the Library button. + Hide Library button + Hides the Samples button. + Hide Samples button + Hides the Upgrade button. + Hide Upgrade button + Hides the Notifications button in the toolbar. + Hide Notifications button + Hides the paid promotion label. Hide paid promotion label - Hides paid promotion label. - Hide premium promotion popups + Hides the playlist card shelf in the feed. + Hide playlist card shelf Hides premium promotion popups. - Hide premium renewal banner + Hide premium promotion popups Hides the premium renewal banner. - Flyout Menu - "Enables the compact flyout menu on phones. - -Limitations: -• Album art in the library tab becomes smaller when organized in a grid. -• Sleep timer layout may appear unusual." - Add trim silence switch - "Adds 'Trim silence' switch to the playback speed flyout menu. - -Info: -• This feature is for podcasts. -• This feature is still in development, so it may be unstable." - Hide like and dislike button - Hide 3-column component - Hide add to queue menu - Hide captions menu - Hide delete playlist menu - Hide dismiss queue menu - Hide download menu - Hide edit playlist menu - Hide go to album menu - Hide go to artist menu - Hide go to episode menu - Hide go to podcast menu - Hide help & feedback menu - Hide play next menu - Hide quality menu - Hide remove from library menu - Hide remove from playlist menu - Hide report menu - Hide save episode for later menu - Hide save to library menu - Hide save to playlist menu - Hide share menu - Hide shuffle play menu - Hide sleep timer menu - Hide start radio menu - Hide stats for nerds menu - Hide subscribe / unsubscribe menu - Hide view song credit menu - Continue watching - Continues the video from the current time when switching to YouTube. - Watch on YouTube - Invalid video url. - Replace dismiss queue - Replaces \'Dismiss queue\' with \'Watch on YouTube\'. - Keep report in comments - Keeps the report menu in the comments section intact. - Replace report - Replaces \'Report\' with \'Playback speed\'. - General - Change start page - Select which page the app opens in. - Charts - Explore - Home - Library - Subscriptions - Disable dislike redirection - Disables redirection to the next track when clicking the dislike button. - Invalid custom filter: %s. - Hide playlist card shelf - Hides playlist card shelf in feed. - Hide samples shelf - Hides samples shelf in feed. - Hide floating button - Hides floating button in library. - Hide \'Tap to update\' button - Hides \'Tap to update\' button. - Hide history button - Hides history button in toolbar. - Hide notification button - Hides notification button in toolbar. + Hide premium renewal banner + Hides the promotion alert banner. + Hide promotion alert banner + Hides the Samples shelf in the feed. + Hide Samples shelf + List of settings menu names to filter, separated by new lines. + Settings menu filter + "Hide elements of the settings menu. +This hides not only the YT Music settings menu, but also the ReVanced Extended settings menu." + Hide settings menu + Hides the sound search button in the search bar. Hide sound search button - Hides sound search button in search bar. + Hides the Tap to update button. + Hide Tap to update button + Hides the voice search button in the search bar. Hide voice search button - Hides voice search button in search bar. - Restore old style library shelf - Returns the library tab to the old style. (Experimental) - Remove viewer discretion dialog - "Removes the viewer discretion dialog. -This does not bypass the age restriction. It just accepts it automatically." - "Spoofs the client version to an older version. - -• This will change the appearance of the app, but unknown side effects may occur. -• If later disabled, the old UI may remain until the app data is cleared." - Spoof app version target - Select the spoof app version target. - 4.27.53 - Disable radio mode in Canadian regions - 6.11.52 - Disable real-time lyrics + Account + Action Bar + Ads + Flyout Menu + General + Miscellaneous Navigation Bar - Hide home button - Hides the home button. - Hide samples button - Hides the samples button. - Hide explore button - Hides the explore button. - Hide library button - Hides the library button. - Hide upgrade button - Hides the upgrade button. Player - Enable black player background - Changes the player background color to black. - Enable miniplayer next button - Enables next button in the miniplayer. - Enable miniplayer previous button - Enables previous button in the miniplayer. - Enable swipe to dismiss miniplayer - Enables swipe down to dismiss miniplayer. - Enable zen mode in podcasts - Zen mode is also applied to podcasts. - Hide audio video switch toggle - Hides the audio video switch toggle in player. - Hide channel guidelines - Hides channel guidelines at the top of the comments section. - Hide timestamp and emoji buttons - Hides timestamp and emoji buttons when typing comments. - Hide fullscreen share button - Hides the share button in the fullscreen player. - Remember repeat state - Remembers the state of the repeat toggle. - Remember shuffle state - Remembers the state of the shuffle toggle. - Restore old comments popup panels - Returns the comments popup panels to the old style. - Restore old player background - Returns the player background to the old style. - Restore old player layout - "Returns the player layout to the old style. -Some features may not work properly in the old player layout." - Replace cast button - "Replaces the cast button in the player with an 'Open music' button, which opens the official audio instead of the music video. (Experimental) - -Info: This feature does not work normally if any songs in the playlist cannot be played." - Already playing from the official music source. - Official music source is unavailable. + Return YouTube Dislike + SponsorBlock Video - Remember playback speed changes Remembers the last playback speed selected. - Remember video quality changes - Remembers the last video quality selected. - Invalid custom playback speeds. Using default values. + Remember playback speed changes + Show a toast when changing the default playback speed. + Show a toast Changing default speed to %s. + Remembers the state of the repeat toggle. + Remember repeat state + Remembers the state of the shuffle toggle. + Remember shuffle state + Remembers the last video quality selected. + Remember video quality changes + Show a toast when changing the default video quality. + Show a toast Changing default mobile data quality to %s. Failed to set quality. Changing default Wi-Fi quality to %s. - Return YouTube Dislike - Enable Return YouTube Dislike - Show a toast if API is unavailable - Shows a toast if the Return YouTube Dislike API is unavailable. + "Removes the viewer discretion dialog. +This does not bypass the age restriction. It just accepts it automatically." + Remove viewer discretion dialog + Continues the video from the current time when switching to YouTube. + Continue watching + Replaces the Dismiss queue menu with the Watch on YouTube menu. + Replace Dismiss queue menu + Watch on YouTube + Invalid video url. + Keeps the Report menu in the comments section intact. + Keep Report in comments + Replaces the Report menu with the Playback speed menu. + Replace Report menu + Returns the comments popup panels to the old style. + Restore old comments popup panels + Returns the player background to the old style. + Restore old player background + "Returns the player layout to the old style. +Some features may not work properly in the old player layout." + Restore old player layout + Returns the Library tab to the old style. (Experimental) + Restore old style library shelf ReturnYouTubeDislike.com - Dislikes are temporarily unavailable (API timed out). + Enable Return YouTube Dislike Dislikes are unavailable (status %d). + Dislikes are temporarily unavailable (API timed out). Dislikes are unavailable (%s). - SponsorBlock - Enable SponsorBlock - SponsorBlock is a crowd-sourced system for skipping annoying parts of YouTube videos. - Show a toast if API is unavailable - Shows a toast if the SponsorBlock API is unavailable. - Show a toast when skipping automatically - Shows a toast when a segment is automatically skipped. + Shows a toast if the Return YouTube Dislike API is unavailable. + Show a toast if API is unavailable + Removes tracking query parameters from URLs when sharing links. + Sanitize sharing links + About + sponsor.ajay.app + Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms. Change API URL - The address SponsorBlock uses to make calls to the server. Do not change this unless you know what you\'re doing. - API URL reset. - API URL is invalid. API URL changed. + API URL is invalid. + API URL reset. + The address SponsorBlock uses to make calls to the server. Do not change this unless you know what you\'re doing. + Color changed. + Color: + Invalid color code. Color reset to default. + Color reset. Change segment behavior - Sponsor - Paid promotion, paid referrals, and direct advertisements. Not for self-promotion or free shout-outs to causes / creators / websites / products they like. - Unpaid / Self Promotion - Similar to \'Sponsor\' except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with. + Enable SponsorBlock + SponsorBlock is a crowd-sourced system for skipping annoying parts of YouTube videos. + Reset color + Filler Tangent / Jokes + Tangential scenes added only for filler or humor that are not required to understand the main content of the video. Does not include segments providing context or background details. Interaction Reminder (Subscribe) 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. Intermission / Intro Animation An interval without actual content. Could be a pause, static frame, or repeating animation. Does not include transitions containing information. + Music: Non-Music Section + Only for use in music videos. Sections of music videos without music, that aren\'t already covered by another category. Endcards / Credits Credits or when the YouTube endcards appear. Not for conclusions with information. Preview / Recap / Hook Collection of clips that show what is coming up or what happened in the video or in other videos of a series, where all information is repeated elsewhere. - Filler Tangent / Jokes - Tangential scenes added only for filler or humor that are not required to understand the main content of the video. Does not include segments providing context or background details. - Music: Non-Music Section - Only for use in music videos. Sections of music videos without music, that aren\'t already covered by another category. - Skipped sponsor. - Skipped self promotion. + Unpaid / Self Promotion + Similar to Sponsor, except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with. + Sponsor + Paid promotion, paid referrals, and direct advertisements. Not for self-promotion or free shout-outs to causes / creators / websites / products they like. + Skip automatically + Disable + Skipped filler. Skipped annoying reminder. Skipped intro. - Skipped intermission. Skipped intermission. + Skipped intermission. + Skipped multiple segments. + Skipped a non-music section. Skipped outro. Skipped preview. - Skipped preview. Skipped recap. - Skipped filler. - Skipped a non-music section. - Skipped multiple segments. - Skip automatically - Disable + Skipped preview. + Skipped self promotion. + Skipped sponsor. SponsorBlock is temporarily unavailable. SponsorBlock is temporarily unavailable (status %d). SponsorBlock is temporarily unavailable (API timed out). - Color: - Color changed. - Color reset. - Invalid color code. Color reset to default. - Reset color - Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms. - About - sponsor.ajay.app - Miscellaneous - Enable debug buffer logging - Includes the buffer in the debug log. - Open GmsCore - Enable cloud messaging to receive notifications. - Show optimization dialog for GMSCore - Displays the optimization dialog for GMSCore at each application startup. - Don\'t show again - GmsCore is not installed. Install it. - Action needed - "GmsCore does not have permission to run in the background. - -Follow the 'Don't kill my app' guide for your phone, and apply the instructions to your MicroG installation. - -This is required for the app to work." - Open website - "GmsCore battery optimizations must be disabled to prevent issues. - -Tap on the continue button and disable battery optimizations." - Continue - Sanitize sharing links - Removes tracking query parameters from URLs when sharing links. - Export settings to file - Import settings from file - Import / Export settings as text - Failed to export settings. - Settings were successfully exported. - Import failed: %s. - Reset + Show a toast if API is unavailable + Shows a toast if the SponsorBlock API is unavailable. + Show a toast when skipping automatically + Shows a toast when a segment is automatically skipped. Settings copied to clipboard. + "Spoofs the client version to an older version. + +• This will change the appearance of the app, but unknown side effects may occur. +• If later disabled, the old UI may remain until the app data is cleared." + 4.27.53 - Disable Radio mode in Canadian regions + 6.11.52 - Disable real-time lyrics + Select the spoof app version target. + Spoof app version target diff --git a/src/main/resources/music/translations/bn/strings.xml b/src/main/resources/music/translations/bn/strings.xml index 1064402d6..5a7f67ba4 100644 --- a/src/main/resources/music/translations/bn/strings.xml +++ b/src/main/resources/music/translations/bn/strings.xml @@ -63,6 +63,5 @@ শতাংশ অনুযায়ী অপছন্দ ভিডিওর অপছন্দ কাউন্ট দেখায়। অপছন্দ পাওয়া যাচ্ছে না (ক্লায়েন্ট API সর্বোচ্চ সীমা পৌঁছেছে) - লুকায়িত অ্যাপ সংস্করণ স্পুফ করুন diff --git a/src/main/resources/music/translations/cs-rCZ/missing_strings.xml b/src/main/resources/music/translations/cs-rCZ/missing_strings.xml index 82d40d53e..d4d1669d4 100644 --- a/src/main/resources/music/translations/cs-rCZ/missing_strings.xml +++ b/src/main/resources/music/translations/cs-rCZ/missing_strings.xml @@ -1,312 +1,332 @@ - + - Restart to load the layout normally - Refresh and restart - Account - Hide account menu - Hides account menu elements in the custom filter. - Account menu filter - List of account menu names to filter, separated by new lines. - Hide empty components - Hides empty components in the account menu. - Hide handle - Hides the handle in the account menu. - Hide terms container - Hides terms of service container. - Action Bar - Hide like and dislike buttons - Hides the like and dislike buttons. It does not work in the old player layout. - Hide comment button - Hides comment button. - Hide add to playlist button - Hides add to playlist button. - Hide download button - Hides download button. - Hide share button - Hides share button. - Hide radio button - Hides start radio button. - Hides labels in action buttons. - Hide action button labels - Override download action button - "Download button opens your external downloader. + Continue + Don\'t show again + "GmsCore does not have permission to run in the background. -• Only overrides the download action button in the player. -• Does not override the download button in the flyout menu or library." - External downloader - Warning - "%1$s is not installed. -Please download %2$s from the website." - Ads - Hide fullscreen ads - Hides fullscreen ads. - Hide general ads - Hides general ads. - Hide paid promotion label - Hides paid promotion label. - Hide premium promotion popups - Hides premium promotion popups. - Hide premium renewal banner - Hides the premium renewal banner. - Flyout Menu - "Enables the compact flyout menu on phones. +Follow the 'Don't kill my app!' guide for your device, and apply the instructions to your GmsCore installation. -Limitations: -• Album art in the library tab becomes smaller when organized in a grid. -• Sleep timer layout may appear unusual." - Add trim silence switch - "Adds 'Trim silence' switch to the playback speed flyout menu. +This is required for the app to work." + "GmsCore battery optimizations must be disabled to prevent issues. -Info: -• This feature is for podcasts. -• This feature is still in development, so it may be unstable." - Hide like and dislike button - Hide 3-column component - Hide add to queue menu - Hide captions menu - Hide delete playlist menu - Hide dismiss queue menu - Hide download menu - Hide edit playlist menu - Hide go to album menu - Hide go to artist menu - Hide go to episode menu - Hide go to podcast menu - Hide help & feedback menu - Hide play next menu - Hide quality menu - Hide remove from library menu - Hide remove from playlist menu - Hide report menu - Hide save episode for later menu - Hide save to library menu - Hide save to playlist menu - Hide share menu - Hide shuffle play menu - Hide sleep timer menu - Hide start radio menu - Hide stats for nerds menu - Hide subscribe / unsubscribe menu - Hide view song credit menu - Continue watching - Continues the video from the current time when switching to YouTube. - Watch on YouTube - Invalid video url. - Replace dismiss queue - Replaces \'Dismiss queue\' with \'Watch on YouTube\'. - Keep report in comments - Keeps the report menu in the comments section intact. - Replace report - Replaces \'Report\' with \'Playback speed\'. - General - Change start page - Select which page the app opens in. +Tap on the continue button and disable battery optimizations." + Open website + Action needed + Enable cloud messaging to receive notifications. + Open GmsCore + GmsCore is not installed. Install it. + Replaces the domain that is blocked in some regions so that playlist thumbnails, channel avatars, etc. can be received. + Bypass image region restrictions + Change from in-app share sheet to system share sheet. + Change share sheet Charts Explore Home Library Subscriptions - Disable dislike redirection - Disables redirection to the next track when clicking the dislike button. + Select which page the app opens in. + Change start page List of component path builder strings to filter, separated by new lines. Invalid custom filter: %s. - Hide playlist card shelf - Hides playlist card shelf in feed. - Hide samples shelf - Hides samples shelf in feed. + Custom speeds must be less than %sx. Using default values. + Invalid custom playback speeds. Using default values. + Add or change available playback speeds. + Edit custom playback speeds + Disables redirection to the next track when clicking the Dislike button. + Disable dislike redirection + Disable swipe to change tracks in the miniplayer. + Disable miniplayer gesture + Disable swipe to change tracks in the player. + Disable player gesture + Changes the player background color to black. + Enable black player background + Enables Cairo splash animation when the app starts up. + Enable Cairo splash animation + "Enables the compact flyout menu on phones. + +Limitations: +• Album art in the Library tab becomes smaller when organized in a grid. +• Sleep timer layout may appear unusual." + Includes the buffer in the debug log. + Enable debug buffer logging + Adds a next track button to the miniplayer. + Add miniplayer next button + Adds a previous track button to the miniplayer. + Add miniplayer previous button + Enables swipe down to dismiss miniplayer. + Enable swipe to dismiss miniplayer + "Adds a Trim silence switch to the playback speed flyout menu. + +Info: +• This feature is for podcasts. +• This feature is still in development, so it may be unstable." + Add Trim silence switch + Also enables Zen mode for podcasts. + Enable Zen mode in podcasts + Export settings to file + Failed to export settings. + Settings were successfully exported. + Import + Import settings from file + Copy + Import / Export settings as text + Import or export settings. + Import / Export settings + Import failed: %s. + Settings reset to default. + Imported %d settings. + Reset + "Download button opens your external downloader. + +• Only overrides the Download action button in the player. +• Does not override the Download button in the flyout menu or Library tab." + Override Download action button + External downloader + "%1$s is not installed. +Please download %2$s from the website." + Warning + Displays the optimization dialog for GMSCore at each application startup. + Show optimization dialog for GMSCore + Hides empty components in the account menu. + Hide empty components + List of account menu names to filter, separated by new lines. + Account menu filter + Hides account menu elements using the custom filter. + Hide account menu + Hides the Save button. + Hide Save button + Hides the Comments button. + Hide Comments button + Hides the Download button. + Hide Download button + Hides the labels of the action buttons. + Hide action button labels + Hides the Like and Dislike buttons. It does not work in the old player layout. + Hide Like and Dislike buttons + Hides the Radio button. + Hide Radio button + Hides the Share button. + Hide Share button + Hides the Audio / Video toggle in the player. + Hide Audio / Video toggle + Hides the channel guidelines at the top of the comments section. + Hide channel guidelines + Hides the timestamp and emoji buttons when typing comments. + Hide timestamp and emoji buttons + Hides dark overlay that appears when double-tapping to seek. + Hide double-tap overlay filter + Hides the floating button in the Library tab. Hide floating button - Hides floating button in library. - Hide \'Tap to update\' button - Hides \'Tap to update\' button. - Hide history button - Hides history button in toolbar. - Hide notification button - Hides notification button in toolbar. + Hide 3-column component + Hide Add to queue menu + Hide Captions menu + Hide Delete playlist menu + Hide Dismiss queue menu + Hide Download menu + Hide Edit playlist menu + Hide Go to album menu + Hide Go to artist menu + Hide Go to episode menu + Hide Go to podcast menu + Hide Help & feedback menu + Hide Like and Dislike buttons + Hide Play next menu + Hide Quality menu + Hide Remove from library menu + Hide Remove from playlist menu + Hide Report menu + Hide Save episode for later menu + Hide Save to library menu + Hide Save to playlist menu + Hide Share menu + Hide Shuffle play menu + Hide Sleep timer menu + Hide Start radio menu + Hide Stats for nerds menu + Hide Subscribe / Unsubscribe menu + Hide View song credits menu + Fullscreen ads have been blocked. (DialogType: %s) + Fullscreen ads have been closed. + Hides fullscreen ads. + Hide fullscreen ads + "If it is enabled, fullscreen ads are closed through the Close button. +If it is disabled, fullscreen ads are blocked. (there may be side effects)" + Fullscreen ads are blocked. (there may be side effects) + Fullscreen ads are closed through the Close button. + Close fullscreen ads + Hides the Share button in the fullscreen player. + Hide fullscreen Share button + Hides general ads. + Hide general ads + Hides the handle in the account menu. + Hide handle + Hides the History button in the toolbar. + Hide History button + Hides the navigation bar. + Hide navigation bar + Hides the Explore button. + Hide Explore button + Hides the Home button. + Hide Home button + Hides the Library button. + Hide Library button + Hides the Samples button. + Hide Samples button + Hides the Upgrade button. + Hide Upgrade button + Hides the Notifications button in the toolbar. + Hide Notifications button + Hides the paid promotion label. + Hide paid promotion label + Hides the playlist card shelf in the feed. + Hide playlist card shelf + Hides premium promotion popups. + Hide premium promotion popups + Hides the premium renewal banner. + Hide premium renewal banner + Hides the promotion alert banner. + Hide promotion alert banner + Hides the Samples shelf in the feed. + Hide Samples shelf + List of settings menu names to filter, separated by new lines. + Settings menu filter + "Hide elements of the settings menu. +This hides not only the YT Music settings menu, but also the ReVanced Extended settings menu." + Hide settings menu + Hides the sound search button in the search bar. Hide sound search button - Hides sound search button in search bar. + Hides the Tap to update button. + Hide Tap to update button + Hides the Terms of Service container. + Hide terms container + Hides the voice search button in the search bar. Hide voice search button - Hides voice search button in search bar. - Restore old style library shelf - Returns the library tab to the old style. (Experimental) - Remove viewer discretion dialog - "Removes the viewer discretion dialog. -This does not bypass the age restriction. It just accepts it automatically." - "Spoofs the client version to an older version. - -• This will change the appearance of the app, but unknown side effects may occur. -• If later disabled, the old UI may remain until the app data is cleared." - Spoof app version target - Select the spoof app version target. - 4.27.53 - Disable radio mode in Canadian regions - 6.11.52 - Disable real-time lyrics + Action Bar + Ads + Flyout Menu + General + Miscellaneous Navigation Bar - Hide home button - Hides the home button. - Hide samples button - Hides the samples button. - Hide explore button - Hides the explore button. - Hide library button - Hides the library button. - Hide upgrade button - Hides the upgrade button. - Hide navigation bar - Hides the navigation bar. Player - Enable black player background - Changes the player background color to black. - Enable miniplayer next button - Enables next button in the miniplayer. - Enable miniplayer previous button - Enables previous button in the miniplayer. - Enable swipe to dismiss miniplayer - Enables swipe down to dismiss miniplayer. - Enable zen mode in podcasts - Zen mode is also applied to podcasts. - Hide audio video switch toggle - Hides the audio video switch toggle in player. - Hide channel guidelines - Hides channel guidelines at the top of the comments section. - Hide timestamp and emoji buttons - Hides timestamp and emoji buttons when typing comments. - Hide fullscreen share button - Hides the share button in the fullscreen player. - Remember repeat state - Remembers the state of the repeat toggle. - Remember shuffle state - Remembers the state of the shuffle toggle. - Restore old comments popup panels - Returns the comments popup panels to the old style. - Restore old player background - Returns the player background to the old style. - Restore old player layout - "Returns the player layout to the old style. -Some features may not work properly in the old player layout." - Replace cast button - "Replaces the cast button in the player with an 'Open music' button, which opens the official audio instead of the music video. (Experimental) - -Info: This feature does not work normally if any songs in the playlist cannot be played." - Already playing from the official music source. - Official music source is unavailable. + Return YouTube Dislike + SponsorBlock Video - Edit custom playback speeds - Add or change available playback speeds. - Remember playback speed changes Remembers the last playback speed selected. - Remember video quality changes - Remembers the last video quality selected. - Custom speeds must be less than %sx. Using default values. - Invalid custom playback speeds. Using default values. + Remember playback speed changes + Show a toast when changing the default playback speed. + Show a toast Changing default speed to %s. + Remembers the state of the repeat toggle. + Remember repeat state + Remembers the state of the shuffle toggle. + Remember shuffle state + Remembers the last video quality selected. + Remember video quality changes + Show a toast when changing the default video quality. + Show a toast Changing default mobile data quality to %s. Failed to set quality. Changing default Wi-Fi quality to %s. - Return YouTube Dislike - Enable Return YouTube Dislike - Shows the dislike count of videos. - Dislikes as percentage - Displays the percentage of dislikes instead of the dislike count. - Compact like button - Hides the separator of the like button. - Show a toast if API is unavailable - Shows a toast if the Return YouTube Dislike API is unavailable. + "Removes the viewer discretion dialog. +This does not bypass the age restriction. It just accepts it automatically." + Remove viewer discretion dialog + Continues the video from the current time when switching to YouTube. + Continue watching + Replaces the Dismiss queue menu with the Watch on YouTube menu. + Replace Dismiss queue menu + Watch on YouTube + Invalid video url. + Keeps the Report menu in the comments section intact. + Keep Report in comments + Replaces the Report menu with the Playback speed menu. + Replace Report menu + Returns the comments popup panels to the old style. + Restore old comments popup panels + Returns the player background to the old style. + Restore old player background + "Returns the player layout to the old style. +Some features may not work properly in the old player layout." + Restore old player layout + Returns the Library tab to the old style. (Experimental) + Restore old style library shelf About - ReturnYouTubeDislike.com Data is provided by the Return YouTube Dislike API. Tap here to learn more. - Dislikes are temporarily unavailable (API timed out). - Dislikes are unavailable (status %d). + ReturnYouTubeDislike.com + Hides the separator of the like button. + Compact like button + Displays the percentage of dislikes instead of the dislike count. + Dislikes as percentage + Shows the dislike count of videos. + Enable Return YouTube Dislike Dislikes are unavailable (client API limit reached). + Dislikes are unavailable (status %d). + Dislikes are temporarily unavailable (API timed out). Dislikes are unavailable (%s). - Hidden - SponsorBlock - Enable SponsorBlock - SponsorBlock is a crowd-sourced system for skipping annoying parts of YouTube videos. - Show a toast if API is unavailable - Shows a toast if the SponsorBlock API is unavailable. - Show a toast when skipping automatically - Shows a toast when a segment is automatically skipped. + Shows a toast if the Return YouTube Dislike API is unavailable. + Show a toast if API is unavailable + Removes tracking query parameters from URLs when sharing links. + Sanitize sharing links + About + sponsor.ajay.app + Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms. Change API URL - The address SponsorBlock uses to make calls to the server. Do not change this unless you know what you\'re doing. - API URL reset. - API URL is invalid. API URL changed. + API URL is invalid. + API URL reset. + The address SponsorBlock uses to make calls to the server. Do not change this unless you know what you\'re doing. + Color changed. + Color: + Invalid color code. Color reset to default. + Color reset. Change segment behavior - Sponsor - Paid promotion, paid referrals, and direct advertisements. Not for self-promotion or free shout-outs to causes / creators / websites / products they like. - Unpaid / Self Promotion - Similar to \'Sponsor\' except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with. + Enable SponsorBlock + SponsorBlock is a crowd-sourced system for skipping annoying parts of YouTube videos. + Reset color + Filler Tangent / Jokes + Tangential scenes added only for filler or humor that are not required to understand the main content of the video. Does not include segments providing context or background details. Interaction Reminder (Subscribe) 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. Intermission / Intro Animation An interval without actual content. Could be a pause, static frame, or repeating animation. Does not include transitions containing information. + Music: Non-Music Section + Only for use in music videos. Sections of music videos without music, that aren\'t already covered by another category. Endcards / Credits Credits or when the YouTube endcards appear. Not for conclusions with information. Preview / Recap / Hook Collection of clips that show what is coming up or what happened in the video or in other videos of a series, where all information is repeated elsewhere. - Filler Tangent / Jokes - Tangential scenes added only for filler or humor that are not required to understand the main content of the video. Does not include segments providing context or background details. - Music: Non-Music Section - Only for use in music videos. Sections of music videos without music, that aren\'t already covered by another category. - Skipped sponsor. - Skipped self promotion. + Unpaid / Self Promotion + Similar to Sponsor, except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with. + Sponsor + Paid promotion, paid referrals, and direct advertisements. Not for self-promotion or free shout-outs to causes / creators / websites / products they like. + Skip automatically + Disable + Skipped filler. Skipped annoying reminder. Skipped intro. - Skipped intermission. Skipped intermission. + Skipped intermission. + Skipped multiple segments. + Skipped a non-music section. Skipped outro. Skipped preview. - Skipped preview. Skipped recap. - Skipped filler. - Skipped a non-music section. - Skipped multiple segments. - Skip automatically - Disable + Skipped preview. + Skipped self promotion. + Skipped sponsor. SponsorBlock is temporarily unavailable. SponsorBlock is temporarily unavailable (status %d). SponsorBlock is temporarily unavailable (API timed out). - Color: - Color changed. - Color reset. - Invalid color code. Color reset to default. - Reset color - Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms. - About - sponsor.ajay.app - Miscellaneous - Enable debug buffer logging - Includes the buffer in the debug log. - Open GmsCore - Enable cloud messaging to receive notifications. - Show optimization dialog for GMSCore - Displays the optimization dialog for GMSCore at each application startup. - Don\'t show again - GmsCore is not installed. Install it. - Action needed - "GmsCore does not have permission to run in the background. - -Follow the 'Don't kill my app' guide for your phone, and apply the instructions to your MicroG installation. - -This is required for the app to work." - Open website - "GmsCore battery optimizations must be disabled to prevent issues. - -Tap on the continue button and disable battery optimizations." - Continue - Sanitize sharing links - Removes tracking query parameters from URLs when sharing links. - Import / Export settings - Import or export settings. - Export settings to file - Import settings from file - Import / Export settings as text - Failed to export settings. - Settings were successfully exported. - Import - Copy - Import failed: %s. - Settings reset to default. - Imported %d settings. - Reset + Show a toast if API is unavailable + Shows a toast if the SponsorBlock API is unavailable. + Show a toast when skipping automatically + Shows a toast when a segment is automatically skipped. Settings copied to clipboard. + "Spoofs the client version to an older version. + +• This will change the appearance of the app, but unknown side effects may occur. +• If later disabled, the old UI may remain until the app data is cleared." + 4.27.53 - Disable Radio mode in Canadian regions + 6.11.52 - Disable real-time lyrics + Select the spoof app version target. + Spoof app version target diff --git a/src/main/resources/music/translations/el-rGR/missing_strings.xml b/src/main/resources/music/translations/el-rGR/missing_strings.xml index a7a3d8b3f..b0d1db62d 100644 --- a/src/main/resources/music/translations/el-rGR/missing_strings.xml +++ b/src/main/resources/music/translations/el-rGR/missing_strings.xml @@ -1,8 +1,8 @@ - + - Enable black player background - Changes the player background color to black. - Show optimization dialog for GMSCore - Displays the optimization dialog for GMSCore at each application startup. Don\'t show again + Displays the optimization dialog for GMSCore at each application startup. + Show optimization dialog for GMSCore + Hides the promotion alert banner. + Hide promotion alert banner diff --git a/src/main/resources/music/translations/el-rGR/strings.xml b/src/main/resources/music/translations/el-rGR/strings.xml index ef3bfe004..2c58d1629 100644 --- a/src/main/resources/music/translations/el-rGR/strings.xml +++ b/src/main/resources/music/translations/el-rGR/strings.xml @@ -302,7 +302,6 @@ Δεδομένα dislike μη διαθέσιμα (%s). Να εμφανίζεται μήνυμα στο κάτω μέρος της οθόνης αν το Return YouTube Dislike API δεν είναι διαθέσιμο. Μήνυμα αν το API δεν είναι διαθέσιμο - Κρυμμένα Αφαίρεση των παραμέτρων παρακολούθησης από τις διευθύνσεις URL κατά την κοινοποίηση συνδέσμων. Καθαρισμός συνδέσμων κοινοποίησης Σχετικά με diff --git a/src/main/resources/music/translations/es-rES/missing_strings.xml b/src/main/resources/music/translations/es-rES/missing_strings.xml index 2265ad4c4..c7c1bbcc0 100644 --- a/src/main/resources/music/translations/es-rES/missing_strings.xml +++ b/src/main/resources/music/translations/es-rES/missing_strings.xml @@ -1,251 +1,10 @@ - + - ReVanced Extended - Restart to load the layout normally - Refresh and restart - Account - Account menu filter - List of account menu names to filter, separated by new lines. - Action Bar - Hide like and dislike buttons - Hides the like and dislike buttons. It does not work in the old player layout. - Hide comment button - Hides comment button. - Hide add to playlist button - Hides add to playlist button. - Hide download button - Hides download button. - Hide share button - Hides share button. - Hide radio button - Hides start radio button. - Hides labels in action buttons. - Hide action button labels - Override download action button - "Download button opens your external downloader. - -• Only overrides the download action button in the player. -• Does not override the download button in the flyout menu or library." - External downloader - Warning - "%1$s is not installed. -Please download %2$s from the website." - Ads - Hide fullscreen ads - Hides fullscreen ads. - Hide general ads - Hides general ads. - Hide paid promotion label - Hides paid promotion label. - Hide premium promotion popups - Hides premium promotion popups. - Hide premium renewal banner - Hides the premium renewal banner. - Flyout Menu - Add trim silence switch - "Adds 'Trim silence' switch to the playback speed flyout menu. - -Info: -• This feature is for podcasts. -• This feature is still in development, so it may be unstable." - Hide like and dislike button - Hide 3-column component - Hide add to queue menu - Hide captions menu - Hide delete playlist menu - Hide dismiss queue menu - Hide download menu - Hide edit playlist menu - Hide go to album menu - Hide go to artist menu - Hide go to episode menu - Hide go to podcast menu - Hide help & feedback menu - Hide play next menu - Hide quality menu - Hide remove from library menu - Hide remove from playlist menu - Hide report menu - Hide save episode for later menu - Hide save to library menu - Hide save to playlist menu - Hide share menu - Hide shuffle play menu - Hide sleep timer menu - Hide start radio menu - Hide stats for nerds menu - Hide subscribe / unsubscribe menu - Hide view song credit menu - Continue watching - Continues the video from the current time when switching to YouTube. - Watch on YouTube - Invalid video url. - Replace dismiss queue - Replaces \'Dismiss queue\' with \'Watch on YouTube\'. - Keep report in comments - Keeps the report menu in the comments section intact. - Replace report - Replaces \'Report\' with \'Playback speed\'. - General - Change start page - Select which page the app opens in. - Charts - Explore - Home - Library - Subscriptions - Disable dislike redirection - Disables redirection to the next track when clicking the dislike button. - Invalid custom filter: %s. - Hide playlist card shelf - Hides playlist card shelf in feed. - Hide samples shelf - Hides samples shelf in feed. - Hide floating button - Hides floating button in library. - Hide \'Tap to update\' button - Hides \'Tap to update\' button. - Hide notification button - Hides notification button in toolbar. - Hide sound search button - Hides sound search button in search bar. - Hide voice search button - Hides voice search button in search bar. - Restore old style library shelf - Returns the library tab to the old style. (Experimental) - Remove viewer discretion dialog - "Removes the viewer discretion dialog. -This does not bypass the age restriction. It just accepts it automatically." - 6.11.52 - Disable real-time lyrics - Navigation Bar - Hide home button - Hides the home button. - Hide samples button - Hides the samples button. - Hide explore button - Hides the explore button. - Hide library button - Hides the library button. - Hide upgrade button - Hides the upgrade button. - Player - Enable black player background - Changes the player background color to black. - Enable miniplayer next button - Enables next button in the miniplayer. - Enable miniplayer previous button - Enables previous button in the miniplayer. - Enable swipe to dismiss miniplayer - Enables swipe down to dismiss miniplayer. - Enable zen mode in podcasts - Zen mode is also applied to podcasts. - Hide audio video switch toggle - Hides the audio video switch toggle in player. - Hide channel guidelines - Hides channel guidelines at the top of the comments section. - Hide timestamp and emoji buttons - Hides timestamp and emoji buttons when typing comments. - Hide fullscreen share button - Hides the share button in the fullscreen player. - Restore old comments popup panels - Returns the comments popup panels to the old style. - Restore old player background - Returns the player background to the old style. - Restore old player layout - "Returns the player layout to the old style. -Some features may not work properly in the old player layout." - "Replaces the cast button in the player with an 'Open music' button, which opens the official audio instead of the music video. (Experimental) - -Info: This feature does not work normally if any songs in the playlist cannot be played." - Already playing from the official music source. - Official music source is unavailable. - Video - Remember playback speed changes - Remembers the last playback speed selected. - Remember video quality changes - Remembers the last video quality selected. - Invalid custom playback speeds. Using default values. - Changing default speed to %s. - Changing default mobile data quality to %s. - Failed to set quality. - Changing default Wi-Fi quality to %s. - Return YouTube Dislike - Enable Return YouTube Dislike - ReturnYouTubeDislike.com - SponsorBlock - Enable SponsorBlock - SponsorBlock is a crowd-sourced system for skipping annoying parts of YouTube videos. - Show a toast if API is unavailable - Shows a toast if the SponsorBlock API is unavailable. - Show a toast when skipping automatically - Shows a toast when a segment is automatically skipped. - Change API URL - The address SponsorBlock uses to make calls to the server. Do not change this unless you know what you\'re doing. - API URL reset. - API URL is invalid. - API URL changed. - Change segment behavior - Sponsor - Paid promotion, paid referrals, and direct advertisements. Not for self-promotion or free shout-outs to causes / creators / websites / products they like. - Unpaid / Self Promotion - Similar to \'Sponsor\' except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with. - Interaction Reminder (Subscribe) - 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. - Intermission / Intro Animation - An interval without actual content. Could be a pause, static frame, or repeating animation. Does not include transitions containing information. - Endcards / Credits - Credits or when the YouTube endcards appear. Not for conclusions with information. - Preview / Recap / Hook - Collection of clips that show what is coming up or what happened in the video or in other videos of a series, where all information is repeated elsewhere. - Filler Tangent / Jokes - Tangential scenes added only for filler or humor that are not required to understand the main content of the video. Does not include segments providing context or background details. - Music: Non-Music Section - Only for use in music videos. Sections of music videos without music, that aren\'t already covered by another category. - Skipped sponsor. - Skipped self promotion. - Skipped annoying reminder. - Skipped intro. - Skipped intermission. - Skipped intermission. - Skipped outro. - Skipped preview. - Skipped preview. - Skipped recap. - Skipped filler. - Skipped a non-music section. - Skipped multiple segments. - Skip automatically - Disable - SponsorBlock is temporarily unavailable. - SponsorBlock is temporarily unavailable (status %d). - SponsorBlock is temporarily unavailable (API timed out). - Color: - Color changed. - Color reset. - Invalid color code. Color reset to default. - Reset color - Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms. - About - sponsor.ajay.app - Miscellaneous - Enable debug buffer logging - Includes the buffer in the debug log. - Open GmsCore - Enable cloud messaging to receive notifications. - Show optimization dialog for GMSCore - Displays the optimization dialog for GMSCore at each application startup. Don\'t show again - GmsCore is not installed. Install it. - Action needed - "GmsCore does not have permission to run in the background. - -Follow the 'Don't kill my app' guide for your phone, and apply the instructions to your MicroG installation. - -This is required for the app to work." - Open website - "GmsCore battery optimizations must be disabled to prevent issues. - -Tap on the continue button and disable battery optimizations." - Continue - Reset + Displays the optimization dialog for GMSCore at each application startup. + Show optimization dialog for GMSCore + Fullscreen ads are blocked. (there may be side effects) + Fullscreen ads are closed through the Close button. + Hides the promotion alert banner. + Hide promotion alert banner diff --git a/src/main/resources/music/translations/es-rES/strings.xml b/src/main/resources/music/translations/es-rES/strings.xml index 8bcf743ec..d4a6f365f 100644 --- a/src/main/resources/music/translations/es-rES/strings.xml +++ b/src/main/resources/music/translations/es-rES/strings.xml @@ -25,14 +25,14 @@ Pulsa el botón de continuar y desactiva las optimizaciones de la batería."Suscripciones Seleccione en qué página se abre la aplicación. Cambiar página de inicio - Filtra los nombres de los componentes separados por líneas + Filtra los nombres de los componentes, separados por líneas. Editar filtro personalizado - Activa los filtros personalizados + Habilita el filtro personalizado para ocultar los componentes de diseño. Activar filtro personalizado Filtro personalizado no válido: %s. Las velocidades de reproducción personalizadas no son válidas. Restablezca a los valores predeterminados. Velocidades de reproducción personalizadas no válidas. Utilizando valores predeterminados. - Agregar o cambiar las velocidades de reproducción disponibles + Agregar o cambiar las velocidades de reproducción disponibles. Editar velocidades de reproducción personalizadas Desactiva la activación automática de los subtítulos forzados en el reproductor de vídeo. Desactivar subtítulos automáticos @@ -58,7 +58,7 @@ Problemas conocidos: Activar diálogo compacto Incluye el búfer en el registro de depuración. Incluir búfer en registro de depuración - Imprime el registro de depuración + Imprime el registro de depuración. Activar registro de depuración Mantiene el reproductor permanentemente minimizado incluso si se reproduce otra pista. Activar reproductor minimizado forzado @@ -94,8 +94,8 @@ Esta función aún está en desarrollo, por lo que puede ser inestable."Importar o exportar ajustes como texto. Importar / Exportar Error de importación: %s - Configuración restablecida por defecto - Configuración importada de %d + La configuración se restableció a los valores predeterminados. + Configuración importada de %d. Restablecer ReVanced Extended "El botón Descargar abre su descargador externo. @@ -110,7 +110,7 @@ Descarga %2$s desde el sitio web." %s no está instalado. Por favor, instálelo. Nombre del paquete de su aplicación de descargas externas instalada, como NewPipe o YTDLnis. Nombre del paquete del descargador externo - Oculta componentes vacíos en el menú de la cuenta + Oculta componentes vacíos en el menú de la cuenta. Ocultar componente vacío Lista de nombres del menú de la cuenta a filtrar separados por una nueva línea. Filtro de menú de cuenta @@ -290,13 +290,12 @@ Algunas características pueden no funcionar correctamente en la disposición de Porcentaje de No Me Gusta Muestra el número de vídeos que no te gustan. Activar Return YouTube Dislike - Los No Me Gusta no están disponibles (se alcanzó el límite de la API del cliente) + Los No Me Gusta no están disponibles (se alcanzó el límite de la API del cliente). Los no me gusta no están disponibles (estado %d). Los no me gusta están temporalmente no disponibles (la API no responde). Los no me gusta no están disponibles (%s). Se muestra el mensaje si la API de ReturnYouTubeDislike no está disponible. Mostrar mensaje si la API no está disponible - Oculto Elimina los parámetros de consulta de seguimiento de las URL al compartir enlaces. Desinfectar enlaces compartidos Acerca de @@ -360,7 +359,7 @@ Algunas características pueden no funcionar correctamente en la disposición de - Si más tarde se desactiva, la antigua interfaz de usuario puede permanecer hasta que se borren los datos de la aplicación." 4.27.53 - Desactivar el modo radio en las regiones canadienses 6.11.52 - Desactivar letras en tiempo real - Seleccione el objetivo de la versión de la app a modificar + Seleccione el objetivo de la versión de la app a modificar. Objetivo de la versión de la app a modificar Modificar versión de aplicación diff --git a/src/main/resources/music/translations/fr-rFR/missing_strings.xml b/src/main/resources/music/translations/fr-rFR/missing_strings.xml index a2b717c61..b0d1db62d 100644 --- a/src/main/resources/music/translations/fr-rFR/missing_strings.xml +++ b/src/main/resources/music/translations/fr-rFR/missing_strings.xml @@ -1,181 +1,8 @@ - + - Hide help & feedback menu - Hide play next menu - Hide quality menu - Hide remove from library menu - Hide remove from playlist menu - Hide report menu - Hide save episode for later menu - Hide save to library menu - Hide save to playlist menu - Hide share menu - Hide shuffle play menu - Hide sleep timer menu - Hide start radio menu - Hide stats for nerds menu - Hide subscribe / unsubscribe menu - Hide view song credit menu - Continue watching - Continues the video from the current time when switching to YouTube. - Watch on YouTube - Invalid video url. - Replace dismiss queue - Replaces \'Dismiss queue\' with \'Watch on YouTube\'. - Keep report in comments - Keeps the report menu in the comments section intact. - Replace report - Replaces \'Report\' with \'Playback speed\'. - General - Disable dislike redirection - Disables redirection to the next track when clicking the dislike button. - Invalid custom filter: %s. - Hide playlist card shelf - Hides playlist card shelf in feed. - Hide samples shelf - Hides samples shelf in feed. - Hide floating button - Hides floating button in library. - Hide \'Tap to update\' button - Hides \'Tap to update\' button. - Hide notification button - Hides notification button in toolbar. - Hide sound search button - Hides sound search button in search bar. - Hide voice search button - Hides voice search button in search bar. - Restore old style library shelf - Returns the library tab to the old style. (Experimental) - 6.11.52 - Disable real-time lyrics - Navigation Bar - Hide home button - Hides the home button. - Hide samples button - Hides the samples button. - Hide explore button - Hides the explore button. - Hide library button - Hides the library button. - Hide upgrade button - Hides the upgrade button. - Player - Enable black player background - Changes the player background color to black. - Enable miniplayer next button - Enables next button in the miniplayer. - Enable miniplayer previous button - Enables previous button in the miniplayer. - Enable swipe to dismiss miniplayer - Enables swipe down to dismiss miniplayer. - Enable zen mode in podcasts - Zen mode is also applied to podcasts. - Hide audio video switch toggle - Hides the audio video switch toggle in player. - Hide channel guidelines - Hides channel guidelines at the top of the comments section. - Hide timestamp and emoji buttons - Hides timestamp and emoji buttons when typing comments. - Hide fullscreen share button - Hides the share button in the fullscreen player. - Restore old comments popup panels - Returns the comments popup panels to the old style. - Restore old player background - Returns the player background to the old style. - Restore old player layout - "Returns the player layout to the old style. -Some features may not work properly in the old player layout." - "Replaces the cast button in the player with an 'Open music' button, which opens the official audio instead of the music video. (Experimental) - -Info: This feature does not work normally if any songs in the playlist cannot be played." - Already playing from the official music source. - Official music source is unavailable. - Video - Remember playback speed changes - Remembers the last playback speed selected. - Remember video quality changes - Remembers the last video quality selected. - Invalid custom playback speeds. Using default values. - Changing default speed to %s. - Changing default mobile data quality to %s. - Failed to set quality. - Changing default Wi-Fi quality to %s. - Return YouTube Dislike - Enable Return YouTube Dislike - ReturnYouTubeDislike.com - SponsorBlock - Enable SponsorBlock - SponsorBlock is a crowd-sourced system for skipping annoying parts of YouTube videos. - Show a toast if API is unavailable - Shows a toast if the SponsorBlock API is unavailable. - Show a toast when skipping automatically - Shows a toast when a segment is automatically skipped. - Change API URL - The address SponsorBlock uses to make calls to the server. Do not change this unless you know what you\'re doing. - API URL reset. - API URL is invalid. - API URL changed. - Change segment behavior - Sponsor - Paid promotion, paid referrals, and direct advertisements. Not for self-promotion or free shout-outs to causes / creators / websites / products they like. - Unpaid / Self Promotion - Similar to \'Sponsor\' except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with. - Interaction Reminder (Subscribe) - 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. - Intermission / Intro Animation - An interval without actual content. Could be a pause, static frame, or repeating animation. Does not include transitions containing information. - Endcards / Credits - Credits or when the YouTube endcards appear. Not for conclusions with information. - Preview / Recap / Hook - Collection of clips that show what is coming up or what happened in the video or in other videos of a series, where all information is repeated elsewhere. - Filler Tangent / Jokes - Tangential scenes added only for filler or humor that are not required to understand the main content of the video. Does not include segments providing context or background details. - Music: Non-Music Section - Only for use in music videos. Sections of music videos without music, that aren\'t already covered by another category. - Skipped sponsor. - Skipped self promotion. - Skipped annoying reminder. - Skipped intro. - Skipped intermission. - Skipped intermission. - Skipped outro. - Skipped preview. - Skipped preview. - Skipped recap. - Skipped filler. - Skipped a non-music section. - Skipped multiple segments. - Skip automatically - Disable - SponsorBlock is temporarily unavailable. - SponsorBlock is temporarily unavailable (status %d). - SponsorBlock is temporarily unavailable (API timed out). - Color: - Color changed. - Color reset. - Invalid color code. Color reset to default. - Reset color - Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms. - About - sponsor.ajay.app - Miscellaneous - Enable debug buffer logging - Includes the buffer in the debug log. - Open GmsCore - Enable cloud messaging to receive notifications. - Show optimization dialog for GMSCore - Displays the optimization dialog for GMSCore at each application startup. Don\'t show again - GmsCore is not installed. Install it. - Action needed - "GmsCore does not have permission to run in the background. - -Follow the 'Don't kill my app' guide for your phone, and apply the instructions to your MicroG installation. - -This is required for the app to work." - Open website - "GmsCore battery optimizations must be disabled to prevent issues. - -Tap on the continue button and disable battery optimizations." - Continue - Reset + Displays the optimization dialog for GMSCore at each application startup. + Show optimization dialog for GMSCore + Hides the promotion alert banner. + Hide promotion alert banner diff --git a/src/main/resources/music/translations/fr-rFR/strings.xml b/src/main/resources/music/translations/fr-rFR/strings.xml index 3a3ac9fa0..dc784fa57 100644 --- a/src/main/resources/music/translations/fr-rFR/strings.xml +++ b/src/main/resources/music/translations/fr-rFR/strings.xml @@ -304,7 +304,6 @@ Certaines fonctions peuvent ne pas fonctionner sur l'ancienne mise en page."Les \"Je n\'aime pas\" sont indisponible (%s). Affiche un message si l\'API de Return YouTube Dislike n\'est pas disponible. Afficher un message si l\'API est indisponible - Masqué Supprime les paramètres de suivi (tracking) des URL lors du partage de liens. Nettoyer les liens partagés À propos diff --git a/src/main/resources/music/translations/hu-rHU/missing_strings.xml b/src/main/resources/music/translations/hu-rHU/missing_strings.xml index 98a6ee57e..e81b26a18 100644 --- a/src/main/resources/music/translations/hu-rHU/missing_strings.xml +++ b/src/main/resources/music/translations/hu-rHU/missing_strings.xml @@ -1,6 +1,12 @@ - + - Show optimization dialog for GMSCore - Displays the optimization dialog for GMSCore at each application startup. Don\'t show again + Displays the optimization dialog for GMSCore at each application startup. + Show optimization dialog for GMSCore + Hides the promotion alert banner. + Hide promotion alert banner + Show a toast when changing the default playback speed. + Show a toast + Show a toast when changing the default video quality. + Show a toast diff --git a/src/main/resources/music/translations/hu-rHU/strings.xml b/src/main/resources/music/translations/hu-rHU/strings.xml index d36045ccf..dc63fb88d 100644 --- a/src/main/resources/music/translations/hu-rHU/strings.xml +++ b/src/main/resources/music/translations/hu-rHU/strings.xml @@ -300,7 +300,6 @@ Előfordulhat, hogy egyes funkciók nem működnek megfelelően a régi lejátsz A nem tetszik funkció nem elérhető (%s). Megjelenik egy üzenet, ha a YouTube nem tetszések visszaállítása API nem érhető el. Köszöntő megjelenítése, ha az API nem elérhető - Rejtett Linkek megosztásakor eltávolítja a nyomkövetési paramétereket az URL-ekből. Megosztási linkek tisztítása Névjegy diff --git a/src/main/resources/music/translations/id-rID/missing_strings.xml b/src/main/resources/music/translations/id-rID/missing_strings.xml index fa9f37073..b0d1db62d 100644 --- a/src/main/resources/music/translations/id-rID/missing_strings.xml +++ b/src/main/resources/music/translations/id-rID/missing_strings.xml @@ -1,262 +1,8 @@ - + - ReVanced Extended - Restart to load the layout normally - Refresh and restart - Account - Account menu filter - List of account menu names to filter, separated by new lines. - Action Bar - Hide like and dislike buttons - Hides the like and dislike buttons. It does not work in the old player layout. - Hide comment button - Hides comment button. - Hide add to playlist button - Hides add to playlist button. - Hide download button - Hides download button. - Hide share button - Hides share button. - Hide radio button - Hides start radio button. - Hides labels in action buttons. - Hide action button labels - Override download action button - "Download button opens your external downloader. - -• Only overrides the download action button in the player. -• Does not override the download button in the flyout menu or library." - External downloader - Warning - "%1$s is not installed. -Please download %2$s from the website." - Ads - Hide fullscreen ads - Hides fullscreen ads. - Hide general ads - Hides general ads. - Hide paid promotion label - Hides paid promotion label. - Hide premium promotion popups - Hides premium promotion popups. - Hide premium renewal banner - Hides the premium renewal banner. - Flyout Menu - Add trim silence switch - "Adds 'Trim silence' switch to the playback speed flyout menu. - -Info: -• This feature is for podcasts. -• This feature is still in development, so it may be unstable." - Hide like and dislike button - Hide 3-column component - Hide add to queue menu - Hide captions menu - Hide delete playlist menu - Hide dismiss queue menu - Hide download menu - Hide edit playlist menu - Hide go to album menu - Hide go to artist menu - Hide go to episode menu - Hide go to podcast menu - Hide help & feedback menu - Hide play next menu - Hide quality menu - Hide remove from library menu - Hide remove from playlist menu - Hide report menu - Hide save episode for later menu - Hide save to library menu - Hide save to playlist menu - Hide share menu - Hide shuffle play menu - Hide sleep timer menu - Hide start radio menu - Hide stats for nerds menu - Hide subscribe / unsubscribe menu - Hide view song credit menu - Continue watching - Continues the video from the current time when switching to YouTube. - Watch on YouTube - Invalid video url. - Replace dismiss queue - Replaces \'Dismiss queue\' with \'Watch on YouTube\'. - Keep report in comments - Keeps the report menu in the comments section intact. - Replace report - Replaces \'Report\' with \'Playback speed\'. - General - Change start page - Select which page the app opens in. - Charts - Explore - Home - Library - Subscriptions - Disable dislike redirection - Disables redirection to the next track when clicking the dislike button. - Invalid custom filter: %s. - Hide playlist card shelf - Hides playlist card shelf in feed. - Hide samples shelf - Hides samples shelf in feed. - Hide floating button - Hides floating button in library. - Hide \'Tap to update\' button - Hides \'Tap to update\' button. - Hide notification button - Hides notification button in toolbar. - Hide sound search button - Hides sound search button in search bar. - Hide voice search button - Hides voice search button in search bar. - Restore old style library shelf - Returns the library tab to the old style. (Experimental) - Remove viewer discretion dialog - "Removes the viewer discretion dialog. -This does not bypass the age restriction. It just accepts it automatically." - 6.11.52 - Disable real-time lyrics - Navigation Bar - Hide home button - Hides the home button. - Hide samples button - Hides the samples button. - Hide explore button - Hides the explore button. - Hide library button - Hides the library button. - Hide upgrade button - Hides the upgrade button. - Player - Enable black player background - Changes the player background color to black. - Enable miniplayer next button - Enables next button in the miniplayer. - Enable miniplayer previous button - Enables previous button in the miniplayer. - Enable swipe to dismiss miniplayer - Enables swipe down to dismiss miniplayer. - Enable zen mode in podcasts - Zen mode is also applied to podcasts. - Hide audio video switch toggle - Hides the audio video switch toggle in player. - Hide channel guidelines - Hides channel guidelines at the top of the comments section. - Hide timestamp and emoji buttons - Hides timestamp and emoji buttons when typing comments. - Hide fullscreen share button - Hides the share button in the fullscreen player. - Restore old comments popup panels - Returns the comments popup panels to the old style. - Restore old player background - Returns the player background to the old style. - Restore old player layout - "Returns the player layout to the old style. -Some features may not work properly in the old player layout." - "Replaces the cast button in the player with an 'Open music' button, which opens the official audio instead of the music video. (Experimental) - -Info: This feature does not work normally if any songs in the playlist cannot be played." - Already playing from the official music source. - Official music source is unavailable. - Video - Remember playback speed changes - Remembers the last playback speed selected. - Remember video quality changes - Remembers the last video quality selected. - Invalid custom playback speeds. Using default values. - Changing default speed to %s. - Changing default mobile data quality to %s. - Failed to set quality. - Changing default Wi-Fi quality to %s. - Return YouTube Dislike - Enable Return YouTube Dislike - Show a toast if API is unavailable - Shows a toast if the Return YouTube Dislike API is unavailable. - ReturnYouTubeDislike.com - Dislikes are temporarily unavailable (API timed out). - Dislikes are unavailable (status %d). - Dislikes are unavailable (%s). - SponsorBlock - Enable SponsorBlock - SponsorBlock is a crowd-sourced system for skipping annoying parts of YouTube videos. - Show a toast if API is unavailable - Shows a toast if the SponsorBlock API is unavailable. - Show a toast when skipping automatically - Shows a toast when a segment is automatically skipped. - Change API URL - The address SponsorBlock uses to make calls to the server. Do not change this unless you know what you\'re doing. - API URL reset. - API URL is invalid. - API URL changed. - Change segment behavior - Sponsor - Paid promotion, paid referrals, and direct advertisements. Not for self-promotion or free shout-outs to causes / creators / websites / products they like. - Unpaid / Self Promotion - Similar to \'Sponsor\' except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with. - Interaction Reminder (Subscribe) - 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. - Intermission / Intro Animation - An interval without actual content. Could be a pause, static frame, or repeating animation. Does not include transitions containing information. - Endcards / Credits - Credits or when the YouTube endcards appear. Not for conclusions with information. - Preview / Recap / Hook - Collection of clips that show what is coming up or what happened in the video or in other videos of a series, where all information is repeated elsewhere. - Filler Tangent / Jokes - Tangential scenes added only for filler or humor that are not required to understand the main content of the video. Does not include segments providing context or background details. - Music: Non-Music Section - Only for use in music videos. Sections of music videos without music, that aren\'t already covered by another category. - Skipped sponsor. - Skipped self promotion. - Skipped annoying reminder. - Skipped intro. - Skipped intermission. - Skipped intermission. - Skipped outro. - Skipped preview. - Skipped preview. - Skipped recap. - Skipped filler. - Skipped a non-music section. - Skipped multiple segments. - Skip automatically - Disable - SponsorBlock is temporarily unavailable. - SponsorBlock is temporarily unavailable (status %d). - SponsorBlock is temporarily unavailable (API timed out). - Color: - Color changed. - Color reset. - Invalid color code. Color reset to default. - Reset color - Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms. - About - sponsor.ajay.app - Miscellaneous - Enable debug buffer logging - Includes the buffer in the debug log. - Open GmsCore - Enable cloud messaging to receive notifications. - Show optimization dialog for GMSCore - Displays the optimization dialog for GMSCore at each application startup. Don\'t show again - GmsCore is not installed. Install it. - Action needed - "GmsCore does not have permission to run in the background. - -Follow the 'Don't kill my app' guide for your phone, and apply the instructions to your MicroG installation. - -This is required for the app to work." - Open website - "GmsCore battery optimizations must be disabled to prevent issues. - -Tap on the continue button and disable battery optimizations." - Continue - Export settings to file - Import settings from file - Import / Export settings as text - Failed to export settings. - Settings were successfully exported. - Import failed: %s. - Reset + Displays the optimization dialog for GMSCore at each application startup. + Show optimization dialog for GMSCore + Hides the promotion alert banner. + Hide promotion alert banner diff --git a/src/main/resources/music/translations/id-rID/strings.xml b/src/main/resources/music/translations/id-rID/strings.xml index fc9902e8d..d8d8fa23c 100644 --- a/src/main/resources/music/translations/id-rID/strings.xml +++ b/src/main/resources/music/translations/id-rID/strings.xml @@ -300,7 +300,6 @@ Some features may not work properly in the old player layout." Dislikes are unavailable (%s). Shows a toast if the Return YouTube Dislike API is unavailable. Show a toast if API is unavailable - Sembunyikan Menghapus parameter kueri pelacakan dari URL saat membagikan tautan. Sanitasi tautan berbagi About diff --git a/src/main/resources/music/translations/in/missing_strings.xml b/src/main/resources/music/translations/in/missing_strings.xml index fa9f37073..b0d1db62d 100644 --- a/src/main/resources/music/translations/in/missing_strings.xml +++ b/src/main/resources/music/translations/in/missing_strings.xml @@ -1,262 +1,8 @@ - + - ReVanced Extended - Restart to load the layout normally - Refresh and restart - Account - Account menu filter - List of account menu names to filter, separated by new lines. - Action Bar - Hide like and dislike buttons - Hides the like and dislike buttons. It does not work in the old player layout. - Hide comment button - Hides comment button. - Hide add to playlist button - Hides add to playlist button. - Hide download button - Hides download button. - Hide share button - Hides share button. - Hide radio button - Hides start radio button. - Hides labels in action buttons. - Hide action button labels - Override download action button - "Download button opens your external downloader. - -• Only overrides the download action button in the player. -• Does not override the download button in the flyout menu or library." - External downloader - Warning - "%1$s is not installed. -Please download %2$s from the website." - Ads - Hide fullscreen ads - Hides fullscreen ads. - Hide general ads - Hides general ads. - Hide paid promotion label - Hides paid promotion label. - Hide premium promotion popups - Hides premium promotion popups. - Hide premium renewal banner - Hides the premium renewal banner. - Flyout Menu - Add trim silence switch - "Adds 'Trim silence' switch to the playback speed flyout menu. - -Info: -• This feature is for podcasts. -• This feature is still in development, so it may be unstable." - Hide like and dislike button - Hide 3-column component - Hide add to queue menu - Hide captions menu - Hide delete playlist menu - Hide dismiss queue menu - Hide download menu - Hide edit playlist menu - Hide go to album menu - Hide go to artist menu - Hide go to episode menu - Hide go to podcast menu - Hide help & feedback menu - Hide play next menu - Hide quality menu - Hide remove from library menu - Hide remove from playlist menu - Hide report menu - Hide save episode for later menu - Hide save to library menu - Hide save to playlist menu - Hide share menu - Hide shuffle play menu - Hide sleep timer menu - Hide start radio menu - Hide stats for nerds menu - Hide subscribe / unsubscribe menu - Hide view song credit menu - Continue watching - Continues the video from the current time when switching to YouTube. - Watch on YouTube - Invalid video url. - Replace dismiss queue - Replaces \'Dismiss queue\' with \'Watch on YouTube\'. - Keep report in comments - Keeps the report menu in the comments section intact. - Replace report - Replaces \'Report\' with \'Playback speed\'. - General - Change start page - Select which page the app opens in. - Charts - Explore - Home - Library - Subscriptions - Disable dislike redirection - Disables redirection to the next track when clicking the dislike button. - Invalid custom filter: %s. - Hide playlist card shelf - Hides playlist card shelf in feed. - Hide samples shelf - Hides samples shelf in feed. - Hide floating button - Hides floating button in library. - Hide \'Tap to update\' button - Hides \'Tap to update\' button. - Hide notification button - Hides notification button in toolbar. - Hide sound search button - Hides sound search button in search bar. - Hide voice search button - Hides voice search button in search bar. - Restore old style library shelf - Returns the library tab to the old style. (Experimental) - Remove viewer discretion dialog - "Removes the viewer discretion dialog. -This does not bypass the age restriction. It just accepts it automatically." - 6.11.52 - Disable real-time lyrics - Navigation Bar - Hide home button - Hides the home button. - Hide samples button - Hides the samples button. - Hide explore button - Hides the explore button. - Hide library button - Hides the library button. - Hide upgrade button - Hides the upgrade button. - Player - Enable black player background - Changes the player background color to black. - Enable miniplayer next button - Enables next button in the miniplayer. - Enable miniplayer previous button - Enables previous button in the miniplayer. - Enable swipe to dismiss miniplayer - Enables swipe down to dismiss miniplayer. - Enable zen mode in podcasts - Zen mode is also applied to podcasts. - Hide audio video switch toggle - Hides the audio video switch toggle in player. - Hide channel guidelines - Hides channel guidelines at the top of the comments section. - Hide timestamp and emoji buttons - Hides timestamp and emoji buttons when typing comments. - Hide fullscreen share button - Hides the share button in the fullscreen player. - Restore old comments popup panels - Returns the comments popup panels to the old style. - Restore old player background - Returns the player background to the old style. - Restore old player layout - "Returns the player layout to the old style. -Some features may not work properly in the old player layout." - "Replaces the cast button in the player with an 'Open music' button, which opens the official audio instead of the music video. (Experimental) - -Info: This feature does not work normally if any songs in the playlist cannot be played." - Already playing from the official music source. - Official music source is unavailable. - Video - Remember playback speed changes - Remembers the last playback speed selected. - Remember video quality changes - Remembers the last video quality selected. - Invalid custom playback speeds. Using default values. - Changing default speed to %s. - Changing default mobile data quality to %s. - Failed to set quality. - Changing default Wi-Fi quality to %s. - Return YouTube Dislike - Enable Return YouTube Dislike - Show a toast if API is unavailable - Shows a toast if the Return YouTube Dislike API is unavailable. - ReturnYouTubeDislike.com - Dislikes are temporarily unavailable (API timed out). - Dislikes are unavailable (status %d). - Dislikes are unavailable (%s). - SponsorBlock - Enable SponsorBlock - SponsorBlock is a crowd-sourced system for skipping annoying parts of YouTube videos. - Show a toast if API is unavailable - Shows a toast if the SponsorBlock API is unavailable. - Show a toast when skipping automatically - Shows a toast when a segment is automatically skipped. - Change API URL - The address SponsorBlock uses to make calls to the server. Do not change this unless you know what you\'re doing. - API URL reset. - API URL is invalid. - API URL changed. - Change segment behavior - Sponsor - Paid promotion, paid referrals, and direct advertisements. Not for self-promotion or free shout-outs to causes / creators / websites / products they like. - Unpaid / Self Promotion - Similar to \'Sponsor\' except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with. - Interaction Reminder (Subscribe) - 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. - Intermission / Intro Animation - An interval without actual content. Could be a pause, static frame, or repeating animation. Does not include transitions containing information. - Endcards / Credits - Credits or when the YouTube endcards appear. Not for conclusions with information. - Preview / Recap / Hook - Collection of clips that show what is coming up or what happened in the video or in other videos of a series, where all information is repeated elsewhere. - Filler Tangent / Jokes - Tangential scenes added only for filler or humor that are not required to understand the main content of the video. Does not include segments providing context or background details. - Music: Non-Music Section - Only for use in music videos. Sections of music videos without music, that aren\'t already covered by another category. - Skipped sponsor. - Skipped self promotion. - Skipped annoying reminder. - Skipped intro. - Skipped intermission. - Skipped intermission. - Skipped outro. - Skipped preview. - Skipped preview. - Skipped recap. - Skipped filler. - Skipped a non-music section. - Skipped multiple segments. - Skip automatically - Disable - SponsorBlock is temporarily unavailable. - SponsorBlock is temporarily unavailable (status %d). - SponsorBlock is temporarily unavailable (API timed out). - Color: - Color changed. - Color reset. - Invalid color code. Color reset to default. - Reset color - Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms. - About - sponsor.ajay.app - Miscellaneous - Enable debug buffer logging - Includes the buffer in the debug log. - Open GmsCore - Enable cloud messaging to receive notifications. - Show optimization dialog for GMSCore - Displays the optimization dialog for GMSCore at each application startup. Don\'t show again - GmsCore is not installed. Install it. - Action needed - "GmsCore does not have permission to run in the background. - -Follow the 'Don't kill my app' guide for your phone, and apply the instructions to your MicroG installation. - -This is required for the app to work." - Open website - "GmsCore battery optimizations must be disabled to prevent issues. - -Tap on the continue button and disable battery optimizations." - Continue - Export settings to file - Import settings from file - Import / Export settings as text - Failed to export settings. - Settings were successfully exported. - Import failed: %s. - Reset + Displays the optimization dialog for GMSCore at each application startup. + Show optimization dialog for GMSCore + Hides the promotion alert banner. + Hide promotion alert banner diff --git a/src/main/resources/music/translations/in/strings.xml b/src/main/resources/music/translations/in/strings.xml index fc9902e8d..d8d8fa23c 100644 --- a/src/main/resources/music/translations/in/strings.xml +++ b/src/main/resources/music/translations/in/strings.xml @@ -300,7 +300,6 @@ Some features may not work properly in the old player layout." Dislikes are unavailable (%s). Shows a toast if the Return YouTube Dislike API is unavailable. Show a toast if API is unavailable - Sembunyikan Menghapus parameter kueri pelacakan dari URL saat membagikan tautan. Sanitasi tautan berbagi About diff --git a/src/main/resources/music/translations/it-rIT/missing_strings.xml b/src/main/resources/music/translations/it-rIT/missing_strings.xml index 3b80ee8ff..376db1a62 100644 --- a/src/main/resources/music/translations/it-rIT/missing_strings.xml +++ b/src/main/resources/music/translations/it-rIT/missing_strings.xml @@ -1,289 +1,313 @@ - + - ReVanced Extended - Restart to load the layout normally - Refresh and restart - Account - Account menu filter - List of account menu names to filter, separated by new lines. - Hide handle - Hides the handle in the account menu. - Action Bar - Hide like and dislike buttons - Hides the like and dislike buttons. It does not work in the old player layout. - Hide comment button - Hides comment button. - Hide add to playlist button - Hides add to playlist button. - Hide download button - Hides download button. - Hide share button - Hides share button. - Hide radio button - Hides start radio button. - Hides labels in action buttons. - Hide action button labels - Override download action button - "Download button opens your external downloader. + Continue + Don\'t show again + "GmsCore does not have permission to run in the background. -• Only overrides the download action button in the player. -• Does not override the download button in the flyout menu or library." - External downloader - Warning - "%1$s is not installed. -Please download %2$s from the website." - Ads - Hide fullscreen ads - Hides fullscreen ads. - Hide general ads - Hides general ads. - Hides ads before playing a music. - Hide paid promotion label - Hides paid promotion label. - Hide premium promotion popups - Hides premium promotion popups. - Hide premium renewal banner - Hides the premium renewal banner. - Flyout Menu - "Enables the compact flyout menu on phones. +Follow the 'Don't kill my app!' guide for your device, and apply the instructions to your GmsCore installation. -Limitations: -• Album art in the library tab becomes smaller when organized in a grid. -• Sleep timer layout may appear unusual." - Add trim silence switch - "Adds 'Trim silence' switch to the playback speed flyout menu. +This is required for the app to work." + "GmsCore battery optimizations must be disabled to prevent issues. -Info: -• This feature is for podcasts. -• This feature is still in development, so it may be unstable." - Hide like and dislike button - Hide 3-column component - Hide add to queue menu - Hide captions menu - Hide delete playlist menu - Hide dismiss queue menu - Hide download menu - Hide edit playlist menu - Hide go to album menu - Hide go to artist menu - Hide go to episode menu - Hide go to podcast menu - Hide help & feedback menu - Hide play next menu - Hide quality menu - Hide remove from library menu - Hide remove from playlist menu - Hide report menu - Hide save episode for later menu - Hide save to library menu - Hide save to playlist menu - Hide share menu - Hide shuffle play menu - Hide sleep timer menu - Hide start radio menu - Hide stats for nerds menu - Hide subscribe / unsubscribe menu - Hide view song credit menu - Continue watching - Continues the video from the current time when switching to YouTube. - Watch on YouTube - Invalid video url. - Replace dismiss queue - Replaces \'Dismiss queue\' with \'Watch on YouTube\'. - Keep report in comments - Keeps the report menu in the comments section intact. - Replace report - Replaces \'Report\' with \'Playback speed\'. - General - Change start page - Select which page the app opens in. +Tap on the continue button and disable battery optimizations." + Open website + Action needed + Enable cloud messaging to receive notifications. + Open GmsCore + GmsCore is not installed. Install it. + Replaces the domain that is blocked in some regions so that playlist thumbnails, channel avatars, etc. can be received. + Bypass image region restrictions + Change from in-app share sheet to system share sheet. + Change share sheet Charts Explore Home Library Subscriptions - Disable dislike redirection - Disables redirection to the next track when clicking the dislike button. + Select which page the app opens in. + Change start page Invalid custom filter: %s. + Invalid custom playback speeds. Using default values. + Disables redirection to the next track when clicking the Dislike button. + Disable dislike redirection + Disable swipe to change tracks in the miniplayer. + Disable miniplayer gesture + Disable swipe to change tracks in the player. + Disable player gesture + Changes the player background color to black. + Enable black player background + Enables Cairo splash animation when the app starts up. + Enable Cairo splash animation + "Enables the compact flyout menu on phones. + +Limitations: +• Album art in the Library tab becomes smaller when organized in a grid. +• Sleep timer layout may appear unusual." + Includes the buffer in the debug log. + Enable debug buffer logging + Adds a next track button to the miniplayer. + Add miniplayer next button + Adds a previous track button to the miniplayer. + Add miniplayer previous button + Enables swipe down to dismiss miniplayer. + Enable swipe to dismiss miniplayer + "Adds a Trim silence switch to the playback speed flyout menu. + +Info: +• This feature is for podcasts. +• This feature is still in development, so it may be unstable." + Add Trim silence switch + Also enables Zen mode for podcasts. + Enable Zen mode in podcasts + Restart to load the layout normally + Refresh and restart + Export settings to file + Failed to export settings. + Settings were successfully exported. + Import settings from file + Import / Export settings as text + Import failed: %s. + Reset + ReVanced Extended + "Download button opens your external downloader. + +• Only overrides the Download action button in the player. +• Does not override the Download button in the flyout menu or Library tab." + Override Download action button + External downloader + "%1$s is not installed. +Please download %2$s from the website." + Warning + Displays the optimization dialog for GMSCore at each application startup. + Show optimization dialog for GMSCore + List of account menu names to filter, separated by new lines. + Account menu filter + Hides the Save button. + Hide Save button + Hides the Comments button. + Hide Comments button + Hides the Download button. + Hide Download button + Hides the labels of the action buttons. + Hide action button labels + Hides the Like and Dislike buttons. It does not work in the old player layout. + Hide Like and Dislike buttons + Hides the Radio button. + Hide Radio button + Hides the Share button. + Hide Share button + Hides the Audio / Video toggle in the player. + Hide Audio / Video toggle Hide carousel shelf - Hide playlist card shelf - Hides playlist card shelf in feed. - Hide samples shelf - Hides samples shelf in feed. + Hides the category bar. Hide category bar - Hides category bar. + Hides the channel guidelines at the top of the comments section. + Hide channel guidelines + Hides the timestamp and emoji buttons when typing comments. + Hide timestamp and emoji buttons + Hides dark overlay that appears when double-tapping to seek. + Hide double-tap overlay filter + Hides the floating button in the Library tab. Hide floating button - Hides floating button in library. - Hide \'Tap to update\' button - Hides \'Tap to update\' button. - Hide history button - Hides history button in toolbar. - Hide notification button - Hides notification button in toolbar. + Hide 3-column component + Hide Add to queue menu + Hide Captions menu + Hide Delete playlist menu + Hide Dismiss queue menu + Hide Download menu + Hide Edit playlist menu + Hide Go to album menu + Hide Go to artist menu + Hide Go to episode menu + Hide Go to podcast menu + Hide Help & feedback menu + Hide Like and Dislike buttons + Hide Play next menu + Hide Quality menu + Hide Remove from library menu + Hide Remove from playlist menu + Hide Report menu + Hide Save episode for later menu + Hide Save to library menu + Hide Save to playlist menu + Hide Share menu + Hide Shuffle play menu + Hide Sleep timer menu + Hide Start radio menu + Hide Stats for nerds menu + Hide Subscribe / Unsubscribe menu + Hide View song credits menu + Fullscreen ads have been blocked. (DialogType: %s) + Fullscreen ads have been closed. + Hides fullscreen ads. + Hide fullscreen ads + "If it is enabled, fullscreen ads are closed through the Close button. +If it is disabled, fullscreen ads are blocked. (there may be side effects)" + Fullscreen ads are blocked. (there may be side effects) + Fullscreen ads are closed through the Close button. + Close fullscreen ads + Hides the Share button in the fullscreen player. + Hide fullscreen Share button + Hides general ads. + Hide general ads + Hides the handle in the account menu. + Hide handle + Hides the History button in the toolbar. + Hide History button + Hides ads before playing media. + Hides the navigation bar. + Hide navigation bar + Hides the Explore button. + Hide Explore button + Hides the Home button. + Hide Home button + Hides labels below the navigation buttons. + Hides the Library button. + Hide Library button + Hides the Samples button. + Hide Samples button + Hides the Upgrade button. + Hide Upgrade button + Hides the Notifications button in the toolbar. + Hide Notifications button + Hides the paid promotion label. + Hide paid promotion label + Hides the playlist card shelf in the feed. + Hide playlist card shelf + Hides premium promotion popups. + Hide premium promotion popups + Hides the premium renewal banner. + Hide premium renewal banner + Hides the promotion alert banner. + Hide promotion alert banner + Hides the Samples shelf in the feed. + Hide Samples shelf + List of settings menu names to filter, separated by new lines. + Settings menu filter + "Hide elements of the settings menu. +This hides not only the YT Music settings menu, but also the ReVanced Extended settings menu." + Hide settings menu + Hides the sound search button in the search bar. Hide sound search button - Hides sound search button in search bar. + Hides the Tap to update button. + Hide Tap to update button + Hides the voice search button in the search bar. Hide voice search button - Hides voice search button in search bar. - Restore old style library shelf - Returns the library tab to the old style. (Experimental) - Remove viewer discretion dialog - "Removes the viewer discretion dialog. -This does not bypass the age restriction. It just accepts it automatically." - "Spoofs the client version to an older version. - -• This will change the appearance of the app, but unknown side effects may occur. -• If later disabled, the old UI may remain until the app data is cleared." - Spoof app version target - Select the spoof app version target. - 4.27.53 - Disable radio mode in Canadian regions - 6.11.52 - Disable real-time lyrics + Account + Action Bar + Ads + Flyout Menu + General + Miscellaneous Navigation Bar - Hide home button - Hides the home button. - Hide samples button - Hides the samples button. - Hide explore button - Hides the explore button. - Hide library button - Hides the library button. - Hide upgrade button - Hides the upgrade button. - Hide navigation bar - Hides the navigation bar. - Hides labels below the navigation buttons. Player - Enable black player background - Changes the player background color to black. - Enable miniplayer next button - Enables next button in the miniplayer. - Enable miniplayer previous button - Enables previous button in the miniplayer. - Enable swipe to dismiss miniplayer - Enables swipe down to dismiss miniplayer. - Enable zen mode in podcasts - Zen mode is also applied to podcasts. - Hide audio video switch toggle - Hides the audio video switch toggle in player. - Hide channel guidelines - Hides channel guidelines at the top of the comments section. - Hide timestamp and emoji buttons - Hides timestamp and emoji buttons when typing comments. - Hide fullscreen share button - Hides the share button in the fullscreen player. - Restore old comments popup panels - Returns the comments popup panels to the old style. - Restore old player background - Returns the player background to the old style. - Restore old player layout - "Returns the player layout to the old style. -Some features may not work properly in the old player layout." - Replace cast button - "Replaces the cast button in the player with an 'Open music' button, which opens the official audio instead of the music video. (Experimental) - -Info: This feature does not work normally if any songs in the playlist cannot be played." - Already playing from the official music source. - Official music source is unavailable. + Return YouTube Dislike + SponsorBlock Video - Remember playback speed changes Remembers the last playback speed selected. - Remember video quality changes - Remembers the last video quality selected. - Invalid custom playback speeds. Using default values. + Remember playback speed changes + Show a toast when changing the default playback speed. + Show a toast Changing default speed to %s. + Remembers the last video quality selected. + Remember video quality changes + Show a toast when changing the default video quality. + Show a toast Changing default mobile data quality to %s. Failed to set quality. Changing default Wi-Fi quality to %s. - Return YouTube Dislike - Enable Return YouTube Dislike - Show a toast if API is unavailable - Shows a toast if the Return YouTube Dislike API is unavailable. + "Removes the viewer discretion dialog. +This does not bypass the age restriction. It just accepts it automatically." + Remove viewer discretion dialog + Continues the video from the current time when switching to YouTube. + Continue watching + Replaces the Dismiss queue menu with the Watch on YouTube menu. + Replace Dismiss queue menu + Watch on YouTube + Invalid video url. + Keeps the Report menu in the comments section intact. + Keep Report in comments + Replaces the Report menu with the Playback speed menu. + Replace Report menu + Returns the comments popup panels to the old style. + Restore old comments popup panels + Returns the player background to the old style. + Restore old player background + "Returns the player layout to the old style. +Some features may not work properly in the old player layout." + Restore old player layout + Returns the Library tab to the old style. (Experimental) + Restore old style library shelf ReturnYouTubeDislike.com - Dislikes are temporarily unavailable (API timed out). + Enable Return YouTube Dislike Dislikes are unavailable (status %d). + Dislikes are temporarily unavailable (API timed out). Dislikes are unavailable (%s). - SponsorBlock - Enable SponsorBlock - SponsorBlock is a crowd-sourced system for skipping annoying parts of YouTube videos. - Show a toast if API is unavailable - Shows a toast if the SponsorBlock API is unavailable. - Show a toast when skipping automatically - Shows a toast when a segment is automatically skipped. + Shows a toast if the Return YouTube Dislike API is unavailable. + Show a toast if API is unavailable + Removes tracking query parameters from URLs when sharing links. + Sanitize sharing links + About + sponsor.ajay.app + Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms. Change API URL - The address SponsorBlock uses to make calls to the server. Do not change this unless you know what you\'re doing. - API URL reset. - API URL is invalid. API URL changed. + API URL is invalid. + API URL reset. + The address SponsorBlock uses to make calls to the server. Do not change this unless you know what you\'re doing. + Color changed. + Color: + Invalid color code. Color reset to default. + Color reset. Change segment behavior - Sponsor - Paid promotion, paid referrals, and direct advertisements. Not for self-promotion or free shout-outs to causes / creators / websites / products they like. - Unpaid / Self Promotion - Similar to \'Sponsor\' except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with. + Enable SponsorBlock + SponsorBlock is a crowd-sourced system for skipping annoying parts of YouTube videos. + Reset color + Filler Tangent / Jokes + Tangential scenes added only for filler or humor that are not required to understand the main content of the video. Does not include segments providing context or background details. Interaction Reminder (Subscribe) 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. Intermission / Intro Animation An interval without actual content. Could be a pause, static frame, or repeating animation. Does not include transitions containing information. + Music: Non-Music Section + Only for use in music videos. Sections of music videos without music, that aren\'t already covered by another category. Endcards / Credits Credits or when the YouTube endcards appear. Not for conclusions with information. Preview / Recap / Hook Collection of clips that show what is coming up or what happened in the video or in other videos of a series, where all information is repeated elsewhere. - Filler Tangent / Jokes - Tangential scenes added only for filler or humor that are not required to understand the main content of the video. Does not include segments providing context or background details. - Music: Non-Music Section - Only for use in music videos. Sections of music videos without music, that aren\'t already covered by another category. - Skipped sponsor. - Skipped self promotion. + Unpaid / Self Promotion + Similar to Sponsor, except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with. + Sponsor + Paid promotion, paid referrals, and direct advertisements. Not for self-promotion or free shout-outs to causes / creators / websites / products they like. + Skip automatically + Disable + Skipped filler. Skipped annoying reminder. Skipped intro. - Skipped intermission. Skipped intermission. + Skipped intermission. + Skipped multiple segments. + Skipped a non-music section. Skipped outro. Skipped preview. - Skipped preview. Skipped recap. - Skipped filler. - Skipped a non-music section. - Skipped multiple segments. - Skip automatically - Disable + Skipped preview. + Skipped self promotion. + Skipped sponsor. SponsorBlock is temporarily unavailable. SponsorBlock is temporarily unavailable (status %d). SponsorBlock is temporarily unavailable (API timed out). - Color: - Color changed. - Color reset. - Invalid color code. Color reset to default. - Reset color - Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms. - About - sponsor.ajay.app - Miscellaneous - Enable debug buffer logging - Includes the buffer in the debug log. - Open GmsCore - Enable cloud messaging to receive notifications. - Show optimization dialog for GMSCore - Displays the optimization dialog for GMSCore at each application startup. - Don\'t show again - GmsCore is not installed. Install it. - Action needed - "GmsCore does not have permission to run in the background. - -Follow the 'Don't kill my app' guide for your phone, and apply the instructions to your MicroG installation. - -This is required for the app to work." - Open website - "GmsCore battery optimizations must be disabled to prevent issues. - -Tap on the continue button and disable battery optimizations." - Continue - Sanitize sharing links - Removes tracking query parameters from URLs when sharing links. - Export settings to file - Import settings from file - Import / Export settings as text - Failed to export settings. - Settings were successfully exported. - Import failed: %s. - Reset + Show a toast if API is unavailable + Shows a toast if the SponsorBlock API is unavailable. + Show a toast when skipping automatically + Shows a toast when a segment is automatically skipped. Settings copied to clipboard. + "Spoofs the client version to an older version. + +• This will change the appearance of the app, but unknown side effects may occur. +• If later disabled, the old UI may remain until the app data is cleared." + 4.27.53 - Disable Radio mode in Canadian regions + 6.11.52 - Disable real-time lyrics + Select the spoof app version target. + Spoof app version target diff --git a/src/main/resources/music/translations/it-rIT/strings.xml b/src/main/resources/music/translations/it-rIT/strings.xml index 787635d8d..af5e4e2e4 100644 --- a/src/main/resources/music/translations/it-rIT/strings.xml +++ b/src/main/resources/music/translations/it-rIT/strings.xml @@ -58,6 +58,5 @@ \"Non mi piace\" in percentuale Mostra il numero di \"Non mi piace\" dei video. \"Non mi piace\" non disponibile (limite API client raggiunto) - Nascosto Versione dell\'app falsificata diff --git a/src/main/resources/music/translations/ja-rJP/missing_strings.xml b/src/main/resources/music/translations/ja-rJP/missing_strings.xml index 98a6ee57e..d7c8414ff 100644 --- a/src/main/resources/music/translations/ja-rJP/missing_strings.xml +++ b/src/main/resources/music/translations/ja-rJP/missing_strings.xml @@ -1,6 +1,5 @@ - + - Show optimization dialog for GMSCore - Displays the optimization dialog for GMSCore at each application startup. - Don\'t show again + Hides the promotion alert banner. + Hide promotion alert banner diff --git a/src/main/resources/music/translations/ja-rJP/strings.xml b/src/main/resources/music/translations/ja-rJP/strings.xml index b5719d556..5d611b114 100644 --- a/src/main/resources/music/translations/ja-rJP/strings.xml +++ b/src/main/resources/music/translations/ja-rJP/strings.xml @@ -299,7 +299,6 @@ YT Music の設定だけでなく、ReVanced Extended の設定も非表示に 低評価数は一時的に利用できません。(%s) RYDが利用できない場合、メッセージが表示されます。 API が利用できない場合にメッセージを表示 - 非表示 リンクを共有する際に、URL からトラッキングクエリパラメーターを削除します。 共有リンクのクリーンアップ この機能について diff --git a/src/main/resources/music/translations/ko-rKR/missing_strings.xml b/src/main/resources/music/translations/ko-rKR/missing_strings.xml deleted file mode 100644 index 8b1378917..000000000 --- a/src/main/resources/music/translations/ko-rKR/missing_strings.xml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/main/resources/music/translations/ko-rKR/strings.xml b/src/main/resources/music/translations/ko-rKR/strings.xml index bdb90f75f..5b797ad7c 100644 --- a/src/main/resources/music/translations/ko-rKR/strings.xml +++ b/src/main/resources/music/translations/ko-rKR/strings.xml @@ -15,8 +15,6 @@ 알림 수신을 위한 클라우드 메시징 설정을 할 수 있습니다. GmsCore 열기 GmsCore가 설치되어 있지 않습니다. 설치하세요. - 이미지를 가져올 대체 도메인을 입력하세요.\n알림: \'https\:\/\/\' 없이 도메인 이름만 입력해야 합니다. - 대체 도메인 이미지 도메인을 변경하여 일부 국가에서 차단된 재생목록 썸네일, 채널 프로필 사진, 커뮤니티 게시물 이미지 등을 수신할 수 있습니다. 이미지 표시 제한 국가 우회하기 YT Music 기본 공유 시트에서 Android 기본 공유 시트로 변경합니다.\n\n• 공유 버튼으로 바로 Android 기본 공유 메뉴를 실행할 수 있습니다. @@ -230,6 +228,8 @@ YouTube Premium 팝업 광고 제거 YouTube Premium 갱신 배너를 숨깁니다. YouTube Premium 갱신 배너 제거 + 프로모션 알림 배너를 숨깁니다. + 프로모션 알림 배너 제거 피드에서 샘플 선반을 숨깁니다. 샘플 선반 제거 필터링할 설정 메뉴 이름을 줄바꿈으로 구분하여 설정합니다. @@ -310,7 +310,6 @@ YT Music 설정 메뉴뿐만 아니라 ReVanced Extended 설정 메뉴도 숨겨 싫어요 개수를 표시할 수 없습니다 (%s). ReturnYouTubeDislike를 사용할 수 없을 때, 팝업 메시지를 표시합니다. API를 사용할 수 없을 때 팝업 메시지 표시 - 숨겨짐 링크를 공유할 때, URL에서 추적 쿼리 매개변수를 제거합니다. 추적 쿼리를 제거한 링크 공유 정보 @@ -377,6 +376,4 @@ YT Music 설정 메뉴뿐만 아니라 ReVanced Extended 설정 메뉴도 숨겨 변경할 앱 버전을 선택하세요. 변경할 앱 버전 설정 앱 버전 변경 - 일부 국가에서 차단된 도메인을 변경하여 재생목록 썸네일, 채널 아바타, 커뮤니티 게시물 이미지 등을 수신할 수 있습니다. - 이미지에 대체 도메인 사용하기 diff --git a/src/main/resources/music/translations/nl-rNL/missing_strings.xml b/src/main/resources/music/translations/nl-rNL/missing_strings.xml index 5c2d86072..2774ef307 100644 --- a/src/main/resources/music/translations/nl-rNL/missing_strings.xml +++ b/src/main/resources/music/translations/nl-rNL/missing_strings.xml @@ -1,158 +1,183 @@ - + - Hide go to episode menu - Hide go to podcast menu - Hide help & feedback menu - Hide play next menu - Hide quality menu - Hide remove from library menu - Hide remove from playlist menu - Hide report menu - Hide save episode for later menu - Hide save to library menu - Hide save to playlist menu - Hide share menu - Hide shuffle play menu - Hide sleep timer menu - Hide start radio menu - Hide stats for nerds menu - Hide subscribe / unsubscribe menu - Hide view song credit menu - Continue watching - Continues the video from the current time when switching to YouTube. - Watch on YouTube - Invalid video url. - Replace dismiss queue - Replaces \'Dismiss queue\' with \'Watch on YouTube\'. - Keep report in comments - Keeps the report menu in the comments section intact. - Replace report - Replaces \'Report\' with \'Playback speed\'. - General - Change start page - Select which page the app opens in. + Continue + Don\'t show again + "GmsCore does not have permission to run in the background. + +Follow the 'Don't kill my app!' guide for your device, and apply the instructions to your GmsCore installation. + +This is required for the app to work." + "GmsCore battery optimizations must be disabled to prevent issues. + +Tap on the continue button and disable battery optimizations." + Open website + Action needed + Enable cloud messaging to receive notifications. + Open GmsCore + GmsCore is not installed. Install it. + Replaces the domain that is blocked in some regions so that playlist thumbnails, channel avatars, etc. can be received. + Bypass image region restrictions + Change from in-app share sheet to system share sheet. + Change share sheet Charts Explore Home Library Subscriptions - Disable dislike redirection - Disables redirection to the next track when clicking the dislike button. + Select which page the app opens in. + Change start page Invalid custom filter: %s. - Hide playlist card shelf - Hides playlist card shelf in feed. - Hide samples shelf - Hides samples shelf in feed. + Invalid custom playback speeds. Using default values. + Disables redirection to the next track when clicking the Dislike button. + Disable dislike redirection + Disable swipe to change tracks in the miniplayer. + Disable miniplayer gesture + Disable swipe to change tracks in the player. + Disable player gesture + Changes the player background color to black. + Enable black player background + Enables Cairo splash animation when the app starts up. + Enable Cairo splash animation + Includes the buffer in the debug log. + Enable debug buffer logging + Reset + Displays the optimization dialog for GMSCore at each application startup. + Show optimization dialog for GMSCore + Hides dark overlay that appears when double-tapping to seek. + Hide double-tap overlay filter + Hides the floating button in the Library tab. Hide floating button - Hides floating button in library. - Hide \'Tap to update\' button - Hides \'Tap to update\' button. - Hide notification button - Hides notification button in toolbar. + Hide Go to episode menu + Hide Go to podcast menu + Hide Help & feedback menu + Hide Play next menu + Hide Quality menu + Hide Remove from library menu + Hide Remove from playlist menu + Hide Report menu + Hide Save episode for later menu + Hide Save to library menu + Hide Save to playlist menu + Hide Share menu + Hide Shuffle play menu + Hide Sleep timer menu + Hide Start radio menu + Hide Stats for nerds menu + Hide Subscribe / Unsubscribe menu + Hide View song credits menu + Fullscreen ads have been blocked. (DialogType: %s) + Fullscreen ads have been closed. + "If it is enabled, fullscreen ads are closed through the Close button. +If it is disabled, fullscreen ads are blocked. (there may be side effects)" + Fullscreen ads are blocked. (there may be side effects) + Fullscreen ads are closed through the Close button. + Close fullscreen ads + Hides the Notifications button in the toolbar. + Hide Notifications button + Hides the playlist card shelf in the feed. + Hide playlist card shelf + Hides the promotion alert banner. + Hide promotion alert banner + Hides the Samples shelf in the feed. + Hide Samples shelf + List of settings menu names to filter, separated by new lines. + Settings menu filter + "Hide elements of the settings menu. +This hides not only the YT Music settings menu, but also the ReVanced Extended settings menu." + Hide settings menu Hide sound search button - Enable black player background - Changes the player background color to black. - Restore old comments popup panels - Returns the comments popup panels to the old style. - Restore old player background - Returns the player background to the old style. - Restore old player layout - "Returns the player layout to the old style. -Some features may not work properly in the old player layout." - "Replaces the cast button in the player with an 'Open music' button, which opens the official audio instead of the music video. (Experimental) - -Info: This feature does not work normally if any songs in the playlist cannot be played." - Already playing from the official music source. - Official music source is unavailable. + Hides the Tap to update button. + Hide Tap to update button + General + Miscellaneous + Return YouTube Dislike + SponsorBlock Video - Remember playback speed changes Remembers the last playback speed selected. - Remember video quality changes - Remembers the last video quality selected. - Invalid custom playback speeds. Using default values. + Remember playback speed changes + Show a toast when changing the default playback speed. + Show a toast Changing default speed to %s. + Remembers the last video quality selected. + Remember video quality changes + Show a toast when changing the default video quality. + Show a toast Changing default mobile data quality to %s. Failed to set quality. Changing default Wi-Fi quality to %s. - Return YouTube Dislike + Continues the video from the current time when switching to YouTube. + Continue watching + Replaces the Dismiss queue menu with the Watch on YouTube menu. + Replace Dismiss queue menu + Watch on YouTube + Invalid video url. + Keeps the Report menu in the comments section intact. + Keep Report in comments + Replaces the Report menu with the Playback speed menu. + Replace Report menu + Returns the comments popup panels to the old style. + Restore old comments popup panels + Returns the player background to the old style. + Restore old player background + "Returns the player layout to the old style. +Some features may not work properly in the old player layout." + Restore old player layout + ReturnYouTubeDislike.com Enable Return YouTube Dislike - Show a toast if API is unavailable Shows a toast if the Return YouTube Dislike API is unavailable. - ReturnYouTubeDislike.com - SponsorBlock - Enable SponsorBlock - SponsorBlock is a crowd-sourced system for skipping annoying parts of YouTube videos. - Show a toast if API is unavailable - Shows a toast if the SponsorBlock API is unavailable. - Show a toast when skipping automatically - Shows a toast when a segment is automatically skipped. + Show a toast if API is unavailable + About + sponsor.ajay.app + Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms. Change API URL - The address SponsorBlock uses to make calls to the server. Do not change this unless you know what you\'re doing. - API URL reset. - API URL is invalid. API URL changed. + API URL is invalid. + API URL reset. + The address SponsorBlock uses to make calls to the server. Do not change this unless you know what you\'re doing. + Color changed. + Color: + Invalid color code. Color reset to default. + Color reset. Change segment behavior - Sponsor - Paid promotion, paid referrals, and direct advertisements. Not for self-promotion or free shout-outs to causes / creators / websites / products they like. - Unpaid / Self Promotion - Similar to \'Sponsor\' except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with. + Enable SponsorBlock + SponsorBlock is a crowd-sourced system for skipping annoying parts of YouTube videos. + Reset color + Filler Tangent / Jokes + Tangential scenes added only for filler or humor that are not required to understand the main content of the video. Does not include segments providing context or background details. Interaction Reminder (Subscribe) 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. Intermission / Intro Animation An interval without actual content. Could be a pause, static frame, or repeating animation. Does not include transitions containing information. + Music: Non-Music Section + Only for use in music videos. Sections of music videos without music, that aren\'t already covered by another category. Endcards / Credits Credits or when the YouTube endcards appear. Not for conclusions with information. Preview / Recap / Hook Collection of clips that show what is coming up or what happened in the video or in other videos of a series, where all information is repeated elsewhere. - Filler Tangent / Jokes - Tangential scenes added only for filler or humor that are not required to understand the main content of the video. Does not include segments providing context or background details. - Music: Non-Music Section - Only for use in music videos. Sections of music videos without music, that aren\'t already covered by another category. - Skipped sponsor. - Skipped self promotion. + Unpaid / Self Promotion + Similar to Sponsor, except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with. + Sponsor + Paid promotion, paid referrals, and direct advertisements. Not for self-promotion or free shout-outs to causes / creators / websites / products they like. + Skip automatically + Disable + Skipped filler. Skipped annoying reminder. Skipped intro. - Skipped intermission. Skipped intermission. + Skipped intermission. + Skipped multiple segments. + Skipped a non-music section. Skipped outro. Skipped preview. - Skipped preview. Skipped recap. - Skipped filler. - Skipped a non-music section. - Skipped multiple segments. - Skip automatically - Disable + Skipped preview. + Skipped self promotion. + Skipped sponsor. SponsorBlock is temporarily unavailable. SponsorBlock is temporarily unavailable (status %d). SponsorBlock is temporarily unavailable (API timed out). - Color: - Color changed. - Color reset. - Invalid color code. Color reset to default. - Reset color - Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms. - About - sponsor.ajay.app - Miscellaneous - Enable debug buffer logging - Includes the buffer in the debug log. - Open GmsCore - Enable cloud messaging to receive notifications. - Show optimization dialog for GMSCore - Displays the optimization dialog for GMSCore at each application startup. - Don\'t show again - GmsCore is not installed. Install it. - Action needed - "GmsCore does not have permission to run in the background. - -Follow the 'Don't kill my app' guide for your phone, and apply the instructions to your MicroG installation. - -This is required for the app to work." - Open website - "GmsCore battery optimizations must be disabled to prevent issues. - -Tap on the continue button and disable battery optimizations." - Continue - Reset + Show a toast if API is unavailable + Shows a toast if the SponsorBlock API is unavailable. + Show a toast when skipping automatically + Shows a toast when a segment is automatically skipped. diff --git a/src/main/resources/music/translations/nl-rNL/strings.xml b/src/main/resources/music/translations/nl-rNL/strings.xml index 34305b5e7..18df7e9ce 100644 --- a/src/main/resources/music/translations/nl-rNL/strings.xml +++ b/src/main/resources/music/translations/nl-rNL/strings.xml @@ -177,7 +177,6 @@ Bekende problemen: Dislikes niet beschikbaar (status %d). Dislikes tijdelijk niet beschikbaar (API time-out). Dislikes niet beschikbaar (%s). - Verborgen Verwijdert tracking query parameters uit de URL\'s bij het delen van links. Koppelingen delen Instellingen naar het klembord gekopieerd. diff --git a/src/main/resources/music/translations/pl-rPL/missing_strings.xml b/src/main/resources/music/translations/pl-rPL/missing_strings.xml index 98a6ee57e..b0d1db62d 100644 --- a/src/main/resources/music/translations/pl-rPL/missing_strings.xml +++ b/src/main/resources/music/translations/pl-rPL/missing_strings.xml @@ -1,6 +1,8 @@ - + - Show optimization dialog for GMSCore - Displays the optimization dialog for GMSCore at each application startup. Don\'t show again + Displays the optimization dialog for GMSCore at each application startup. + Show optimization dialog for GMSCore + Hides the promotion alert banner. + Hide promotion alert banner diff --git a/src/main/resources/music/translations/pl-rPL/strings.xml b/src/main/resources/music/translations/pl-rPL/strings.xml index 7c835b2cd..12be93f9d 100644 --- a/src/main/resources/music/translations/pl-rPL/strings.xml +++ b/src/main/resources/music/translations/pl-rPL/strings.xml @@ -304,7 +304,6 @@ Niektóre ustawienia mogą nie działać poprawnie ze starym układem odtwarzacz Liczba łapek w dół nie jest dostępna (%s). Komunikat wyświetlany w momencie, gdy API ReturnYouTubeDislike jest niedostępne. Pokaż komunikat o niedostępności API - Ukryte Usuwa parametry śledzących zapytań z adresów URL podczas udostępniania linków. Oczyść udostępniane linki O integracji diff --git a/src/main/resources/music/translations/pt-rBR/missing_strings.xml b/src/main/resources/music/translations/pt-rBR/missing_strings.xml index 98a6ee57e..b0d1db62d 100644 --- a/src/main/resources/music/translations/pt-rBR/missing_strings.xml +++ b/src/main/resources/music/translations/pt-rBR/missing_strings.xml @@ -1,6 +1,8 @@ - + - Show optimization dialog for GMSCore - Displays the optimization dialog for GMSCore at each application startup. Don\'t show again + Displays the optimization dialog for GMSCore at each application startup. + Show optimization dialog for GMSCore + Hides the promotion alert banner. + Hide promotion alert banner diff --git a/src/main/resources/music/translations/pt-rBR/strings.xml b/src/main/resources/music/translations/pt-rBR/strings.xml index d337559b7..400f02486 100644 --- a/src/main/resources/music/translations/pt-rBR/strings.xml +++ b/src/main/resources/music/translations/pt-rBR/strings.xml @@ -304,7 +304,6 @@ Alguns recursos podem não funcionar corretamente no layout antigo do reprodutor Deslikes indisponível (%s). Notificação flutuante exibida se o Return YouTube Dislike não está disponível. Exibir uma notificação flutuante se a API não estiver disponível - Oculto Remove os parâmetros de consulta de rastreamento das URLs ao compartilhar os links. Limpar links compartilhados Sobre diff --git a/src/main/resources/music/translations/ro-rRO/missing_strings.xml b/src/main/resources/music/translations/ro-rRO/missing_strings.xml index b4f0cc99c..1636ab9e1 100644 --- a/src/main/resources/music/translations/ro-rRO/missing_strings.xml +++ b/src/main/resources/music/translations/ro-rRO/missing_strings.xml @@ -1,272 +1,297 @@ - + - ReVanced Extended + Continue + Don\'t show again + "GmsCore does not have permission to run in the background. + +Follow the 'Don't kill my app!' guide for your device, and apply the instructions to your GmsCore installation. + +This is required for the app to work." + "GmsCore battery optimizations must be disabled to prevent issues. + +Tap on the continue button and disable battery optimizations." + Open website + Action needed + Enable cloud messaging to receive notifications. + Open GmsCore + GmsCore is not installed. Install it. + Replaces the domain that is blocked in some regions so that playlist thumbnails, channel avatars, etc. can be received. + Bypass image region restrictions + Change from in-app share sheet to system share sheet. + Change share sheet + Charts + Explore + Home + Library + Subscriptions + Select which page the app opens in. + Change start page + Invalid custom filter: %s. + Invalid custom playback speeds. Using default values. + Disables redirection to the next track when clicking the Dislike button. + Disable dislike redirection + Disable swipe to change tracks in the miniplayer. + Disable miniplayer gesture + Disable swipe to change tracks in the player. + Disable player gesture + Changes the player background color to black. + Enable black player background + Enables Cairo splash animation when the app starts up. + Enable Cairo splash animation + Includes the buffer in the debug log. + Enable debug buffer logging + Adds a next track button to the miniplayer. + Add miniplayer next button + Adds a previous track button to the miniplayer. + Add miniplayer previous button + Enables swipe down to dismiss miniplayer. + Enable swipe to dismiss miniplayer + "Adds a Trim silence switch to the playback speed flyout menu. + +Info: +• This feature is for podcasts. +• This feature is still in development, so it may be unstable." + Add Trim silence switch + Also enables Zen mode for podcasts. + Enable Zen mode in podcasts Restart to load the layout normally Refresh and restart - Account - Account menu filter - List of account menu names to filter, separated by new lines. - Action Bar - Hide like and dislike buttons - Hides the like and dislike buttons. It does not work in the old player layout. - Hide comment button - Hides comment button. - Hide add to playlist button - Hides add to playlist button. - Hide download button - Hides download button. - Hide share button - Hides share button. - Hide radio button - Hides start radio button. - Hides labels in action buttons. - Hide action button labels - Override download action button + Export settings to file + Failed to export settings. + Settings were successfully exported. + Import settings from file + Import / Export settings as text + Import failed: %s. + Reset + ReVanced Extended "Download button opens your external downloader. -• Only overrides the download action button in the player. -• Does not override the download button in the flyout menu or library." +• Only overrides the Download action button in the player. +• Does not override the Download button in the flyout menu or Library tab." + Override Download action button External downloader - Warning "%1$s is not installed. Please download %2$s from the website." - Ads - Hide fullscreen ads + Warning + Displays the optimization dialog for GMSCore at each application startup. + Show optimization dialog for GMSCore + List of account menu names to filter, separated by new lines. + Account menu filter + Hides the Save button. + Hide Save button + Hides the Comments button. + Hide Comments button + Hides the Download button. + Hide Download button + Hides the labels of the action buttons. + Hide action button labels + Hides the Like and Dislike buttons. It does not work in the old player layout. + Hide Like and Dislike buttons + Hides the Radio button. + Hide Radio button + Hides the Share button. + Hide Share button + Hides the Audio / Video toggle in the player. + Hide Audio / Video toggle + Hides the channel guidelines at the top of the comments section. + Hide channel guidelines + Hides the timestamp and emoji buttons when typing comments. + Hide timestamp and emoji buttons + Hides dark overlay that appears when double-tapping to seek. + Hide double-tap overlay filter + Hides the floating button in the Library tab. + Hide floating button + Hide 3-column component + Hide Add to queue menu + Hide Captions menu + Hide Delete playlist menu + Hide Dismiss queue menu + Hide Download menu + Hide Edit playlist menu + Hide Go to album menu + Hide Go to artist menu + Hide Go to episode menu + Hide Go to podcast menu + Hide Help & feedback menu + Hide Like and Dislike buttons + Hide Play next menu + Hide Quality menu + Hide Remove from library menu + Hide Remove from playlist menu + Hide Report menu + Hide Save episode for later menu + Hide Save to library menu + Hide Save to playlist menu + Hide Share menu + Hide Shuffle play menu + Hide Sleep timer menu + Hide Start radio menu + Hide Stats for nerds menu + Hide Subscribe / Unsubscribe menu + Hide View song credits menu + Fullscreen ads have been blocked. (DialogType: %s) + Fullscreen ads have been closed. Hides fullscreen ads. - Hide general ads + Hide fullscreen ads + "If it is enabled, fullscreen ads are closed through the Close button. +If it is disabled, fullscreen ads are blocked. (there may be side effects)" + Fullscreen ads are blocked. (there may be side effects) + Fullscreen ads are closed through the Close button. + Close fullscreen ads + Hides the Share button in the fullscreen player. + Hide fullscreen Share button Hides general ads. + Hide general ads + Hides the Explore button. + Hide Explore button + Hides the Home button. + Hide Home button + Hides the Library button. + Hide Library button + Hides the Samples button. + Hide Samples button + Hides the Upgrade button. + Hide Upgrade button + Hides the Notifications button in the toolbar. + Hide Notifications button + Hides the paid promotion label. Hide paid promotion label - Hides paid promotion label. - Hide premium promotion popups + Hides the playlist card shelf in the feed. + Hide playlist card shelf Hides premium promotion popups. - Hide premium renewal banner + Hide premium promotion popups Hides the premium renewal banner. - Flyout Menu - Add trim silence switch - "Adds 'Trim silence' switch to the playback speed flyout menu. - -Info: -• This feature is for podcasts. -• This feature is still in development, so it may be unstable." - Hide like and dislike button - Hide 3-column component - Hide add to queue menu - Hide captions menu - Hide delete playlist menu - Hide dismiss queue menu - Hide download menu - Hide edit playlist menu - Hide go to album menu - Hide go to artist menu - Hide go to episode menu - Hide go to podcast menu - Hide help & feedback menu - Hide play next menu - Hide quality menu - Hide remove from library menu - Hide remove from playlist menu - Hide report menu - Hide save episode for later menu - Hide save to library menu - Hide save to playlist menu - Hide share menu - Hide shuffle play menu - Hide sleep timer menu - Hide start radio menu - Hide stats for nerds menu - Hide subscribe / unsubscribe menu - Hide view song credit menu - Continue watching - Continues the video from the current time when switching to YouTube. - Watch on YouTube - Invalid video url. - Replace dismiss queue - Replaces \'Dismiss queue\' with \'Watch on YouTube\'. - Keep report in comments - Keeps the report menu in the comments section intact. - Replace report - Replaces \'Report\' with \'Playback speed\'. - General - Change start page - Select which page the app opens in. - Charts - Explore - Home - Library - Subscriptions - Disable dislike redirection - Disables redirection to the next track when clicking the dislike button. - Invalid custom filter: %s. - Hide playlist card shelf - Hides playlist card shelf in feed. - Hide samples shelf - Hides samples shelf in feed. - Hide floating button - Hides floating button in library. - Hide \'Tap to update\' button - Hides \'Tap to update\' button. - Hide notification button - Hides notification button in toolbar. + Hide premium renewal banner + Hides the promotion alert banner. + Hide promotion alert banner + Hides the Samples shelf in the feed. + Hide Samples shelf + List of settings menu names to filter, separated by new lines. + Settings menu filter + "Hide elements of the settings menu. +This hides not only the YT Music settings menu, but also the ReVanced Extended settings menu." + Hide settings menu + Hides the sound search button in the search bar. Hide sound search button - Hides sound search button in search bar. + Hides the Tap to update button. + Hide Tap to update button + Hides the voice search button in the search bar. Hide voice search button - Hides voice search button in search bar. - Restore old style library shelf - Returns the library tab to the old style. (Experimental) - Remove viewer discretion dialog - "Removes the viewer discretion dialog. -This does not bypass the age restriction. It just accepts it automatically." - Spoof app version - "Spoofs the client version to an older version. - -• This will change the appearance of the app, but unknown side effects may occur. -• If later disabled, the old UI may remain until the app data is cleared." - Spoof app version target - Select the spoof app version target. - 6.11.52 - Disable real-time lyrics + Account + Action Bar + Ads + Flyout Menu + General + Miscellaneous Navigation Bar - Hide home button - Hides the home button. - Hide samples button - Hides the samples button. - Hide explore button - Hides the explore button. - Hide library button - Hides the library button. - Hide upgrade button - Hides the upgrade button. Player - Enable black player background - Changes the player background color to black. - Enable miniplayer next button - Enables next button in the miniplayer. - Enable miniplayer previous button - Enables previous button in the miniplayer. - Enable swipe to dismiss miniplayer - Enables swipe down to dismiss miniplayer. - Enable zen mode in podcasts - Zen mode is also applied to podcasts. - Hide audio video switch toggle - Hides the audio video switch toggle in player. - Hide channel guidelines - Hides channel guidelines at the top of the comments section. - Hide timestamp and emoji buttons - Hides timestamp and emoji buttons when typing comments. - Hide fullscreen share button - Hides the share button in the fullscreen player. - Restore old comments popup panels - Returns the comments popup panels to the old style. - Restore old player background - Returns the player background to the old style. - Restore old player layout - "Returns the player layout to the old style. -Some features may not work properly in the old player layout." - "Replaces the cast button in the player with an 'Open music' button, which opens the official audio instead of the music video. (Experimental) - -Info: This feature does not work normally if any songs in the playlist cannot be played." - Already playing from the official music source. - Official music source is unavailable. + Return YouTube Dislike + SponsorBlock Video - Remember playback speed changes Remembers the last playback speed selected. - Remember video quality changes - Remembers the last video quality selected. - Invalid custom playback speeds. Using default values. + Remember playback speed changes + Show a toast when changing the default playback speed. + Show a toast Changing default speed to %s. + Remembers the last video quality selected. + Remember video quality changes + Show a toast when changing the default video quality. + Show a toast Changing default mobile data quality to %s. Failed to set quality. Changing default Wi-Fi quality to %s. - Return YouTube Dislike - Enable Return YouTube Dislike - Shows the dislike count of videos. - Show a toast if API is unavailable - Shows a toast if the Return YouTube Dislike API is unavailable. + "Removes the viewer discretion dialog. +This does not bypass the age restriction. It just accepts it automatically." + Remove viewer discretion dialog + Continues the video from the current time when switching to YouTube. + Continue watching + Replaces the Dismiss queue menu with the Watch on YouTube menu. + Replace Dismiss queue menu + Watch on YouTube + Invalid video url. + Keeps the Report menu in the comments section intact. + Keep Report in comments + Replaces the Report menu with the Playback speed menu. + Replace Report menu + Returns the comments popup panels to the old style. + Restore old comments popup panels + Returns the player background to the old style. + Restore old player background + "Returns the player layout to the old style. +Some features may not work properly in the old player layout." + Restore old player layout + Returns the Library tab to the old style. (Experimental) + Restore old style library shelf ReturnYouTubeDislike.com - Dislikes are temporarily unavailable (API timed out). - Dislikes are unavailable (status %d). + Shows the dislike count of videos. + Enable Return YouTube Dislike Dislikes are unavailable (client API limit reached). + Dislikes are unavailable (status %d). + Dislikes are temporarily unavailable (API timed out). Dislikes are unavailable (%s). - SponsorBlock - Enable SponsorBlock - SponsorBlock is a crowd-sourced system for skipping annoying parts of YouTube videos. - Show a toast if API is unavailable - Shows a toast if the SponsorBlock API is unavailable. - Show a toast when skipping automatically - Shows a toast when a segment is automatically skipped. + Shows a toast if the Return YouTube Dislike API is unavailable. + Show a toast if API is unavailable + Removes tracking query parameters from URLs when sharing links. + About + sponsor.ajay.app + Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms. Change API URL - The address SponsorBlock uses to make calls to the server. Do not change this unless you know what you\'re doing. - API URL reset. - API URL is invalid. API URL changed. + API URL is invalid. + API URL reset. + The address SponsorBlock uses to make calls to the server. Do not change this unless you know what you\'re doing. + Color changed. + Color: + Invalid color code. Color reset to default. + Color reset. Change segment behavior - Sponsor - Paid promotion, paid referrals, and direct advertisements. Not for self-promotion or free shout-outs to causes / creators / websites / products they like. - Unpaid / Self Promotion - Similar to \'Sponsor\' except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with. + Enable SponsorBlock + SponsorBlock is a crowd-sourced system for skipping annoying parts of YouTube videos. + Reset color + Filler Tangent / Jokes + Tangential scenes added only for filler or humor that are not required to understand the main content of the video. Does not include segments providing context or background details. Interaction Reminder (Subscribe) 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. Intermission / Intro Animation An interval without actual content. Could be a pause, static frame, or repeating animation. Does not include transitions containing information. + Music: Non-Music Section + Only for use in music videos. Sections of music videos without music, that aren\'t already covered by another category. Endcards / Credits Credits or when the YouTube endcards appear. Not for conclusions with information. Preview / Recap / Hook Collection of clips that show what is coming up or what happened in the video or in other videos of a series, where all information is repeated elsewhere. - Filler Tangent / Jokes - Tangential scenes added only for filler or humor that are not required to understand the main content of the video. Does not include segments providing context or background details. - Music: Non-Music Section - Only for use in music videos. Sections of music videos without music, that aren\'t already covered by another category. - Skipped sponsor. - Skipped self promotion. + Unpaid / Self Promotion + Similar to Sponsor, except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with. + Sponsor + Paid promotion, paid referrals, and direct advertisements. Not for self-promotion or free shout-outs to causes / creators / websites / products they like. + Skip automatically + Disable + Skipped filler. Skipped annoying reminder. Skipped intro. - Skipped intermission. Skipped intermission. + Skipped intermission. + Skipped multiple segments. + Skipped a non-music section. Skipped outro. Skipped preview. - Skipped preview. Skipped recap. - Skipped filler. - Skipped a non-music section. - Skipped multiple segments. - Skip automatically - Disable + Skipped preview. + Skipped self promotion. + Skipped sponsor. SponsorBlock is temporarily unavailable. SponsorBlock is temporarily unavailable (status %d). SponsorBlock is temporarily unavailable (API timed out). - Color: - Color changed. - Color reset. - Invalid color code. Color reset to default. - Reset color - Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms. - About - sponsor.ajay.app - Miscellaneous - Enable debug buffer logging - Includes the buffer in the debug log. - Open GmsCore - Enable cloud messaging to receive notifications. - Show optimization dialog for GMSCore - Displays the optimization dialog for GMSCore at each application startup. - Don\'t show again - GmsCore is not installed. Install it. - Action needed - "GmsCore does not have permission to run in the background. - -Follow the 'Don't kill my app' guide for your phone, and apply the instructions to your MicroG installation. - -This is required for the app to work." - Open website - "GmsCore battery optimizations must be disabled to prevent issues. + Show a toast if API is unavailable + Shows a toast if the SponsorBlock API is unavailable. + Show a toast when skipping automatically + Shows a toast when a segment is automatically skipped. + "Spoofs the client version to an older version. -Tap on the continue button and disable battery optimizations." - Continue - Removes tracking query parameters from URLs when sharing links. - Export settings to file - Import settings from file - Import / Export settings as text - Failed to export settings. - Settings were successfully exported. - Import failed: %s. - Reset +• This will change the appearance of the app, but unknown side effects may occur. +• If later disabled, the old UI may remain until the app data is cleared." + 6.11.52 - Disable real-time lyrics + Select the spoof app version target. + Spoof app version target + Spoof app version diff --git a/src/main/resources/music/translations/ro-rRO/strings.xml b/src/main/resources/music/translations/ro-rRO/strings.xml index 9ca46700b..ce6282291 100644 --- a/src/main/resources/music/translations/ro-rRO/strings.xml +++ b/src/main/resources/music/translations/ro-rRO/strings.xml @@ -72,7 +72,6 @@ Probleme cunoscute: Buton compact apreciez În loc de numărul de dezaprobări, se afișează procentul de dezaprobări. Dislike-uri ca procentaj - Ascuns Curăță link-urile de partajare Setări copiate în clipboard. 4.27.53 - Dezactivare mod radio în regiunile canadiene diff --git a/src/main/resources/music/translations/ru-rRU/missing_strings.xml b/src/main/resources/music/translations/ru-rRU/missing_strings.xml index a7a3d8b3f..b0d1db62d 100644 --- a/src/main/resources/music/translations/ru-rRU/missing_strings.xml +++ b/src/main/resources/music/translations/ru-rRU/missing_strings.xml @@ -1,8 +1,8 @@ - + - Enable black player background - Changes the player background color to black. - Show optimization dialog for GMSCore - Displays the optimization dialog for GMSCore at each application startup. Don\'t show again + Displays the optimization dialog for GMSCore at each application startup. + Show optimization dialog for GMSCore + Hides the promotion alert banner. + Hide promotion alert banner diff --git a/src/main/resources/music/translations/ru-rRU/strings.xml b/src/main/resources/music/translations/ru-rRU/strings.xml index 449f5afc5..b9ab034a6 100644 --- a/src/main/resources/music/translations/ru-rRU/strings.xml +++ b/src/main/resources/music/translations/ru-rRU/strings.xml @@ -14,8 +14,6 @@ Включите \"Облачные уведомления\" для получения уведомлений. Открыть GmsCore GmsCore не установлен. Установите его. - Домен для получения картинок.\nВажно: Вводите только название домена без префикса \"https\:\/\/\". - Альтернативный домен Заменяет заблокированный в некоторых регионах домен, чтобы можно было получать миниатюры плейлистов, аватары каналов и т. д. Обойти ограничения изображений по региону Меняет встроенное диалоговое окно \"Поделиться\" на системное. @@ -306,7 +304,6 @@ Отметки \"Не нравится\" недоступны (%s). Отображает всплывающее уведомление, когда API Return YouTube Dislike недоступен. Уведомлять, когда API недоступен - Скрыты Убирает параметры отслеживания запросов из адресов при отправке ссылки. Подчищать ссылки Об интеграции @@ -373,6 +370,4 @@ Выберите целевую версию приложения для подмены. Целевая версия приложения при подмене Подмена версии приложения - Заменяет домен, заблокированный в некоторых регионах, чтобы можно было получать миниатюры плейлистов, аватары каналов и т.д. - Использовать альтернативный домен картинок diff --git a/src/main/resources/music/translations/tr-rTR/missing_strings.xml b/src/main/resources/music/translations/tr-rTR/missing_strings.xml index 98a6ee57e..048d1f1a1 100644 --- a/src/main/resources/music/translations/tr-rTR/missing_strings.xml +++ b/src/main/resources/music/translations/tr-rTR/missing_strings.xml @@ -1,6 +1,14 @@ - + - Show optimization dialog for GMSCore - Displays the optimization dialog for GMSCore at each application startup. Don\'t show again + Change from in-app share sheet to system share sheet. + Change share sheet + Displays the optimization dialog for GMSCore at each application startup. + Show optimization dialog for GMSCore + Hides the promotion alert banner. + Hide promotion alert banner + Show a toast when changing the default playback speed. + Show a toast + Show a toast when changing the default video quality. + Show a toast diff --git a/src/main/resources/music/translations/tr-rTR/strings.xml b/src/main/resources/music/translations/tr-rTR/strings.xml index 6fec1bf20..66244f048 100644 --- a/src/main/resources/music/translations/tr-rTR/strings.xml +++ b/src/main/resources/music/translations/tr-rTR/strings.xml @@ -295,7 +295,6 @@ Eski oynatıcı düzeninde bazı ayarlar düzgün çalışmayabilir." Beğenmemeler mevcut değil (%s). Return YouTube Dislike API mevcut değilse uyarı gösterir. API mevcut değilse bir uyarı göster - Gizlendi Bağlantıları paylaşırken, tracking query parametrelerini URL\'lerden kaldırır. Paylaşılan bağlantıları sterilize edin Hakkında diff --git a/src/main/resources/music/translations/uk-rUA/missing_strings.xml b/src/main/resources/music/translations/uk-rUA/missing_strings.xml index 98a6ee57e..b0d1db62d 100644 --- a/src/main/resources/music/translations/uk-rUA/missing_strings.xml +++ b/src/main/resources/music/translations/uk-rUA/missing_strings.xml @@ -1,6 +1,8 @@ - + - Show optimization dialog for GMSCore - Displays the optimization dialog for GMSCore at each application startup. Don\'t show again + Displays the optimization dialog for GMSCore at each application startup. + Show optimization dialog for GMSCore + Hides the promotion alert banner. + Hide promotion alert banner diff --git a/src/main/resources/music/translations/uk-rUA/strings.xml b/src/main/resources/music/translations/uk-rUA/strings.xml index a2a9c5c82..573c78ff2 100644 --- a/src/main/resources/music/translations/uk-rUA/strings.xml +++ b/src/main/resources/music/translations/uk-rUA/strings.xml @@ -304,7 +304,6 @@ Дизлайки недоступні (%s). Показує тост, якщо API ReturnYouTubeDislike не доступний. Показувати тост, якщо API не доступний - Приховано Видаляє параметри запиту відстеження з URL-адрес під час обміну посиланнями. Обробляти поширення посилань Про інтеграцію diff --git a/src/main/resources/music/translations/vi-rVN/missing_strings.xml b/src/main/resources/music/translations/vi-rVN/missing_strings.xml index 91d772bef..b0d1db62d 100644 --- a/src/main/resources/music/translations/vi-rVN/missing_strings.xml +++ b/src/main/resources/music/translations/vi-rVN/missing_strings.xml @@ -1,216 +1,8 @@ - + - ReVanced Extended - Restart to load the layout normally - Refresh and restart - Account - Account menu filter - List of account menu names to filter, separated by new lines. - Action Bar - Override download action button - "Download button opens your external downloader. - -• Only overrides the download action button in the player. -• Does not override the download button in the flyout menu or library." - External downloader - Warning - "%1$s is not installed. -Please download %2$s from the website." - Ads - Hide fullscreen ads - Hides fullscreen ads. - Hide paid promotion label - Hides paid promotion label. - Flyout Menu - Add trim silence switch - "Adds 'Trim silence' switch to the playback speed flyout menu. - -Info: -• This feature is for podcasts. -• This feature is still in development, so it may be unstable." - Hide like and dislike button - Hide 3-column component - Hide add to queue menu - Hide captions menu - Hide delete playlist menu - Hide dismiss queue menu - Hide download menu - Hide edit playlist menu - Hide go to album menu - Hide go to artist menu - Hide go to episode menu - Hide go to podcast menu - Hide help & feedback menu - Hide play next menu - Hide quality menu - Hide remove from library menu - Hide remove from playlist menu - Hide report menu - Hide save episode for later menu - Hide save to library menu - Hide save to playlist menu - Hide share menu - Hide shuffle play menu - Hide sleep timer menu - Hide start radio menu - Hide stats for nerds menu - Hide subscribe / unsubscribe menu - Hide view song credit menu - Continue watching - Continues the video from the current time when switching to YouTube. - Watch on YouTube - Invalid video url. - Replace dismiss queue - Replaces \'Dismiss queue\' with \'Watch on YouTube\'. - Keep report in comments - Keeps the report menu in the comments section intact. - Replace report - Replaces \'Report\' with \'Playback speed\'. - General - Disable dislike redirection - Disables redirection to the next track when clicking the dislike button. - Invalid custom filter: %s. - Hide playlist card shelf - Hides playlist card shelf in feed. - Hide samples shelf - Hides samples shelf in feed. - Hide floating button - Hides floating button in library. - Hide \'Tap to update\' button - Hides \'Tap to update\' button. - Hide notification button - Hides notification button in toolbar. - Hide sound search button - Hides sound search button in search bar. - Hide voice search button - Hides voice search button in search bar. - Restore old style library shelf - Returns the library tab to the old style. (Experimental) - 6.11.52 - Disable real-time lyrics - Navigation Bar - Hide home button - Hides the home button. - Hide samples button - Hides the samples button. - Hide explore button - Hides the explore button. - Hide library button - Hides the library button. - Hide upgrade button - Hides the upgrade button. - Player - Enable black player background - Changes the player background color to black. - Enable miniplayer next button - Enables next button in the miniplayer. - Enable miniplayer previous button - Enables previous button in the miniplayer. - Enable swipe to dismiss miniplayer - Enables swipe down to dismiss miniplayer. - Enable zen mode in podcasts - Zen mode is also applied to podcasts. - Hide audio video switch toggle - Hides the audio video switch toggle in player. - Hide channel guidelines - Hides channel guidelines at the top of the comments section. - Hide timestamp and emoji buttons - Hides timestamp and emoji buttons when typing comments. - Restore old comments popup panels - Returns the comments popup panels to the old style. - Restore old player background - Returns the player background to the old style. - Restore old player layout - "Returns the player layout to the old style. -Some features may not work properly in the old player layout." - Already playing from the official music source. - Official music source is unavailable. - Video - Remember playback speed changes - Remembers the last playback speed selected. - Remember video quality changes - Remembers the last video quality selected. - Invalid custom playback speeds. Using default values. - Changing default speed to %s. - Changing default mobile data quality to %s. - Failed to set quality. - Changing default Wi-Fi quality to %s. - Return YouTube Dislike - Enable Return YouTube Dislike - ReturnYouTubeDislike.com - SponsorBlock - Enable SponsorBlock - SponsorBlock is a crowd-sourced system for skipping annoying parts of YouTube videos. - Show a toast if API is unavailable - Shows a toast if the SponsorBlock API is unavailable. - Show a toast when skipping automatically - Shows a toast when a segment is automatically skipped. - Change API URL - The address SponsorBlock uses to make calls to the server. Do not change this unless you know what you\'re doing. - API URL reset. - API URL is invalid. - API URL changed. - Change segment behavior - Sponsor - Paid promotion, paid referrals, and direct advertisements. Not for self-promotion or free shout-outs to causes / creators / websites / products they like. - Unpaid / Self Promotion - Similar to \'Sponsor\' except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with. - Interaction Reminder (Subscribe) - 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. - Intermission / Intro Animation - An interval without actual content. Could be a pause, static frame, or repeating animation. Does not include transitions containing information. - Endcards / Credits - Credits or when the YouTube endcards appear. Not for conclusions with information. - Preview / Recap / Hook - Collection of clips that show what is coming up or what happened in the video or in other videos of a series, where all information is repeated elsewhere. - Filler Tangent / Jokes - Tangential scenes added only for filler or humor that are not required to understand the main content of the video. Does not include segments providing context or background details. - Music: Non-Music Section - Only for use in music videos. Sections of music videos without music, that aren\'t already covered by another category. - Skipped sponsor. - Skipped self promotion. - Skipped annoying reminder. - Skipped intro. - Skipped intermission. - Skipped intermission. - Skipped outro. - Skipped preview. - Skipped preview. - Skipped recap. - Skipped filler. - Skipped a non-music section. - Skipped multiple segments. - Skip automatically - Disable - SponsorBlock is temporarily unavailable. - SponsorBlock is temporarily unavailable (status %d). - SponsorBlock is temporarily unavailable (API timed out). - Color: - Color changed. - Color reset. - Invalid color code. Color reset to default. - Reset color - Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms. - About - sponsor.ajay.app - Miscellaneous - Enable debug buffer logging - Includes the buffer in the debug log. - Open GmsCore - Enable cloud messaging to receive notifications. - Show optimization dialog for GMSCore - Displays the optimization dialog for GMSCore at each application startup. Don\'t show again - GmsCore is not installed. Install it. - Action needed - "GmsCore does not have permission to run in the background. - -Follow the 'Don't kill my app' guide for your phone, and apply the instructions to your MicroG installation. - -This is required for the app to work." - Open website - "GmsCore battery optimizations must be disabled to prevent issues. - -Tap on the continue button and disable battery optimizations." - Continue - Reset + Displays the optimization dialog for GMSCore at each application startup. + Show optimization dialog for GMSCore + Hides the promotion alert banner. + Hide promotion alert banner diff --git a/src/main/resources/music/translations/vi-rVN/strings.xml b/src/main/resources/music/translations/vi-rVN/strings.xml index 63d79da72..e1d5b11ac 100644 --- a/src/main/resources/music/translations/vi-rVN/strings.xml +++ b/src/main/resources/music/translations/vi-rVN/strings.xml @@ -298,7 +298,6 @@ Khi bật không chỉ ẩn menu Cài đặt YT Music, mà cả menu Cài đặt Số lượt không thích không khả dụng (%s). Hiển thị thông báo ngắn nếu API ReturnYouTubeDislike không khả dụng. Thông báo ngắn nếu API không khả dụng - Ẩn Loại bỏ các tham số truy vấn theo dõi khỏi URL khi chia sẻ liên kết. Liên kết sạch khi chia sẻ Giới thiệu diff --git a/src/main/resources/music/translations/zh-rCN/missing_strings.xml b/src/main/resources/music/translations/zh-rCN/missing_strings.xml index 91d772bef..039b63471 100644 --- a/src/main/resources/music/translations/zh-rCN/missing_strings.xml +++ b/src/main/resources/music/translations/zh-rCN/missing_strings.xml @@ -1,216 +1,121 @@ - + - ReVanced Extended - Restart to load the layout normally - Refresh and restart - Account - Account menu filter - List of account menu names to filter, separated by new lines. - Action Bar - Override download action button - "Download button opens your external downloader. + Continue + Don\'t show again + "GmsCore does not have permission to run in the background. -• Only overrides the download action button in the player. -• Does not override the download button in the flyout menu or library." - External downloader - Warning - "%1$s is not installed. -Please download %2$s from the website." - Ads - Hide fullscreen ads - Hides fullscreen ads. - Hide paid promotion label - Hides paid promotion label. - Flyout Menu - Add trim silence switch - "Adds 'Trim silence' switch to the playback speed flyout menu. +Follow the 'Don't kill my app!' guide for your device, and apply the instructions to your GmsCore installation. -Info: -• This feature is for podcasts. -• This feature is still in development, so it may be unstable." - Hide like and dislike button - Hide 3-column component - Hide add to queue menu - Hide captions menu - Hide delete playlist menu - Hide dismiss queue menu - Hide download menu - Hide edit playlist menu - Hide go to album menu - Hide go to artist menu - Hide go to episode menu - Hide go to podcast menu - Hide help & feedback menu - Hide play next menu - Hide quality menu - Hide remove from library menu - Hide remove from playlist menu - Hide report menu - Hide save episode for later menu - Hide save to library menu - Hide save to playlist menu - Hide share menu - Hide shuffle play menu - Hide sleep timer menu - Hide start radio menu - Hide stats for nerds menu - Hide subscribe / unsubscribe menu - Hide view song credit menu - Continue watching - Continues the video from the current time when switching to YouTube. - Watch on YouTube - Invalid video url. - Replace dismiss queue - Replaces \'Dismiss queue\' with \'Watch on YouTube\'. - Keep report in comments - Keeps the report menu in the comments section intact. - Replace report - Replaces \'Report\' with \'Playback speed\'. - General - Disable dislike redirection - Disables redirection to the next track when clicking the dislike button. - Invalid custom filter: %s. - Hide playlist card shelf - Hides playlist card shelf in feed. - Hide samples shelf - Hides samples shelf in feed. - Hide floating button - Hides floating button in library. - Hide \'Tap to update\' button - Hides \'Tap to update\' button. - Hide notification button - Hides notification button in toolbar. - Hide sound search button - Hides sound search button in search bar. - Hide voice search button - Hides voice search button in search bar. - Restore old style library shelf - Returns the library tab to the old style. (Experimental) - 6.11.52 - Disable real-time lyrics - Navigation Bar - Hide home button - Hides the home button. - Hide samples button - Hides the samples button. - Hide explore button - Hides the explore button. - Hide library button - Hides the library button. - Hide upgrade button - Hides the upgrade button. - Player - Enable black player background - Changes the player background color to black. - Enable miniplayer next button - Enables next button in the miniplayer. - Enable miniplayer previous button - Enables previous button in the miniplayer. - Enable swipe to dismiss miniplayer - Enables swipe down to dismiss miniplayer. - Enable zen mode in podcasts - Zen mode is also applied to podcasts. - Hide audio video switch toggle - Hides the audio video switch toggle in player. - Hide channel guidelines - Hides channel guidelines at the top of the comments section. - Hide timestamp and emoji buttons - Hides timestamp and emoji buttons when typing comments. - Restore old comments popup panels - Returns the comments popup panels to the old style. - Restore old player background - Returns the player background to the old style. - Restore old player layout - "Returns the player layout to the old style. -Some features may not work properly in the old player layout." - Already playing from the official music source. - Official music source is unavailable. +This is required for the app to work." + "GmsCore battery optimizations must be disabled to prevent issues. + +Tap on the continue button and disable battery optimizations." + Open website + Action needed + Enable cloud messaging to receive notifications. + Open GmsCore + GmsCore is not installed. Install it. + Replaces the domain that is blocked in some regions so that playlist thumbnails, channel avatars, etc. can be received. + Bypass image region restrictions + Change from in-app share sheet to system share sheet. + Change share sheet + Invalid custom playback speeds. Using default values. + Disable swipe to change tracks in the miniplayer. + Disable miniplayer gesture + Disable swipe to change tracks in the player. + Disable player gesture + Enables Cairo splash animation when the app starts up. + Enable Cairo splash animation + Includes the buffer in the debug log. + Enable debug buffer logging + Reset + Displays the optimization dialog for GMSCore at each application startup. + Show optimization dialog for GMSCore + Hides dark overlay that appears when double-tapping to seek. + Hides the promotion alert banner. + Hide promotion alert banner + List of settings menu names to filter, separated by new lines. + Settings menu filter + "Hide elements of the settings menu. +This hides not only the YT Music settings menu, but also the ReVanced Extended settings menu." + Hide settings menu + Miscellaneous + Return YouTube Dislike + SponsorBlock Video - Remember playback speed changes Remembers the last playback speed selected. - Remember video quality changes - Remembers the last video quality selected. - Invalid custom playback speeds. Using default values. + Remember playback speed changes + Show a toast when changing the default playback speed. + Show a toast Changing default speed to %s. + Remembers the last video quality selected. + Remember video quality changes + Show a toast when changing the default video quality. + Show a toast Changing default mobile data quality to %s. Failed to set quality. Changing default Wi-Fi quality to %s. - Return YouTube Dislike - Enable Return YouTube Dislike + Returns the comments popup panels to the old style. + Restore old comments popup panels + Returns the player background to the old style. + Restore old player background + "Returns the player layout to the old style. +Some features may not work properly in the old player layout." + Restore old player layout ReturnYouTubeDislike.com - SponsorBlock - Enable SponsorBlock - SponsorBlock is a crowd-sourced system for skipping annoying parts of YouTube videos. - Show a toast if API is unavailable - Shows a toast if the SponsorBlock API is unavailable. - Show a toast when skipping automatically - Shows a toast when a segment is automatically skipped. + Enable Return YouTube Dislike + About + sponsor.ajay.app + Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms. Change API URL - The address SponsorBlock uses to make calls to the server. Do not change this unless you know what you\'re doing. - API URL reset. - API URL is invalid. API URL changed. + API URL is invalid. + API URL reset. + The address SponsorBlock uses to make calls to the server. Do not change this unless you know what you\'re doing. + Color changed. + Color: + Invalid color code. Color reset to default. + Color reset. Change segment behavior - Sponsor - Paid promotion, paid referrals, and direct advertisements. Not for self-promotion or free shout-outs to causes / creators / websites / products they like. - Unpaid / Self Promotion - Similar to \'Sponsor\' except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with. + Enable SponsorBlock + SponsorBlock is a crowd-sourced system for skipping annoying parts of YouTube videos. + Reset color + Filler Tangent / Jokes + Tangential scenes added only for filler or humor that are not required to understand the main content of the video. Does not include segments providing context or background details. Interaction Reminder (Subscribe) 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. Intermission / Intro Animation An interval without actual content. Could be a pause, static frame, or repeating animation. Does not include transitions containing information. + Music: Non-Music Section + Only for use in music videos. Sections of music videos without music, that aren\'t already covered by another category. Endcards / Credits Credits or when the YouTube endcards appear. Not for conclusions with information. Preview / Recap / Hook Collection of clips that show what is coming up or what happened in the video or in other videos of a series, where all information is repeated elsewhere. - Filler Tangent / Jokes - Tangential scenes added only for filler or humor that are not required to understand the main content of the video. Does not include segments providing context or background details. - Music: Non-Music Section - Only for use in music videos. Sections of music videos without music, that aren\'t already covered by another category. - Skipped sponsor. - Skipped self promotion. + Unpaid / Self Promotion + Similar to Sponsor, except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with. + Sponsor + Paid promotion, paid referrals, and direct advertisements. Not for self-promotion or free shout-outs to causes / creators / websites / products they like. + Skip automatically + Disable + Skipped filler. Skipped annoying reminder. Skipped intro. - Skipped intermission. Skipped intermission. + Skipped intermission. + Skipped multiple segments. + Skipped a non-music section. Skipped outro. Skipped preview. - Skipped preview. Skipped recap. - Skipped filler. - Skipped a non-music section. - Skipped multiple segments. - Skip automatically - Disable + Skipped preview. + Skipped self promotion. + Skipped sponsor. SponsorBlock is temporarily unavailable. SponsorBlock is temporarily unavailable (status %d). SponsorBlock is temporarily unavailable (API timed out). - Color: - Color changed. - Color reset. - Invalid color code. Color reset to default. - Reset color - Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms. - About - sponsor.ajay.app - Miscellaneous - Enable debug buffer logging - Includes the buffer in the debug log. - Open GmsCore - Enable cloud messaging to receive notifications. - Show optimization dialog for GMSCore - Displays the optimization dialog for GMSCore at each application startup. - Don\'t show again - GmsCore is not installed. Install it. - Action needed - "GmsCore does not have permission to run in the background. - -Follow the 'Don't kill my app' guide for your phone, and apply the instructions to your MicroG installation. - -This is required for the app to work." - Open website - "GmsCore battery optimizations must be disabled to prevent issues. - -Tap on the continue button and disable battery optimizations." - Continue - Reset + Show a toast if API is unavailable + Shows a toast if the SponsorBlock API is unavailable. + Show a toast when skipping automatically + Shows a toast when a segment is automatically skipped. diff --git a/src/main/resources/music/translations/zh-rCN/strings.xml b/src/main/resources/music/translations/zh-rCN/strings.xml index e5c4d03cb..7d02c26a4 100644 --- a/src/main/resources/music/translations/zh-rCN/strings.xml +++ b/src/main/resources/music/translations/zh-rCN/strings.xml @@ -241,7 +241,6 @@ 点踩数不可用(%s) 当 Return YouTube Dislike API 不可用时显示提示 当 API 不可用时显示提示 - 隐藏 分享链接时删除跟踪查询参数 清理分享链接 配置已复制到剪贴板 diff --git a/src/main/resources/music/translations/zh-rTW/missing_strings.xml b/src/main/resources/music/translations/zh-rTW/missing_strings.xml index 892043f1a..cb951700e 100644 --- a/src/main/resources/music/translations/zh-rTW/missing_strings.xml +++ b/src/main/resources/music/translations/zh-rTW/missing_strings.xml @@ -1,48 +1,78 @@ - + - Skipped annoying reminder. - Skipped intro. - Skipped intermission. - Skipped intermission. - Skipped outro. - Skipped preview. - Skipped preview. - Skipped recap. - Skipped filler. - Skipped a non-music section. - Skipped multiple segments. - Skip automatically - Disable - SponsorBlock is temporarily unavailable. - SponsorBlock is temporarily unavailable (status %d). - SponsorBlock is temporarily unavailable (API timed out). - Color: - Color changed. - Color reset. - Invalid color code. Color reset to default. - Reset color - Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms. - About - sponsor.ajay.app - Miscellaneous - Enable debug buffer logging - Includes the buffer in the debug log. - Open GmsCore - Enable cloud messaging to receive notifications. - Show optimization dialog for GMSCore - Displays the optimization dialog for GMSCore at each application startup. + Continue Don\'t show again - GmsCore is not installed. Install it. - Action needed "GmsCore does not have permission to run in the background. -Follow the 'Don't kill my app' guide for your phone, and apply the instructions to your MicroG installation. +Follow the 'Don't kill my app!' guide for your device, and apply the instructions to your GmsCore installation. This is required for the app to work." - Open website "GmsCore battery optimizations must be disabled to prevent issues. Tap on the continue button and disable battery optimizations." - Continue + Open website + Action needed + Enable cloud messaging to receive notifications. + Open GmsCore + GmsCore is not installed. Install it. + Replaces the domain that is blocked in some regions so that playlist thumbnails, channel avatars, etc. can be received. + Bypass image region restrictions + Change from in-app share sheet to system share sheet. + Change share sheet + Disable swipe to change tracks in the miniplayer. + Disable miniplayer gesture + Disable swipe to change tracks in the player. + Disable player gesture + Enables Cairo splash animation when the app starts up. + Enable Cairo splash animation + Includes the buffer in the debug log. + Enable debug buffer logging Reset + Displays the optimization dialog for GMSCore at each application startup. + Show optimization dialog for GMSCore + Hides dark overlay that appears when double-tapping to seek. + Hide double-tap overlay filter + Fullscreen ads have been blocked. (DialogType: %s) + Fullscreen ads have been closed. + "If it is enabled, fullscreen ads are closed through the Close button. +If it is disabled, fullscreen ads are blocked. (there may be side effects)" + Fullscreen ads are blocked. (there may be side effects) + Fullscreen ads are closed through the Close button. + Close fullscreen ads + Hides the promotion alert banner. + Hide promotion alert banner + List of settings menu names to filter, separated by new lines. + Settings menu filter + "Hide elements of the settings menu. +This hides not only the YT Music settings menu, but also the ReVanced Extended settings menu." + Hide settings menu + Miscellaneous + Show a toast when changing the default playback speed. + Show a toast + Show a toast when changing the default video quality. + Show a toast + About + sponsor.ajay.app + Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms. + Color changed. + Color: + Invalid color code. Color reset to default. + Color reset. + Reset color + Skip automatically + Disable + Skipped filler. + Skipped annoying reminder. + Skipped intro. + Skipped intermission. + Skipped intermission. + Skipped multiple segments. + Skipped a non-music section. + Skipped outro. + Skipped preview. + Skipped recap. + Skipped preview. + SponsorBlock is temporarily unavailable. + SponsorBlock is temporarily unavailable (status %d). + SponsorBlock is temporarily unavailable (API timed out). diff --git a/src/main/resources/music/translations/zh-rTW/strings.xml b/src/main/resources/music/translations/zh-rTW/strings.xml index d575db6be..78a9ba431 100644 --- a/src/main/resources/music/translations/zh-rTW/strings.xml +++ b/src/main/resources/music/translations/zh-rTW/strings.xml @@ -254,7 +254,6 @@ 倒讚數無法使用 (狀態 %s) 當 Return YouTube Dislike API 無法使用時顯示提示訊息 當API無法使用時顯示提示訊息 - 隱藏 分享連結時從 URL 中刪除追蹤參數。 清理分享連結 更改 API 網址 diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index 2d5db6c93..ecefbfa27 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -129,9 +129,7 @@ Tap here to learn more about DeArrow." Ambient mode is disabled. Disable Ambient mode Forced auto audio tracks are enabled. - "Forced auto audio tracks are disabled. - -Limitation: This setting does not apply to Shorts." + Forced auto audio tracks are disabled. Disable forced auto audio tracks Forced auto captions are enabled. Forced auto captions are disabled. @@ -139,9 +137,21 @@ Limitation: This setting does not apply to Shorts." Auto player popup panels are enabled. Auto player popup panels are disabled. Disable player popup panels + "Auto switch mix playlists is enabled when autoplay is turned on. + +Autoplay can be changed in YouTube settings: +Settings → Autoplay → Autoplay next video" + Auto switch mix playlists is disabled. + Disable switch mix playlists + Enabling this feature will disable automatic switching to YouTube Mix when playing music while autoplay is turned on. Default playback speed is enabled for live streams. Default playback speed is disabled for live streams. Disable playback speed for live streams + Default playback speed is enabled for music. + "Default playback speed is disabled for music. + +Limitation: This setting may not apply to videos that do not include the 'Listen on YouTube Music' banner." + Disable playback speed for music Engagement panel is enabled. Engagement panel is disabled. Disable engagement panel @@ -604,6 +614,9 @@ Words with uppercase letters in the middle must be entered with the casing (ie: Collapse button is shown. Collapse button is hidden. Hide collapse button + Ambient mode menu is shown. + Ambient mode menu is hidden. + Hide Ambient mode menu Audio track menu is shown. Audio track menu is hidden. Hide Audio track menu @@ -646,6 +659,7 @@ Words with uppercase letters in the middle must be entered with the casing (ie: Report menu is shown. Report menu is hidden. Hide Report menu + Hide Sleep timer menu Stable volume menu is shown. Stable volume menu is hidden. Hide Stable volume menu @@ -676,6 +690,9 @@ Words with uppercase letters in the middle must be entered with the casing (ie: This changes the size of the comments section, so it is impossible to open a live chat replay in the comments section. This does not change the size of the comments section, so it is possible to open the live chat replay in the comments section. Hide preview comment type + Promotion alert banner is shown. + Promotion alert banner is hidden. + Hide promotion alert banner Comments button is shown. Comments button is hidden. Hide Comments button @@ -1028,8 +1045,8 @@ Tap and hold to undo." "Tap to open whitelist dialog. Tap and hold to open whitelist setting dialog. Show whitelist button - Native playlist download button opens the native in-app downloader. - Native playlist download button opens your external downloader. + If shown, the native playlist download button opens the native in-app downloader. + Native playlist download button is always shown, and in public playlists, it opens your external downloader. Override playlist download button Native video download button opens the native in-app downloader. Native video download button opens your external downloader. @@ -1190,7 +1207,6 @@ Limitation: Dislikes may not appear if the user is not logged in or in incognito Toast is not shown if Return YouTube Dislike is unavailable. Toast is shown if Return YouTube Dislike is unavailable. Show a toast if API is unavailable - Hidden Removes tracking query parameters from the URLs when sharing links. Sanitize sharing links About diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml index 217b4af1a..f9c8009e2 100644 --- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml +++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml @@ -136,6 +136,7 @@ + @@ -339,6 +340,7 @@ @@ -445,6 +447,7 @@