Skip to content

Commit a272962

Browse files
LisoUseInAIKyriosoSumAtrIX
andauthored
feat(YouTube - Alternative thumbnails): Selectively enable for home / subscription / search (#2926)
Co-authored-by: oSumAtrIX <[email protected]>
1 parent 77a9a56 commit a272962

File tree

3 files changed

+68
-33
lines changed

3 files changed

+68
-33
lines changed

src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.reques
2222
import app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.request.callback.OnResponseStartedFingerprint
2323
import app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.request.callback.OnSucceededFingerprint
2424
import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch
25+
import app.revanced.patches.youtube.misc.navigation.NavigationBarHookPatch
26+
import app.revanced.patches.youtube.misc.playertype.PlayerTypeHookPatch
2527
import app.revanced.patches.youtube.misc.settings.SettingsPatch
2628
import app.revanced.util.resultOrThrow
2729
import com.android.tools.smali.dexlib2.AccessFlags
@@ -38,6 +40,8 @@ import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
3840
IntegrationsPatch::class,
3941
SettingsPatch::class,
4042
AddResourcesPatch::class,
43+
NavigationBarHookPatch::class,
44+
PlayerTypeHookPatch::class
4145
],
4246
compatiblePackages = [
4347
CompatiblePackage(
@@ -127,25 +131,45 @@ object AlternativeThumbnailsPatch : BytecodePatch(
127131
override fun execute(context: BytecodeContext) {
128132
AddResourcesPatch(this::class)
129133

134+
val entries = "revanced_alt_thumbnail_options_entries"
135+
val values = "revanced_alt_thumbnail_options_entry_values"
130136
SettingsPatch.PreferenceScreen.ALTERNATIVE_THUMBNAILS.addPreferences(
131-
NonInteractivePreference(
132-
"revanced_alt_thumbnail_about",
133-
null, // Summary is dynamically updated based on the current settings.
134-
tag = "app.revanced.integrations.youtube.settings.preference.AlternativeThumbnailsStatusPreference",
137+
ListPreference("revanced_alt_thumbnail_home",
138+
summaryKey = null,
139+
entriesKey = entries,
140+
entryValuesKey = values
141+
),
142+
ListPreference("revanced_alt_thumbnail_subscription",
143+
summaryKey = null,
144+
entriesKey = entries,
145+
entryValuesKey = values
146+
),
147+
ListPreference("revanced_alt_thumbnail_library",
148+
summaryKey = null,
149+
entriesKey = entries,
150+
entryValuesKey = values
151+
),
152+
ListPreference("revanced_alt_thumbnail_player",
153+
summaryKey = null,
154+
entriesKey = entries,
155+
entryValuesKey = values
156+
),
157+
ListPreference("revanced_alt_thumbnail_search",
158+
summaryKey = null,
159+
entriesKey = entries,
160+
entryValuesKey = values
135161
),
136-
SwitchPreference("revanced_alt_thumbnail_dearrow"),
137-
SwitchPreference("revanced_alt_thumbnail_dearrow_connection_toast"),
138-
TextPreference("revanced_alt_thumbnail_dearrow_api_url"),
139162
NonInteractivePreference(
140163
"revanced_alt_thumbnail_dearrow_about",
141164
// Custom about preference with link to the DeArrow website.
142165
tag = "app.revanced.integrations.youtube.settings.preference.AlternativeThumbnailsAboutDeArrowPreference",
143166
selectable = true,
144167
),
145-
SwitchPreference("revanced_alt_thumbnail_stills"),
146-
ListPreference("revanced_alt_thumbnail_stills_time", summaryKey = null),
147-
SwitchPreference("revanced_alt_thumbnail_stills_fast"),
168+
SwitchPreference("revanced_alt_thumbnail_dearrow_connection_toast"),
169+
TextPreference("revanced_alt_thumbnail_dearrow_api_url"),
148170
NonInteractivePreference("revanced_alt_thumbnail_stills_about"),
171+
SwitchPreference("revanced_alt_thumbnail_stills_fast"),
172+
ListPreference("revanced_alt_thumbnail_stills_time", summaryKey = null)
149173
)
150174

151175
fun MethodFingerprint.alsoResolve(fingerprint: MethodFingerprint) =

src/main/resources/addresources/values/arrays.xml

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,28 @@
4444
</string-array>
4545
</patch>
4646
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
47+
<string-array name="revanced_alt_thumbnail_options_entries">
48+
<item>@string/revanced_alt_thumbnail_options_entry_1</item>
49+
<item>@string/revanced_alt_thumbnail_options_entry_2</item>
50+
<item>@string/revanced_alt_thumbnail_options_entry_3</item>
51+
<item>@string/revanced_alt_thumbnail_options_entry_4</item>
52+
</string-array>
53+
<string-array name="revanced_alt_thumbnail_options_entry_values">
54+
<!-- Enum names from Integrations -->
55+
<item>ORIGINAL</item>
56+
<item>DEARROW</item>
57+
<item>DEARROW_STILL_IMAGES</item>
58+
<item>STILL_IMAGES</item>
59+
</string-array>
4760
<string-array name="revanced_alt_thumbnail_stills_time_entries">
4861
<item>@string/revanced_alt_thumbnail_stills_time_entry_1</item>
4962
<item>@string/revanced_alt_thumbnail_stills_time_entry_2</item>
5063
<item>@string/revanced_alt_thumbnail_stills_time_entry_3</item>
5164
</string-array>
5265
<string-array name="revanced_alt_thumbnail_stills_time_entry_values">
53-
<item>1</item>
54-
<item>2</item>
55-
<item>3</item>
66+
<item>BEGINNING</item>
67+
<item>MIDDLE</item>
68+
<item>END</item>
5669
</string-array>
5770
</patch>
5871
<patch id="video.quality.RememberVideoQualityPatch">

src/main/resources/addresources/values/strings.xml

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -847,33 +847,31 @@
847847
<string name="revanced_seekbar_custom_color_invalid">Invalid seekbar color value. Using default value.</string>
848848
</patch>
849849
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
850-
<string name="revanced_alt_thumbnail_about_title">Thumbnails in use</string>
851-
<string name="revanced_alt_thumbnail_dearrow_title">Enable DeArrow thumbnails</string>
852-
<string name="revanced_alt_thumbnail_dearrow_summary_on">Using DeArrow thumbnails</string>
853-
<string name="revanced_alt_thumbnail_dearrow_summary_off">Not using DeArrow thumbnails</string>
850+
<string name="revanced_alt_thumbnail_home_title">Home tab</string>
851+
<string name="revanced_alt_thumbnail_subscription_title">Subscription tab</string>
852+
<string name="revanced_alt_thumbnail_library_title">\'You\' tab</string>
853+
<string name="revanced_alt_thumbnail_player_title">Player playlists, recommendations</string>
854+
<string name="revanced_alt_thumbnail_search_title">Search results</string>
855+
<string name="revanced_alt_thumbnail_options_entry_1">Original thumbnails</string>
856+
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow &amp; Original thumbnails</string>
857+
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow &amp; Still captures</string>
858+
<string name="revanced_alt_thumbnail_options_entry_4">Still captures</string>
859+
<string name="revanced_alt_thumbnail_dearrow_about_title">DeArrow</string>
860+
<string name="revanced_alt_thumbnail_dearrow_about_summary">DeArrow provides crowd-sourced thumbnails for YouTube videos. These thumbnails are often more relevant than those provided by YouTube\n\nIf enabled, video URLs will be sent to the API server and no other data is sent. If a video does not have DeArrow thumbnails, then the original or still captures are shown\n\nTap here to learn more about DeArrow</string>
854861
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">Show a toast if API is not available</string>
855862
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">Toast is shown if DeArrow is not available</string>
856863
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">Toast is not shown if DeArrow is not available</string>
857864
<string name="revanced_alt_thumbnail_dearrow_api_url_title">DeArrow API endpoint</string>
858-
<string name="revanced_alt_thumbnail_dearrow_api_url_summary">The URL of the DeArrow thumbnail cache endpoint. Do not change this unless you know what you\'re doing</string>
859-
<string name="revanced_alt_thumbnail_dearrow_about_title">About DeArrow</string>
860-
<string name="revanced_alt_thumbnail_dearrow_about_summary">DeArrow provides crowd-sourced thumbnails for YouTube videos. These thumbnails are often more relevant than those provided by YouTube. If enabled, video URLs will be sent to the API server and no other data is sent\n\nTap here to learn more about DeArrow</string>
861-
<string name="revanced_alt_thumbnail_stills_title">Enable still video captures</string>
862-
<string name="revanced_alt_thumbnail_stills_summary_on">Using YouTube still video captures</string>
863-
<string name="revanced_alt_thumbnail_stills_summary_off">Not using YouTube still video captures</string>
864-
<string name="revanced_alt_thumbnail_stills_time_title">Video time to take the still from</string>
865-
<string name="revanced_alt_thumbnail_stills_time_entry_1">Beginning of video</string>
866-
<string name="revanced_alt_thumbnail_stills_time_entry_2">Middle of video</string>
867-
<string name="revanced_alt_thumbnail_stills_time_entry_3">End of video</string>
865+
<string name="revanced_alt_thumbnail_dearrow_api_url_summary">The URL of the DeArrow thumbnail cache endpoint</string>
866+
<string name="revanced_alt_thumbnail_stills_about_title">Still video captures</string>
867+
<string name="revanced_alt_thumbnail_stills_about_summary">Still captures are taken from the beginning/middle/end of each video. These images are built into YouTube and no external API is used</string>
868868
<string name="revanced_alt_thumbnail_stills_fast_title">Use fast still captures</string>
869869
<string name="revanced_alt_thumbnail_stills_fast_summary_on">Using medium quality still captures. Thumbnails will load faster, but live streams, unreleased, or very old videos may show blank thumbnails</string>
870870
<string name="revanced_alt_thumbnail_stills_fast_summary_off">Using high quality still captures</string>
871-
<string name="revanced_alt_thumbnail_stills_about_title">About still video captures</string>
872-
<string name="revanced_alt_thumbnail_stills_about_summary">Still captures are taken from the beginning/middle/end of each video. These images are built into YouTube and no external API is used</string>
873-
<string name="revanced_alt_thumbnail_about_status_disabled">Showing original YouTube thumbnails</string>
874-
<string name="revanced_alt_thumbnail_about_status_stills">Showing still video captures</string>
875-
<string name="revanced_alt_thumbnail_about_status_dearrow">Showing DeArrow thumbnails. If a video has no DeArrow thumbnails then the original YouTube thumbnails are shown</string>
876-
<string name="revanced_alt_thumbnail_about_status_dearrow_stills">Showing DeArrow thumbnails. If a video has no DeArrow thumbnails then still video captures are shown</string>
871+
<string name="revanced_alt_thumbnail_stills_time_title">Video time to take still captures from</string>
872+
<string name="revanced_alt_thumbnail_stills_time_entry_1">Beginning of video</string>
873+
<string name="revanced_alt_thumbnail_stills_time_entry_2">Middle of video</string>
874+
<string name="revanced_alt_thumbnail_stills_time_entry_3">End of video</string>
877875
<string name="revanced_alt_thumbnail_dearrow_error">DeArrow temporarily not available (status code: %s)</string>
878876
<string name="revanced_alt_thumbnail_dearrow_error_generic">DeArrow temporarily not available</string>
879877
</patch>

0 commit comments

Comments
 (0)