Skip to content

Commit 71b7ed1

Browse files
committed
YouTube: VideoInformation support 20.49.34
1 parent 611aa03 commit 71b7ed1

File tree

1 file changed

+23
-11
lines changed
  • app/src/main/java/io/github/chsbuffer/revancedxposed/youtube/video/information

1 file changed

+23
-11
lines changed

app/src/main/java/io/github/chsbuffer/revancedxposed/youtube/video/information/Fingerprints.kt

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ import io.github.chsbuffer.revancedxposed.fingerprint
1010
import io.github.chsbuffer.revancedxposed.youtube.shared.videoQualityChangedFingerprint
1111
import org.luckypray.dexkit.query.enums.OpCodeMatchType
1212
import org.luckypray.dexkit.query.enums.UsingType
13+
import org.luckypray.dexkit.result.ClassData
14+
import org.luckypray.dexkit.result.FieldData
1315
import org.luckypray.dexkit.result.FieldUsingType
16+
import org.luckypray.dexkit.result.MethodData
1417

1518
@get:SkipTest
1619
val createVideoPlayerSeekbarFingerprint = fingerprint {
@@ -34,25 +37,35 @@ val onPlaybackSpeedItemClickFingerprint = fingerprint {
3437
}
3538
}
3639

40+
private fun findFieldUsedByType(method: MethodData, fieldType: ClassData): FieldData {
41+
val fields = method.usingFields.distinct()
42+
fields.singleOrNull {
43+
it.field.typeName == fieldType.name
44+
}?.let { return it.field }
45+
46+
val interfaceNames = fieldType.interfaces.map { it.name }.toSet()
47+
return fields.single {
48+
it.field.typeName in interfaceNames
49+
}.field
50+
}
51+
3752
val setPlaybackSpeedMethodReference = findMethodDirect {
3853
onPlaybackSpeedItemClickFingerprint().invokes.findMethod { matcher { paramTypes("float") } }
3954
.single()
4055
}
4156

42-
val setPlaybackSpeedClass = findClassDirect {
43-
setPlaybackSpeedMethodReference().declaredClass!!
44-
}
57+
val setPlaybackSpeedClass = findClassDirect { setPlaybackSpeedMethodReference().declaredClass!! }
4558

4659
val setPlaybackSpeedClassFieldReference = findFieldDirect {
47-
val setPlaybackSpeedClassName = setPlaybackSpeedClass().name
48-
onPlaybackSpeedItemClickFingerprint().usingFields.distinct()
49-
.single { it.field.typeName == setPlaybackSpeedClassName }.field
60+
findFieldUsedByType(
61+
onPlaybackSpeedItemClickFingerprint(), setPlaybackSpeedClass()
62+
)
5063
}
5164

5265
val setPlaybackSpeedContainerClassFieldReference = findFieldDirect {
53-
val setPlaybackSpeedContainerClassName = setPlaybackSpeedClassFieldReference().declaredClassName
54-
onPlaybackSpeedItemClickFingerprint().usingFields.distinct()
55-
.single { it.field.typeName == setPlaybackSpeedContainerClassName }.field
66+
findFieldUsedByType(
67+
onPlaybackSpeedItemClickFingerprint(), setPlaybackSpeedClassFieldReference().declaredClass
68+
)
5669
}
5770

5871
val playerControllerSetTimeReferenceFingerprint = fingerprint {
@@ -200,8 +213,7 @@ private val videoQualityFingerprint = fingerprint {
200213
parameters(
201214
"I", // Resolution.
202215
"Ljava/lang/String;", // Human readable resolution: "480p", "1080p Premium", etc
203-
"Z",
204-
"L"
216+
"Z", "L"
205217
)
206218
// custom { _, classDef ->
207219
// classDef.type == YOUTUBE_VIDEO_QUALITY_CLASS_TYPE

0 commit comments

Comments
 (0)