feat(YouTube/Spoof client): selectively spoof client for general video / livestreams / Shorts / fallback (unplayable video)

This commit is contained in:
inotia00
2024-05-30 19:55:22 +09:00
parent 0b35694d18
commit aabf1ecb97
4 changed files with 120 additions and 33 deletions

View File

@ -256,7 +256,6 @@ object SpoofClientPatch : BaseBytecodePatch(
*/ */
SettingsPatch.addPreference( SettingsPatch.addPreference(
arrayOf( arrayOf(
"PREFERENCE_CATEGORY: MISC_EXPERIMENTAL_FLAGS",
"SETTINGS: SPOOF_CLIENT" "SETTINGS: SPOOF_CLIENT"
) )
) )

View File

@ -112,6 +112,46 @@
<item>https://github.com/polymorphicshade/Tubular/releases/latest</item> <item>https://github.com/polymorphicshade/Tubular/releases/latest</item>
<item>https://github.com/deniscerri/ytdlnis/releases/latest</item> <item>https://github.com/deniscerri/ytdlnis/releases/latest</item>
</string-array> </string-array>
<string-array name="revanced_spoof_client_general_options_entries">
<item>@string/revanced_spoof_client_options_entry_ios</item>
<item>@string/revanced_spoof_client_options_entry_android_testsuite</item>
<item>@string/revanced_spoof_client_options_entry_android_tv</item>
<item>@string/revanced_spoof_client_options_entry_android_vr</item>
</string-array>
<string-array name="revanced_spoof_client_general_options_entry_values">
<item>IOS</item>
<item>ANDROID_TESTSUITE</item>
<item>ANDROID_UNPLUGGED</item>
<item>ANDROID_VR</item>
</string-array>
<string-array name="revanced_spoof_client_livestream_options_entries">
<item>@string/revanced_spoof_client_options_entry_ios</item>
<item>@string/revanced_spoof_client_options_entry_android_tv</item>
<item>@string/revanced_spoof_client_options_entry_android_vr</item>
</string-array>
<string-array name="revanced_spoof_client_livestream_options_entry_values">
<item>IOS</item>
<item>ANDROID_UNPLUGGED</item>
<item>ANDROID_VR</item>
</string-array>
<string-array name="revanced_spoof_client_shorts_options_entries">
<item>@string/revanced_spoof_client_options_entry_ios</item>
<item>@string/revanced_spoof_client_options_entry_android_vr</item>
</string-array>
<string-array name="revanced_spoof_client_shorts_options_entry_values">
<item>IOS</item>
<item>ANDROID_VR</item>
</string-array>
<string-array name="revanced_spoof_client_fallback_options_entries">
<item>@string/revanced_spoof_client_options_entry_ios</item>
<item>@string/revanced_spoof_client_options_entry_android_testsuite</item>
<item>@string/revanced_spoof_client_options_entry_android_vr</item>
</string-array>
<string-array name="revanced_spoof_client_fallback_options_entry_values">
<item>IOS</item>
<item>ANDROID_TESTSUITE</item>
<item>ANDROID_VR</item>
</string-array>
<string-array name="revanced_spoof_app_version_target_entries"> <string-array name="revanced_spoof_app_version_target_entries">
<item>@string/revanced_spoof_app_version_target_entry_18_17_43</item> <item>@string/revanced_spoof_app_version_target_entry_18_17_43</item>
<item>@string/revanced_spoof_app_version_target_entry_18_05_40</item> <item>@string/revanced_spoof_app_version_target_entry_18_05_40</item>

View File

@ -1411,26 +1411,6 @@ Tap on the continue button and disable battery optimizations."</string>
<string name="revanced_disable_quic_protocol_title">Disable QUIC protocol</string> <string name="revanced_disable_quic_protocol_title">Disable QUIC protocol</string>
<string name="revanced_disable_quic_protocol_summary">"Disable CronetEngine's QUIC protocol."</string> <string name="revanced_disable_quic_protocol_summary">"Disable CronetEngine's QUIC protocol."</string>
<string name="revanced_spoof_client_title">Spoof client</string>
<string name="revanced_spoof_client_summary_on">"Client is spoofed.
Side effects include:
• No HDR video.
• Watch history may not work."</string>
<string name="revanced_spoof_client_summary_off">"Client is not spoofed. Video playback may not work."</string>
<string name="revanced_spoof_client_use_ios_title">Spoof client to iOS</string>
<string name="revanced_spoof_client_use_ios_summary_on">"Client is currently spoofed to iOS.
Side effects include:
• Playback speed menu is missing.
• Live streams cannot play as audio only.
• Live streams not available on Android 8.0.
• Higher video qualities may be missing."</string>
<string name="revanced_spoof_client_use_ios_summary_off">"Client is currently spoofed to Android VR. (iOS client is used for Clips or Shorts)
Side effects include:
• Kids videos do not playback.
• Paused videos can randomly resume."</string>
<string name="revanced_spoof_player_parameter_title">Spoof player parameter</string> <string name="revanced_spoof_player_parameter_title">Spoof player parameter</string>
<string name="revanced_spoof_player_parameter_summary">"Spoofs player parameters to prevent playback issues. <string name="revanced_spoof_player_parameter_summary">"Spoofs player parameters to prevent playback issues.
@ -1473,6 +1453,61 @@ Limitation: Feed videos will play for less than 1 minute before encountering pla
<string name="revanced_extended_settings_reset">Reset</string> <string name="revanced_extended_settings_reset">Reset</string>
<string name="revanced_share_copy_settings_success">Settings copied to clipboard.</string> <string name="revanced_share_copy_settings_success">Settings copied to clipboard.</string>
<!-- PreferenceScreen: Miscellaneous, PreferenceCategory: Miscellaneous, PreferenceScreen: Spoof client -->
<string name="revanced_preference_screen_spoof_client_title">Spoof client</string>
<string name="revanced_preference_screen_spoof_client_summary">Spoof the client to prevent playback issues.</string>
<string name="revanced_spoof_client_title">Spoof client</string>
<string name="revanced_spoof_client_summary_on">Client is spoofed.</string>
<string name="revanced_spoof_client_summary_off">"Client is not spoofed. Video playback may not work."</string>
<!-- PreferenceScreen: Miscellaneous, PreferenceCategory: Miscellaneous, PreferenceScreen: Spoof client, PreferenceCategory: Spoof client options -->
<string name="revanced_preference_category_spoof_client_options">Spoof client options</string>
<string name="revanced_spoof_client_general_title">General</string>
<string name="revanced_spoof_client_livestream_title">Live streams</string>
<string name="revanced_spoof_client_shorts_title">Shorts, Clips</string>
<string name="revanced_spoof_client_fallback_title">Fallback</string>
<string name="revanced_spoof_client_options_entry_ios">iOS</string>
<string name="revanced_spoof_client_options_entry_android_testsuite">Android Testsuite</string>
<string name="revanced_spoof_client_options_entry_android_tv">Android TV</string>
<string name="revanced_spoof_client_options_entry_android_vr">Android VR</string>
<!-- PreferenceScreen: Miscellaneous, PreferenceCategory: Miscellaneous, PreferenceScreen: Spoof client, PreferenceCategory: About -->
<string name="revanced_preference_category_spoof_client_about">About</string>
<string name="revanced_spoof_client_use_ios_title">iOS</string>
<string name="revanced_spoof_client_use_ios_summary">"Spoof client to iOS.
Side effects include:
• No HDR video.
• Playback speed menu is missing.
• Higher video qualities may be missing.
• Watch history does not work with a brand account.
• Live streams cannot play as audio only.
• Live streams not available on Android 8.0."</string>
<string name="revanced_spoof_client_use_android_testsuite_title">Android Testsuite</string>
<string name="revanced_spoof_client_use_android_testsuite_summary">"Spoof client to Android Testsuite.
Side effects include:
• No HDR video.
• Audio track menu and playback speed menu are missing.
• Subtitles may not be available."</string>
<string name="revanced_spoof_client_use_android_tv_title">Android TV</string>
<string name="revanced_spoof_client_use_android_tv_summary">"Spoof client to Android TV (YouTube TV).
Side effects include:
• No HDR video.
• Audio track menu and playback speed menu are missing.
• Subtitles may not be available.
• Some live streams are not supported for playback."</string>
<string name="revanced_spoof_client_use_android_vr_title">Android VR</string>
<string name="revanced_spoof_client_use_android_vr_summary">"Spoof client to Android VR.
Side effects include:
• No HDR video.
• Paused videos can randomly resume.
• Low quality Shorts seekbar thumbnails.
• Kids videos do not playback."</string>
<!-- PreferenceScreen: Miscellaneous, PreferenceCategory: Miscellaneous, PreferenceCategory: Patch information --> <!-- PreferenceScreen: Miscellaneous, PreferenceCategory: Miscellaneous, PreferenceCategory: Patch information -->
<string name="revanced_preference_category_patch_information">Patch information</string> <string name="revanced_preference_category_patch_information">Patch information</string>

View File

@ -529,6 +529,31 @@
<PreferenceScreen android:title="@string/revanced_preference_screen_misc_title" android:key="revanced_preference_screen_misc"> <PreferenceScreen android:title="@string/revanced_preference_screen_misc_title" android:key="revanced_preference_screen_misc">
<PreferenceScreen android:title="@string/revanced_preference_screen_import_export_title" android:key="revanced_preference_screen_import_export" android:summary="@string/revanced_preference_screen_import_export_summary">
<PreferenceCategory android:title="@string/revanced_preference_category_import_export_as_file" android:layout="@layout/revanced_settings_preferences_category" />
<Preference android:title="@string/revanced_extended_settings_export_title" android:key="revanced_extended_settings_export" android:summary="@string/revanced_extended_settings_export_summary" />
<Preference android:title="@string/revanced_extended_settings_import_title" android:key="revanced_extended_settings_import" android:summary="@string/revanced_extended_settings_import_summary" />
<PreferenceCategory android:title="@string/revanced_preference_category_import_export_as_text" android:layout="@layout/revanced_settings_preferences_category" />
<app.revanced.integrations.youtube.settings.preference.ImportExportPreference android:title="@string/revanced_extended_settings_import_export_as_text_title" android:summary="@string/revanced_extended_settings_import_export_as_text_summary" android:inputType="textMultiLine" />
</PreferenceScreen>
<!-- SETTINGS: SPOOF_CLIENT
<PreferenceScreen android:title="@string/revanced_preference_screen_spoof_client_title" android:key="revanced_preference_screen_spoof_client" android:summary="@string/revanced_preference_screen_spoof_client_summary">
<SwitchPreference android:title="@string/revanced_spoof_client_title" android:key="revanced_spoof_client" android:summaryOn="@string/revanced_spoof_client_summary_on" android:summaryOff="@string/revanced_spoof_client_summary_off" />
<PreferenceCategory android:title="@string/revanced_preference_category_spoof_client_options" android:layout="@layout/revanced_settings_preferences_category" />
<ListPreference android:entries="@array/revanced_spoof_client_general_options_entries" android:title="@string/revanced_spoof_client_general_title" android:key="revanced_spoof_client_general" android:entryValues="@array/revanced_spoof_client_general_options_entry_values" android:dependency="revanced_spoof_client" />
<ListPreference android:entries="@array/revanced_spoof_client_livestream_options_entries" android:title="@string/revanced_spoof_client_livestream_title" android:key="revanced_spoof_client_livestream" android:entryValues="@array/revanced_spoof_client_livestream_options_entry_values" android:dependency="revanced_spoof_client" />
<ListPreference android:entries="@array/revanced_spoof_client_shorts_options_entries" android:title="@string/revanced_spoof_client_shorts_title" android:key="revanced_spoof_client_shorts" android:entryValues="@array/revanced_spoof_client_shorts_options_entry_values" android:dependency="revanced_spoof_client" />
<ListPreference android:entries="@array/revanced_spoof_client_fallback_options_entries" android:title="@string/revanced_spoof_client_fallback_title" android:key="revanced_spoof_client_fallback" android:entryValues="@array/revanced_spoof_client_fallback_options_entry_values" android:dependency="revanced_spoof_client" />
<PreferenceCategory android:title="@string/revanced_preference_category_spoof_client_about" android:layout="@layout/revanced_settings_preferences_category" />
<Preference android:title="@string/revanced_spoof_client_use_ios_title" android:key="revanced_spoof_client_use_ios" android:selectable="false" android:summary="@string/revanced_spoof_client_use_ios_summary" />
<Preference android:title="@string/revanced_spoof_client_use_android_testsuite_title" android:key="revanced_spoof_client_use_android_testsuite" android:selectable="false" android:summary="@string/revanced_spoof_client_use_android_testsuite_summary" android:dependency="revanced_spoof_client" />
<Preference android:title="@string/revanced_spoof_client_use_android_tv_title" android:key="revanced_spoof_client_use_android_tv" android:selectable="false" android:summary="@string/revanced_spoof_client_use_android_tv_summary" android:dependency="revanced_spoof_client" />
<Preference android:title="@string/revanced_spoof_client_use_android_vr_title" android:key="revanced_spoof_client_use_android_vr" android:selectable="false" android:summary="@string/revanced_spoof_client_use_android_vr_summary" android:dependency="revanced_spoof_client" />
</PreferenceScreen>SETTINGS: SPOOF_CLIENT -->
<!-- SETTINGS: DISABLE_QUIC_PROTOCOL <!-- SETTINGS: DISABLE_QUIC_PROTOCOL
<SwitchPreference android:title="@string/revanced_disable_quic_protocol_title" android:key="revanced_disable_quic_protocol" android:summary="@string/revanced_disable_quic_protocol_summary" />SETTINGS: DISABLE_QUIC_PROTOCOL --> <SwitchPreference android:title="@string/revanced_disable_quic_protocol_title" android:key="revanced_disable_quic_protocol" android:summary="@string/revanced_disable_quic_protocol_summary" />SETTINGS: DISABLE_QUIC_PROTOCOL -->
@ -542,14 +567,6 @@
<!-- SETTINGS: ENABLE_OPEN_LINKS_DIRECTLY <!-- SETTINGS: ENABLE_OPEN_LINKS_DIRECTLY
<SwitchPreference android:title="@string/revanced_enable_open_links_directly_title" android:key="revanced_enable_open_links_directly" android:summaryOn="@string/revanced_enable_open_links_directly_summary_on" android:summaryOff="@string/revanced_enable_open_links_directly_summary_off" />SETTINGS: ENABLE_OPEN_LINKS_DIRECTLY --> <SwitchPreference android:title="@string/revanced_enable_open_links_directly_title" android:key="revanced_enable_open_links_directly" android:summaryOn="@string/revanced_enable_open_links_directly_summary_on" android:summaryOff="@string/revanced_enable_open_links_directly_summary_off" />SETTINGS: ENABLE_OPEN_LINKS_DIRECTLY -->
<PreferenceScreen android:title="@string/revanced_preference_screen_import_export_title" android:key="revanced_preference_screen_import_export" android:summary="@string/revanced_preference_screen_import_export_summary">
<PreferenceCategory android:title="@string/revanced_preference_category_import_export_as_file" android:layout="@layout/revanced_settings_preferences_category" />
<Preference android:title="@string/revanced_extended_settings_export_title" android:key="revanced_extended_settings_export" android:summary="@string/revanced_extended_settings_export_summary" />
<Preference android:title="@string/revanced_extended_settings_import_title" android:key="revanced_extended_settings_import" android:summary="@string/revanced_extended_settings_import_summary" />
<PreferenceCategory android:title="@string/revanced_preference_category_import_export_as_text" android:layout="@layout/revanced_settings_preferences_category" />
<app.revanced.integrations.youtube.settings.preference.ImportExportPreference android:title="@string/revanced_extended_settings_import_export_as_text_title" android:summary="@string/revanced_extended_settings_import_export_as_text_summary" android:inputType="textMultiLine" />
</PreferenceScreen>
<app.revanced.integrations.youtube.settings.preference.OpenDefaultAppSettingsPreference android:title="@string/revanced_default_app_settings_title" android:summary="@string/revanced_default_app_settings_summary" /> <app.revanced.integrations.youtube.settings.preference.OpenDefaultAppSettingsPreference android:title="@string/revanced_default_app_settings_title" android:summary="@string/revanced_default_app_settings_summary" />
<!-- PREFERENCE: GMS_CORE_SETTINGS <!-- PREFERENCE: GMS_CORE_SETTINGS
@ -563,10 +580,6 @@
<!-- PREFERENCE_CATEGORY: MISC_EXPERIMENTAL_FLAGS <!-- PREFERENCE_CATEGORY: MISC_EXPERIMENTAL_FLAGS
<PreferenceCategory android:title="@string/revanced_preference_category_experimental_flag" android:layout="@layout/revanced_settings_preferences_category"/>PREFERENCE_CATEGORY: MISC_EXPERIMENTAL_FLAGS --> <PreferenceCategory android:title="@string/revanced_preference_category_experimental_flag" android:layout="@layout/revanced_settings_preferences_category"/>PREFERENCE_CATEGORY: MISC_EXPERIMENTAL_FLAGS -->
<!-- SETTINGS: SPOOF_CLIENT
<SwitchPreference android:title="@string/revanced_spoof_client_title" android:key="revanced_spoof_client" android:summaryOn="@string/revanced_spoof_client_summary_on" android:summaryOff="@string/revanced_spoof_client_summary_off" />
<SwitchPreference android:title="@string/revanced_spoof_client_use_ios_title" android:key="revanced_spoof_client_use_ios" android:summaryOn="@string/revanced_spoof_client_use_ios_summary_on" android:summaryOff="@string/revanced_spoof_client_use_ios_summary_off" />SETTINGS: SPOOF_CLIENT -->
<!-- SETTINGS: SPOOF_PLAYER_PARAMETER <!-- SETTINGS: SPOOF_PLAYER_PARAMETER
<SwitchPreference android:title="@string/revanced_spoof_player_parameter_title" android:key="revanced_spoof_player_parameter" android:summary="@string/revanced_spoof_player_parameter_summary" /> <SwitchPreference android:title="@string/revanced_spoof_player_parameter_title" android:key="revanced_spoof_player_parameter" android:summary="@string/revanced_spoof_player_parameter_summary" />
<SwitchPreference android:title="@string/revanced_spoof_player_parameter_in_feed_title" android:key="revanced_spoof_player_parameter_in_feed" android:summaryOn="@string/revanced_spoof_player_parameter_in_feed_summary_on" android:summaryOff="@string/revanced_spoof_player_parameter_in_feed_summary_off" android:dependency="revanced_spoof_player_parameter" />SETTINGS: SPOOF_PLAYER_PARAMETER --> <SwitchPreference android:title="@string/revanced_spoof_player_parameter_in_feed_title" android:key="revanced_spoof_player_parameter_in_feed" android:summaryOn="@string/revanced_spoof_player_parameter_in_feed_summary_on" android:summaryOff="@string/revanced_spoof_player_parameter_in_feed_summary_off" android:dependency="revanced_spoof_player_parameter" />SETTINGS: SPOOF_PLAYER_PARAMETER -->