@@ -313,9 +313,24 @@ class BangumiPlayUrlHook(classLoader: ClassLoader) : BaseHook(classLoader) {
313
313
.on(mClassLoader).new()
314
314
val supplementAny = response.callMethod(" getSupplement" )
315
315
val typeUrl = supplementAny?.callMethodAs<String >(" getTypeUrl" )
316
+
316
317
// Only handle pgc video
317
- if (param.result != null && typeUrl != PGC_ANY_MODEL_TYPE_URL )
318
+ // /////////////////
319
+ // newPlayUnite:
320
+ // request.vod.cid, response.play_arc.cid need skip
321
+ val requestVod = request.callMethod(" getVod" )
322
+ val reqCid = requestVod?.callMethodAs<Long >(" getCid" )
323
+
324
+ val responsePlayArc = response.callMethod(" getPlayArc" )
325
+ val respCid = responsePlayArc?.callMethodAs<Long >(" getCid" )
326
+
327
+ val isThai = reqCid != 0 .toLong() && reqCid != respCid
328
+ if (
329
+ param.result != null && typeUrl != PGC_ANY_MODEL_TYPE_URL && ! isThai
330
+ ) {
318
331
return @hookAfterMethod
332
+ }
333
+
319
334
val extraContent = request.callMethodAs<Map <String , String >>(" getExtraContentMap" )
320
335
val seasonId = extraContent.getOrDefault(" season_id" , " 0" )
321
336
val reqEpId = extraContent.getOrDefault(" ep_id" , " 0" ).toLong()
@@ -324,7 +339,7 @@ class BangumiPlayUrlHook(classLoader: ClassLoader) : BaseHook(classLoader) {
324
339
val supplement = supplementAny?.callMethod(" getValue" )
325
340
?.callMethodAs<ByteArray >(" toByteArray" )
326
341
?.let { PlayViewReply .parseFrom(it) } ? : playViewReply {}
327
- if (needProxyUnite(response, supplement)) {
342
+ if (needProxyUnite(response, supplement) || isThai ) {
328
343
try {
329
344
val serializedRequest = request.callMethodAs<ByteArray >(" toByteArray" )
330
345
val req = PlayViewUniteReq .parseFrom(serializedRequest)
@@ -350,7 +365,6 @@ class BangumiPlayUrlHook(classLoader: ClassLoader) : BaseHook(classLoader) {
350
365
param.result = purifyViewInfo(response, supplement)
351
366
}
352
367
}
353
- /*
354
368
// 7.41.0+ use async
355
369
hookBeforeMethod(
356
370
" playViewUnite" ,
@@ -389,9 +403,24 @@ class BangumiPlayUrlHook(classLoader: ClassLoader) : BaseHook(classLoader) {
389
403
.on(mClassLoader).new()
390
404
val supplementAny = response.callMethod(" getSupplement" )
391
405
val typeUrl = supplementAny?.callMethodAs<String >(" getTypeUrl" )
406
+
392
407
// Only handle pgc video
393
- if (originalResp != null && typeUrl != PGC_ANY_MODEL_TYPE_URL)
408
+ // /////////////////
409
+ // newPlayUnite:
410
+ // request.vod.cid, response.play_arc.cid
411
+ val requestVod = request.callMethod(" getVod" )
412
+ val reqCid = requestVod?.callMethodAs<Long >(" getCid" )
413
+
414
+ val responsePlayArc = response.callMethod(" getPlayArc" )
415
+ val respCid = responsePlayArc?.callMethodAs<Long >(" getCid" )
416
+
417
+ val isThai = reqCid != 0 .toLong() && reqCid != respCid
418
+ if (
419
+ param.result != null && typeUrl != PGC_ANY_MODEL_TYPE_URL && ! isThai
420
+ ) {
394
421
return @mossResponseHandlerReplaceProxy null
422
+ }
423
+
395
424
val extraContent =
396
425
request.callMethodAs<Map <String , String >>(" getExtraContentMap" )
397
426
val seasonId = extraContent.getOrDefault(" season_id" , " 0" )
@@ -401,7 +430,7 @@ class BangumiPlayUrlHook(classLoader: ClassLoader) : BaseHook(classLoader) {
401
430
val supplement = supplementAny?.callMethod(" getValue" )
402
431
?.callMethodAs<ByteArray >(" toByteArray" )
403
432
?.let { PlayViewReply .parseFrom(it) } ? : playViewReply {}
404
- val newResponse = if (needProxyUnite(response, supplement)) {
433
+ val newResponse = if (needProxyUnite(response, supplement) || isThai ) {
405
434
try {
406
435
val serializedRequest = request.callMethodAs<ByteArray >(" toByteArray" )
407
436
val req = PlayViewUniteReq .parseFrom(serializedRequest)
@@ -428,7 +457,6 @@ class BangumiPlayUrlHook(classLoader: ClassLoader) : BaseHook(classLoader) {
428
457
newResponse
429
458
}
430
459
}
431
- */
432
460
}
433
461
instance.playURLMossClass?.hookBeforeMethod(
434
462
if (instance.useNewMossFunc) " executePlayView" else " playView" ,
0 commit comments