Skip to content

Commit

Permalink
feat: PlayUrl.durl 支持
Browse files Browse the repository at this point in the history
  • Loading branch information
muedsa committed Dec 11, 2024
1 parent c47f7f2 commit af68b8c
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ object BiliApiHelper {
bvid: String,
cid: Long,
qn: Int = 127,
fnval: Int = 4080,
fnval: Int = 2048,
session: String,
mixinKey: String,
): MutableMap<String, String> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ data class PlayUrl(
@SerialName("video_codecid") val videoCodecId: Int = 0,
@SerialName("seek_param") val seekParam: String = "",
@SerialName("seek_type") val seekType: String = "",
val dash: PlayUrlDash = PlayUrlDash(),
val dash: PlayUrlDash? = null,
val durl: List<PlayUrlDurl>? = null,
@SerialName("support_formats") val supportFormat: List<PlayUrlSupportFormat> = emptyList(),
// high_format
@SerialName("last_play_time") val lastPlayTime: Long = 0L,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.muedsa.tvbox.bilibili.model.bilibili

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class PlayUrlDurl(
val order: Int = 0,
val length: Long = 0L,
val size: Long = 0L,
val ahead: String = "",
val vhead: String = "",
val url: String = "",
@SerialName("backup_url") val backupUrl: List<String>? = null,
)
Original file line number Diff line number Diff line change
Expand Up @@ -263,27 +263,55 @@ class MediaDetailService(
if (!resp.data.vVoucher.isNullOrEmpty()) {
return V_VOUCHER_MEDIA_EPISODE_LIST
}
return resp.data.dash.video.map { videoTrack ->
return if (resp.data.dash != null) {
resp.data.dash.video.map { videoTrack ->
val qualityName =
resp.data.supportFormat.find { it.quality == videoTrack.id }?.newDescription
?: "??"
MediaEpisode(
id = "${info.bvid}_${pageInfo.cid}",
name = "$qualityName(${videoTrack.codecs})",
flag1 = ceil(resp.data.timeLength / 360000.0).toInt(),
flag3 = pageInfo.cid,
flag4 = info.aid,
flag5 = info.bvid,
flag6 = videoTrack.baseUrl,
flag7 = resp.data.dash.audio.firstOrNull()?.baseUrl,
flag8 = LenientJson.encodeToString(
VideoHeartbeatInfo(
aid = info.aid,
cid = info.cid,
videoDuration = (resp.data.timeLength / 1000),
quality = videoTrack.id
)
)
)
}
} else if (!resp.data.durl.isNullOrEmpty()) {
val qualityName =
resp.data.supportFormat.find { it.quality == videoTrack.id }?.newDescription ?: "??"
MediaEpisode(
id = "${info.bvid}_${pageInfo.cid}",
name = "$qualityName(${videoTrack.codecs})",
flag1 = ceil(resp.data.timeLength / 360000.0).toInt(),
flag3 = pageInfo.cid,
flag4 = info.aid,
flag5 = info.bvid,
flag6 = videoTrack.baseUrl,
flag7 = resp.data.dash.audio.firstOrNull()?.baseUrl,
flag8 = LenientJson.encodeToString(
VideoHeartbeatInfo(
aid = info.aid,
cid = info.cid,
videoDuration = (resp.data.timeLength / 1000),
quality = videoTrack.id
resp.data.supportFormat.find { it.quality == resp.data.quality }?.newDescription
?: "??"
listOf(
MediaEpisode(
id = "${info.bvid}_${pageInfo.cid}",
name = qualityName,
flag1 = ceil(resp.data.timeLength / 360000.0).toInt(),
flag3 = pageInfo.cid,
flag4 = info.aid,
flag5 = info.bvid,
flag6 = resp.data.durl.first().url,
flag8 = LenientJson.encodeToString(
VideoHeartbeatInfo(
aid = info.aid,
cid = info.cid,
videoDuration = (resp.data.timeLength / 1000),
quality = resp.data.quality
)
)
)
)
} else {
V_VOUCHER_MEDIA_EPISODE_LIST
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class BilibiliApiServiceTest {
aid = aid,
bvid = bv,
cid = cid,
fnval = 1024,
session = session,
mixinKey = TestPluginPrefStore.get(BILI_WBI_MIXIN_KEY)
?: throw RuntimeException("WBI鉴权参数未获取")
Expand Down

0 comments on commit af68b8c

Please sign in to comment.