feat(Spoof streaming data): Separate Sync video length before playback setting

This commit is contained in:
inotia00 2024-12-20 17:29:06 +09:00
parent 7653041595
commit 3c8e61c850
4 changed files with 19 additions and 3 deletions

View File

@ -21,6 +21,12 @@ import app.revanced.extension.shared.utils.Utils;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public class SpoofStreamingDataPatch extends BlockRequestPatch { public class SpoofStreamingDataPatch extends BlockRequestPatch {
/**
* Even if the default client is not iOS, videos that cannot be played on Android VR or Android TV will fall back to iOS.
* Do not add a dependency that checks whether the default client is iOS or not.
*/
private static final boolean SPOOF_STREAMING_DATA_SYNC_VIDEO_LENGTH =
SPOOF_STREAMING_DATA && BaseSettings.SPOOF_STREAMING_DATA_SYNC_VIDEO_LENGTH.get();
/** /**
* Key: videoId. * Key: videoId.
@ -119,7 +125,7 @@ public class SpoofStreamingDataPatch extends BlockRequestPatch {
* Called after {@link #getStreamingData(String)}. * Called after {@link #getStreamingData(String)}.
*/ */
public static void setFormats(String videoId, StreamingDataOuterClass$StreamingData originalStreamingData, StreamingDataOuterClass$StreamingData spoofed) { public static void setFormats(String videoId, StreamingDataOuterClass$StreamingData originalStreamingData, StreamingDataOuterClass$StreamingData spoofed) {
if (formatsIsEmpty(spoofed)) { if (SPOOF_STREAMING_DATA_SYNC_VIDEO_LENGTH && formatsIsEmpty(spoofed)) {
formatsMap.put(videoId, getFormatsFromStreamingData(originalStreamingData)); formatsMap.put(videoId, getFormatsFromStreamingData(originalStreamingData));
Logger.printDebug(() -> "New formats video id: " + videoId); Logger.printDebug(() -> "New formats video id: " + videoId);
} }
@ -165,7 +171,7 @@ public class SpoofStreamingDataPatch extends BlockRequestPatch {
* Called after {@link #getStreamingData(String)}. * Called after {@link #getStreamingData(String)}.
*/ */
public static List<?> getOriginalFormats(String videoId, List<?> spoofedFormats) { public static List<?> getOriginalFormats(String videoId, List<?> spoofedFormats) {
if (SPOOF_STREAMING_DATA) { if (SPOOF_STREAMING_DATA_SYNC_VIDEO_LENGTH) {
try { try {
if (videoId != null && !videoId.equals(MASKED_VIDEO_ID) && spoofedFormats.size() == 0) { if (videoId != null && !videoId.equals(MASKED_VIDEO_ID) && spoofedFormats.size() == 0) {
List<?> androidFormats = formatsMap.get(videoId); List<?> androidFormats = formatsMap.get(videoId);

View File

@ -64,7 +64,10 @@ public class SpoofStreamingDataSideEffectsPreference extends Preference {
private void updateUI() { private void updateUI() {
final ClientType clientType = Settings.SPOOF_STREAMING_DATA_TYPE.get(); final ClientType clientType = Settings.SPOOF_STREAMING_DATA_TYPE.get();
final String summaryTextKey = "revanced_spoof_streaming_data_side_effects_" + clientType.name().toLowerCase(); final String summaryTextKey = clientType == ClientType.IOS &&
!Settings.SPOOF_STREAMING_DATA_SYNC_VIDEO_LENGTH.get()
? "revanced_spoof_streaming_data_side_effects_ios_skip_sync_video_length"
: "revanced_spoof_streaming_data_side_effects_" + clientType.name().toLowerCase();
setSummary(str(summaryTextKey)); setSummary(str(summaryTextKey));
setEnabled(Settings.SPOOF_STREAMING_DATA.get()); setEnabled(Settings.SPOOF_STREAMING_DATA.get());

View File

@ -1906,10 +1906,16 @@ Tap on the continue button and disable battery optimizations."</string>
<string name="revanced_spoof_streaming_data_type_entry_android_vr">Android VR</string> <string name="revanced_spoof_streaming_data_type_entry_android_vr">Android VR</string>
<string name="revanced_spoof_streaming_data_side_effects_title">Spoofing side effects</string> <string name="revanced_spoof_streaming_data_side_effects_title">Spoofing side effects</string>
<string name="revanced_spoof_streaming_data_side_effects_ios">• Not yet found.</string> <string name="revanced_spoof_streaming_data_side_effects_ios">• Not yet found.</string>
<string name="revanced_spoof_streaming_data_side_effects_ios_skip_sync_video_length">• Videos may end 1 second early.</string>
<string name="revanced_spoof_streaming_data_side_effects_android_unplugged">"• Audio track menu is missing. <string name="revanced_spoof_streaming_data_side_effects_android_unplugged">"• Audio track menu is missing.
• Stable volume is not available."</string> • Stable volume is not available."</string>
<string name="revanced_spoof_streaming_data_side_effects_android_vr">"• Audio track menu is missing. <string name="revanced_spoof_streaming_data_side_effects_android_vr">"• Audio track menu is missing.
• Stable volume is not available."</string> • Stable volume is not available."</string>
<string name="revanced_spoof_streaming_data_sync_video_length_title">Sync video length before playback</string>
<string name="revanced_spoof_streaming_data_sync_video_length_summary_on">"Video length is synced before playback.
Video length is exact value."</string>
<string name="revanced_spoof_streaming_data_sync_video_length_summary_off">"Video length is not synced before playback.
Video length may be a rounded value."</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Show in Stats for nerds</string> <string name="revanced_spoof_streaming_data_stats_for_nerds_title">Show in Stats for nerds</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Client used to fetch streaming data is shown in Stats for nerds.</string> <string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Client used to fetch streaming data is shown in Stats for nerds.</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Client used to fetch streaming data is hidden in Stats for nerds.</string> <string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Client used to fetch streaming data is hidden in Stats for nerds.</string>

View File

@ -784,6 +784,7 @@
<SwitchPreference android:title="@string/revanced_spoof_streaming_data_title" android:key="revanced_spoof_streaming_data" android:summaryOn="@string/revanced_spoof_streaming_data_summary_on" android:summaryOff="@string/revanced_spoof_streaming_data_summary_off" /> <SwitchPreference android:title="@string/revanced_spoof_streaming_data_title" android:key="revanced_spoof_streaming_data" android:summaryOn="@string/revanced_spoof_streaming_data_summary_on" android:summaryOff="@string/revanced_spoof_streaming_data_summary_off" />
<ListPreference android:entries="@array/revanced_spoof_streaming_data_type_entries" android:title="@string/revanced_spoof_streaming_data_type_title" android:key="revanced_spoof_streaming_data_type" android:entryValues="@array/revanced_spoof_streaming_data_type_entry_values" android:dependency="revanced_spoof_streaming_data" /> <ListPreference android:entries="@array/revanced_spoof_streaming_data_type_entries" android:title="@string/revanced_spoof_streaming_data_type_title" android:key="revanced_spoof_streaming_data_type" android:entryValues="@array/revanced_spoof_streaming_data_type_entry_values" android:dependency="revanced_spoof_streaming_data" />
<app.revanced.extension.youtube.settings.preference.SpoofStreamingDataSideEffectsPreference android:title="@string/revanced_spoof_streaming_data_side_effects_title" /> <app.revanced.extension.youtube.settings.preference.SpoofStreamingDataSideEffectsPreference android:title="@string/revanced_spoof_streaming_data_side_effects_title" />
<SwitchPreference android:title="@string/revanced_spoof_streaming_data_sync_video_length_title" android:key="revanced_spoof_streaming_data_sync_video_length" android:summaryOn="@string/revanced_spoof_streaming_data_sync_video_length_summary_on" android:summaryOff="@string/revanced_spoof_streaming_data_sync_video_length_summary_off" android:dependency="revanced_spoof_streaming_data" />
<SwitchPreference android:title="@string/revanced_spoof_streaming_data_stats_for_nerds_title" android:key="revanced_spoof_streaming_data_stats_for_nerds" android:summaryOn="@string/revanced_spoof_streaming_data_stats_for_nerds_summary_on" android:summaryOff="@string/revanced_spoof_streaming_data_stats_for_nerds_summary_off" android:dependency="revanced_spoof_streaming_data" /> <SwitchPreference android:title="@string/revanced_spoof_streaming_data_stats_for_nerds_title" android:key="revanced_spoof_streaming_data_stats_for_nerds" android:summaryOn="@string/revanced_spoof_streaming_data_stats_for_nerds_summary_on" android:summaryOff="@string/revanced_spoof_streaming_data_stats_for_nerds_summary_off" android:dependency="revanced_spoof_streaming_data" />
</PreferenceScreen>SETTINGS: SPOOF_STREAMING_DATA --> </PreferenceScreen>SETTINGS: SPOOF_STREAMING_DATA -->