mirror of
https://github.com/inotia00/revanced-patches.git
synced 2025-05-02 07:34:31 +02:00
fix(YouTube - Spoof streaming data): Mark login-required client
This commit is contained in:
parent
8ab67bc6ef
commit
c6ad8331bc
@ -207,8 +207,14 @@ object AppClient {
|
|||||||
val clientVersion: String,
|
val clientVersion: String,
|
||||||
/**
|
/**
|
||||||
* If the client can access the API logged in.
|
* If the client can access the API logged in.
|
||||||
|
* If false, 'Authorization' must not be included.
|
||||||
*/
|
*/
|
||||||
val canLogin: Boolean = true,
|
val supportsCookies: Boolean = true,
|
||||||
|
/**
|
||||||
|
* If the client can only access the API logged in.
|
||||||
|
* If true, 'Authorization' must be included.
|
||||||
|
*/
|
||||||
|
val requireAuth: Boolean = false,
|
||||||
/**
|
/**
|
||||||
* Whether a poToken is required to get playback for more than 1 minute.
|
* Whether a poToken is required to get playback for more than 1 minute.
|
||||||
*/
|
*/
|
||||||
@ -234,6 +240,7 @@ object AppClient {
|
|||||||
userAgent = USER_AGENT_ANDROID_UNPLUGGED,
|
userAgent = USER_AGENT_ANDROID_UNPLUGGED,
|
||||||
androidSdkVersion = ANDROID_SDK_VERSION_ANDROID_UNPLUGGED,
|
androidSdkVersion = ANDROID_SDK_VERSION_ANDROID_UNPLUGGED,
|
||||||
clientVersion = CLIENT_VERSION_ANDROID_UNPLUGGED,
|
clientVersion = CLIENT_VERSION_ANDROID_UNPLUGGED,
|
||||||
|
requireAuth = true,
|
||||||
friendlyName = "Android TV"
|
friendlyName = "Android TV"
|
||||||
),
|
),
|
||||||
IOS_UNPLUGGED(
|
IOS_UNPLUGGED(
|
||||||
@ -242,6 +249,7 @@ object AppClient {
|
|||||||
osVersion = OS_VERSION_IOS,
|
osVersion = OS_VERSION_IOS,
|
||||||
userAgent = USER_AGENT_IOS_UNPLUGGED,
|
userAgent = USER_AGENT_IOS_UNPLUGGED,
|
||||||
clientVersion = CLIENT_VERSION_IOS_UNPLUGGED,
|
clientVersion = CLIENT_VERSION_IOS_UNPLUGGED,
|
||||||
|
requireAuth = true,
|
||||||
friendlyName = if (forceAVC())
|
friendlyName = if (forceAVC())
|
||||||
"iOS TV Force AVC"
|
"iOS TV Force AVC"
|
||||||
else
|
else
|
||||||
@ -253,7 +261,7 @@ object AppClient {
|
|||||||
osVersion = OS_VERSION_IOS,
|
osVersion = OS_VERSION_IOS,
|
||||||
userAgent = USER_AGENT_IOS,
|
userAgent = USER_AGENT_IOS,
|
||||||
clientVersion = CLIENT_VERSION_IOS,
|
clientVersion = CLIENT_VERSION_IOS,
|
||||||
canLogin = false,
|
supportsCookies = false,
|
||||||
requirePoToken = true,
|
requirePoToken = true,
|
||||||
friendlyName = if (forceAVC())
|
friendlyName = if (forceAVC())
|
||||||
"iOS Force AVC"
|
"iOS Force AVC"
|
||||||
@ -265,6 +273,7 @@ object AppClient {
|
|||||||
userAgent = USER_AGENT_ANDROID_MUSIC,
|
userAgent = USER_AGENT_ANDROID_MUSIC,
|
||||||
androidSdkVersion = ANDROID_SDK_VERSION_ANDROID_MUSIC,
|
androidSdkVersion = ANDROID_SDK_VERSION_ANDROID_MUSIC,
|
||||||
clientVersion = CLIENT_VERSION_ANDROID_MUSIC,
|
clientVersion = CLIENT_VERSION_ANDROID_MUSIC,
|
||||||
|
requireAuth = true,
|
||||||
friendlyName = "Android Music"
|
friendlyName = "Android Music"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ object PlayerRoutes {
|
|||||||
client.put("deviceMake", "Apple")
|
client.put("deviceMake", "Apple")
|
||||||
client.put("osName", "iOS")
|
client.put("osName", "iOS")
|
||||||
}
|
}
|
||||||
if (!clientType.canLogin) {
|
if (!clientType.supportsCookies) {
|
||||||
client.put("hl", LOCALE_LANGUAGE)
|
client.put("hl", LOCALE_LANGUAGE)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -194,7 +194,7 @@ class StreamingDataRequest private constructor(
|
|||||||
var value = playerHeaders[key]
|
var value = playerHeaders[key]
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
if (key == AUTHORIZATION_HEADER) {
|
if (key == AUTHORIZATION_HEADER) {
|
||||||
if (!clientType.canLogin) {
|
if (!clientType.supportsCookies) {
|
||||||
Logger.printDebug { "Not including request header: $key" }
|
Logger.printDebug { "Not including request header: $key" }
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -260,6 +260,11 @@ class StreamingDataRequest private constructor(
|
|||||||
|
|
||||||
// Retry with different client if empty response body is received.
|
// Retry with different client if empty response body is received.
|
||||||
for (clientType in CLIENT_ORDER_TO_USE) {
|
for (clientType in CLIENT_ORDER_TO_USE) {
|
||||||
|
if (clientType.requireAuth &&
|
||||||
|
playerHeaders[AUTHORIZATION_HEADER] == null) {
|
||||||
|
Logger.printDebug { "Skipped login-required client (incognito mode or not logged in)\nClient: $clientType\nVideo: $videoId" }
|
||||||
|
continue
|
||||||
|
}
|
||||||
send(
|
send(
|
||||||
clientType,
|
clientType,
|
||||||
videoId,
|
videoId,
|
||||||
|
@ -1907,16 +1907,21 @@ Tap the continue button and allow optimization changes."</string>
|
|||||||
<string name="revanced_spoof_streaming_data_summary_off">"Streaming data is not spoofed. Video playback may not work."</string>
|
<string name="revanced_spoof_streaming_data_summary_off">"Streaming data is not spoofed. Video playback may not work."</string>
|
||||||
<string name="revanced_spoof_streaming_data_user_dialog_message">Turning off this setting may cause video playback issues.</string>
|
<string name="revanced_spoof_streaming_data_user_dialog_message">Turning off this setting may cause video playback issues.</string>
|
||||||
<string name="revanced_spoof_streaming_data_type_title">Default client</string>
|
<string name="revanced_spoof_streaming_data_type_title">Default client</string>
|
||||||
<string name="revanced_spoof_streaming_data_type_entry_android_unplugged">Android TV</string>
|
<string name="revanced_spoof_streaming_data_type_entry_android_unplugged">"Android TV
|
||||||
|
<small>(Login required)</small>"</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_type_entry_ios">iOS</string>
|
<string name="revanced_spoof_streaming_data_type_entry_ios">"iOS
|
||||||
<string name="revanced_spoof_streaming_data_type_entry_ios_unplugged">iOS TV</string>
|
<small>(PoToken required)</small>"</string>
|
||||||
|
<string name="revanced_spoof_streaming_data_type_entry_ios_unplugged">"iOS TV
|
||||||
|
<small>(Login required)</small>"</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_android">"• Audio track menu is missing.
|
<string name="revanced_spoof_streaming_data_side_effects_android">"• Audio track menu is missing.
|
||||||
• Stable volume is not available.
|
• Stable volume is not available.
|
||||||
• Disable forced auto audio tracks is not available."</string>
|
• Disable forced auto audio tracks is not available.
|
||||||
<string name="revanced_spoof_streaming_data_side_effects_ios">• There may be playback issues (Deprecated).</string>
|
• Kids videos may not play when logged out or in incognito mode."</string>
|
||||||
<string name="revanced_spoof_streaming_data_side_effects_ios_unplugged">• Movies or paid videos may not play.</string>
|
<string name="revanced_spoof_streaming_data_side_effects_ios">• There may be playback issues (PoToken required).</string>
|
||||||
|
<string name="revanced_spoof_streaming_data_side_effects_ios_unplugged">"• Movies or paid videos may not play.
|
||||||
|
• Kids videos may not play when logged out or in incognito mode."</string>
|
||||||
<string name="revanced_spoof_streaming_data_ios_force_avc_title">Force iOS AVC (H.264)</string>
|
<string name="revanced_spoof_streaming_data_ios_force_avc_title">Force iOS AVC (H.264)</string>
|
||||||
<string name="revanced_spoof_streaming_data_ios_force_avc_summary_on">Video codec is forced to AVC (H.264).</string>
|
<string name="revanced_spoof_streaming_data_ios_force_avc_summary_on">Video codec is forced to AVC (H.264).</string>
|
||||||
<string name="revanced_spoof_streaming_data_ios_force_avc_summary_off">Video codec is determined automatically.</string>
|
<string name="revanced_spoof_streaming_data_ios_force_avc_summary_off">Video codec is determined automatically.</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user