@@ -10,21 +10,34 @@ data class CarouselData(
10
10
companion object {
11
11
fun fromPgcWebInitialStateData (data : dev.aaa1115910.biliapi.http.entity.pgc.PgcWebInitialStateData ): CarouselData {
12
12
val result = mutableListOf<CarouselItem >()
13
- var isMovie = false
14
- // 电影板块里的轮播图数据里没有直接包含 episodeId 和 seasonId
15
- if (data.modules.banner.moduleId == 1668 ) isMovie = true
13
+ var needParseIdFromUrl = false
14
+ // 电影、电视剧、综艺板块里的轮播图数据里没有直接包含 episodeId 和 seasonId
15
+ if (listOf (1668 , 1675 , 1682 ).contains(data.modules.banner.moduleId))
16
+ needParseIdFromUrl = true
16
17
data.modules.banner.items.filter {
17
- it.episodeId != null || (isMovie && it.link.contains(" bangumi/play/ep" ))
18
+ it.episodeId != null
19
+ || (needParseIdFromUrl && it.link.contains(" bangumi/play/ep" ))
20
+ || (needParseIdFromUrl && it.link.contains(" bangumi/play/ss" ))
18
21
}.forEach {
19
22
var cover = it.bigCover ? : it.cover
20
23
if (cover.startsWith(" //" )) cover = " https:$cover "
24
+ var epidFromUrl: Int? = null
25
+ var ssidFromUrl: Int? = null
26
+
27
+ if (needParseIdFromUrl) {
28
+ val idStr = Url (it.link).rawSegments.last()
29
+ epidFromUrl =
30
+ idStr.substring(2 ).takeIf { idStr.startsWith(" ep" ) }?.toIntOrNull()
31
+ ssidFromUrl =
32
+ idStr.substring(2 ).takeIf { idStr.startsWith(" ss" ) }?.toIntOrNull()
33
+ }
34
+
21
35
result.add(
22
36
CarouselItem (
23
37
cover = cover,
24
38
title = it.title,
25
- seasonId = it.seasonId ? : - 1 ,
26
- episodeId = it.episodeId
27
- ? : Url (it.link).rawSegments.last().substring(2 ).toInt()
39
+ seasonId = it.seasonId ? : ssidFromUrl ? : - 1 ,
40
+ episodeId = it.episodeId ? : epidFromUrl ? : - 1
28
41
)
29
42
)
30
43
}
0 commit comments