mirror of
https://github.com/revanced/revanced-integrations.git
synced 2024-11-18 18:09:23 +01:00
fix(YouTube - Client spoof): Do not break clips
This commit is contained in:
parent
e7758a7ac4
commit
f9102fa83b
@ -1,19 +1,17 @@
|
|||||||
package app.revanced.integrations.patches.spoof;
|
package app.revanced.integrations.patches.spoof;
|
||||||
|
|
||||||
import static app.revanced.integrations.utils.ReVancedUtils.containsAny;
|
|
||||||
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import app.revanced.integrations.patches.VideoInformation;
|
import app.revanced.integrations.patches.VideoInformation;
|
||||||
import app.revanced.integrations.patches.spoof.requests.StoryboardRendererRequester;
|
import app.revanced.integrations.patches.spoof.requests.StoryboardRendererRequester;
|
||||||
import app.revanced.integrations.settings.SettingsEnum;
|
import app.revanced.integrations.settings.SettingsEnum;
|
||||||
import app.revanced.integrations.shared.PlayerType;
|
import app.revanced.integrations.shared.PlayerType;
|
||||||
import app.revanced.integrations.utils.LogHelper;
|
import app.revanced.integrations.utils.LogHelper;
|
||||||
|
|
||||||
|
import static app.revanced.integrations.utils.ReVancedUtils.containsAny;
|
||||||
|
|
||||||
/** @noinspection unused*/
|
/** @noinspection unused*/
|
||||||
public class SpoofSignaturePatch {
|
public class SpoofSignaturePatch {
|
||||||
/**
|
/**
|
||||||
@ -23,6 +21,11 @@ public class SpoofSignaturePatch {
|
|||||||
*/
|
*/
|
||||||
private static final String INCOGNITO_PARAMETERS = "CgIQBg==";
|
private static final String INCOGNITO_PARAMETERS = "CgIQBg==";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parameters used when playing clips.
|
||||||
|
*/
|
||||||
|
private static final String CLIPS_PARAMETERS = "kAIB";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parameters causing playback issues.
|
* Parameters causing playback issues.
|
||||||
*/
|
*/
|
||||||
@ -61,14 +64,20 @@ public class SpoofSignaturePatch {
|
|||||||
try {
|
try {
|
||||||
LogHelper.printDebug(() -> "Original protobuf parameter value: " + parameters);
|
LogHelper.printDebug(() -> "Original protobuf parameter value: " + parameters);
|
||||||
|
|
||||||
if (!SettingsEnum.SPOOF_SIGNATURE.getBoolean()) return parameters;
|
if (!SettingsEnum.SPOOF_SIGNATURE.getBoolean()) {
|
||||||
|
return parameters;
|
||||||
|
}
|
||||||
|
|
||||||
// Clip's player parameters contain a lot of information (e.g. video start and end time or whether it loops)
|
// Clip's player parameters contain a lot of information (e.g. video start and end time or whether it loops)
|
||||||
// For this reason, the player parameters of a clip are usually very long (150~300 characters).
|
// For this reason, the player parameters of a clip are usually very long (150~300 characters).
|
||||||
// Clips are 60 seconds or less in length, so no spoofing.
|
// Clips are 60 seconds or less in length, so no spoofing.
|
||||||
if (useOriginalStoryboardRenderer = parameters.length() > 150) return parameters;
|
//noinspection AssignmentUsedAsCondition
|
||||||
|
if (useOriginalStoryboardRenderer = parameters.length() > 150 || containsAny(parameters, CLIPS_PARAMETERS)) {
|
||||||
|
return parameters;
|
||||||
|
}
|
||||||
|
|
||||||
// Shorts do not need to be spoofed.
|
// Shorts do not need to be spoofed.
|
||||||
|
//noinspection AssignmentUsedAsCondition
|
||||||
if (useOriginalStoryboardRenderer = VideoInformation.playerParametersAreShort(parameters)) {
|
if (useOriginalStoryboardRenderer = VideoInformation.playerParametersAreShort(parameters)) {
|
||||||
isPlayingShorts = true;
|
isPlayingShorts = true;
|
||||||
return parameters;
|
return parameters;
|
||||||
@ -78,6 +87,7 @@ public class SpoofSignaturePatch {
|
|||||||
boolean isPlayingFeed = PlayerType.getCurrent() == PlayerType.INLINE_MINIMAL
|
boolean isPlayingFeed = PlayerType.getCurrent() == PlayerType.INLINE_MINIMAL
|
||||||
&& containsAny(parameters, AUTOPLAY_PARAMETERS);
|
&& containsAny(parameters, AUTOPLAY_PARAMETERS);
|
||||||
if (isPlayingFeed) {
|
if (isPlayingFeed) {
|
||||||
|
//noinspection AssignmentUsedAsCondition
|
||||||
if (useOriginalStoryboardRenderer = !SettingsEnum.SPOOF_SIGNATURE_IN_FEED.getBoolean()) {
|
if (useOriginalStoryboardRenderer = !SettingsEnum.SPOOF_SIGNATURE_IN_FEED.getBoolean()) {
|
||||||
// Don't spoof the feed video playback. This will cause video playback issues,
|
// Don't spoof the feed video playback. This will cause video playback issues,
|
||||||
// but only if user continues watching for more than 1 minute.
|
// but only if user continues watching for more than 1 minute.
|
||||||
|
Loading…
Reference in New Issue
Block a user