Skip to content

Commit ee7333a

Browse files
feat: Unofficial 20.15 support
1 parent 73fd235 commit ee7333a

File tree

4 files changed

+40
-3
lines changed

4 files changed

+40
-3
lines changed

Diff for: patches/api/patches.api

+1
Original file line numberDiff line numberDiff line change
@@ -1338,6 +1338,7 @@ public final class app/revanced/patches/youtube/misc/playservice/VersionCheckPat
13381338
public static final fun is_20_09_or_greater ()Z
13391339
public static final fun is_20_10_or_greater ()Z
13401340
public static final fun is_20_14_or_greater ()Z
1341+
public static final fun is_20_15_or_greater ()Z
13411342
}
13421343

13431344
public final class app/revanced/patches/youtube/misc/privacy/RemoveTrackingQueryParameterPatchKt {

Diff for: patches/src/main/kotlin/app/revanced/patches/youtube/misc/playservice/VersionCheckPatch.kt

+3
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ var is_20_10_or_greater = false
4949
private set
5050
var is_20_14_or_greater = false
5151
private set
52+
var is_20_15_or_greater = false
53+
private set
5254

5355
val versionCheckPatch = resourcePatch(
5456
description = "Uses the Play Store service version to find the major/minor version of the YouTube target app.",
@@ -86,5 +88,6 @@ val versionCheckPatch = resourcePatch(
8688
is_20_09_or_greater = 251006000 <= playStoreServicesVersion
8789
is_20_10_or_greater = 251105000 <= playStoreServicesVersion
8890
is_20_14_or_greater = 251505000 <= playStoreServicesVersion
91+
is_20_15_or_greater = 251605000 <= playStoreServicesVersion
8992
}
9093
}

Diff for: patches/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/Fingerprints.kt

+31-2
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,39 @@ import app.revanced.patcher.fingerprint
44
import app.revanced.patcher.string
55
import com.android.tools.smali.dexlib2.AccessFlags
66

7+
78
/**
8-
* For targets 20.10 and later.
9+
* For targets 20.15 and later.
910
*/
1011
internal val playerParameterBuilderFingerprint by fingerprint {
12+
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
13+
returns("L")
14+
parameters(
15+
"Ljava/lang/String;", // VideoId.
16+
"[B",
17+
"Ljava/lang/String;", // Player parameters proto buffer.
18+
"Ljava/lang/String;",
19+
"I",
20+
"Z",
21+
"I",
22+
"L",
23+
"Ljava/util/Set;",
24+
"Ljava/lang/String;",
25+
"Ljava/lang/String;",
26+
"L",
27+
"Z", // Appears to indicate if the video id is being opened or is currently playing.
28+
"Z",
29+
"Z"
30+
)
31+
instructions(
32+
string("psps")
33+
)
34+
}
35+
36+
/**
37+
* For targets 20.10 to 20.14.
38+
*/
39+
internal val playerParameterBuilder2010Fingerprint by fingerprint {
1140
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
1241
returns("L")
1342
parameters(
@@ -89,7 +118,7 @@ internal val playerParameterBuilder1925Fingerprint by fingerprint {
89118
}
90119

91120
/**
92-
* For targets 19.24 and earlier.
121+
* For targets 19.01 to 19.24.
93122
*/
94123
internal val playerParameterBuilderLegacyFingerprint by fingerprint {
95124
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)

Diff for: patches/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/PlayerResponseMethodHookPatch.kt

+5-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
99
import app.revanced.patches.youtube.misc.playservice.is_19_23_or_greater
1010
import app.revanced.patches.youtube.misc.playservice.is_20_02_or_greater
1111
import app.revanced.patches.youtube.misc.playservice.is_20_10_or_greater
12+
import app.revanced.patches.youtube.misc.playservice.is_20_15_or_greater
1213
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
1314

1415
private val hooks = mutableSetOf<Hook>()
@@ -39,9 +40,12 @@ val playerResponseMethodHookPatch = bytecodePatch {
3940

4041
execute {
4142
val fingerprint : Fingerprint
42-
if (is_20_10_or_greater) {
43+
if (is_20_15_or_greater) {
4344
parameterIsShortAndOpeningOrPlaying = 13
4445
fingerprint = playerParameterBuilderFingerprint
46+
} else if (is_20_10_or_greater) {
47+
parameterIsShortAndOpeningOrPlaying = 13
48+
fingerprint = playerParameterBuilder2010Fingerprint
4549
} else if (is_20_02_or_greater) {
4650
parameterIsShortAndOpeningOrPlaying = 12
4751
fingerprint = playerParameterBuilder2002Fingerprint

0 commit comments

Comments
 (0)