@@ -112,17 +112,25 @@ class LiveQualityHook(classLoader: ClassLoader) : BaseHook(classLoader) {
112
112
113
113
debug { " originalLiveUrl: $originalUri " }
114
114
115
- newQn = findQuality(
116
- JSONArray (originalUri.getQueryParameter(" accept_quality" )),
117
- liveQuality
118
- ).toString()
119
- debug { " newQn: $newQn " }
120
-
121
- param.args[0 ] = originalUri.removeQuery { name ->
122
- name.startsWith(" playurl" )
123
- }.also {
124
- debug { " newLiveUrl: $it " }
115
+ if (originalUri.getQueryParameter(" no_playurl" ) == " 1" ) {
116
+ newQn = liveQuality.toString()
117
+ } else {
118
+ newQn = findQuality(
119
+ JSONArray (originalUri.getQueryParameter(" accept_quality" )),
120
+ liveQuality
121
+ ).toString()
122
+
123
+ param.args[0 ] = originalUri.modified(
124
+ removeIf = { name ->
125
+ name.startsWith(" playurl" )
126
+ },
127
+ append = mapOf (" no_playurl" to " 1" )
128
+ ).also {
129
+ debug { " newLiveUrl: $it " }
130
+ }
125
131
}
132
+
133
+ debug { " newQn: $newQn " }
126
134
}
127
135
}
128
136
@@ -143,14 +151,17 @@ class LiveQualityHook(classLoader: ClassLoader) : BaseHook(classLoader) {
143
151
}
144
152
}
145
153
146
- private fun Uri.removeQuery ( predicate : (String ) -> Boolean ): Uri {
154
+ private fun Uri.modified ( removeIf : (String ) -> Boolean , append : Map < String , Any > ): Uri {
147
155
val newBuilder = buildUpon().clearQuery()
148
156
for (name in queryParameterNames) {
149
157
val value = getQueryParameter(name) ? : " "
150
- if (! predicate (name)) {
158
+ if (! removeIf (name)) {
151
159
newBuilder.appendQueryParameter(name, value)
152
160
}
153
161
}
162
+ append.forEach { (k, v) ->
163
+ newBuilder.appendQueryParameter(k, v.toString())
164
+ }
154
165
return newBuilder.build()
155
166
}
156
167
0 commit comments