Skip to content

Commit d407a1b

Browse files
committed
修复 pgc 轮播图数据缺失
1 parent 8d0c52d commit d407a1b

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

bili-api/src/main/kotlin/dev/aaa1115910/biliapi/entity/CarouselData.kt

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,34 @@ data class CarouselData(
1010
companion object {
1111
fun fromPgcWebInitialStateData(data: dev.aaa1115910.biliapi.http.entity.pgc.PgcWebInitialStateData): CarouselData {
1212
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
1617
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"))
1821
}.forEach {
1922
var cover = it.bigCover ?: it.cover
2023
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+
2135
result.add(
2236
CarouselItem(
2337
cover = cover,
2438
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
2841
)
2942
)
3043
}

0 commit comments

Comments
 (0)