![JAR search and dependency download from the Maven repository](/logo.png)
com.hiczp.bilibili.api.player.PlayerAPI.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bilibili-api Show documentation
Show all versions of bilibili-api Show documentation
Bilibili Android client API library for Kotlin
package com.hiczp.bilibili.api.player
import com.hiczp.bilibili.api.md5
import com.hiczp.bilibili.api.player.model.BangumiPlayUrl
import com.hiczp.bilibili.api.player.model.VideoPlayUrl
import kotlinx.coroutines.Deferred
import retrofit2.http.GET
import retrofit2.http.Query
import java.lang.management.ManagementFactory
/**
* 这里是播放器会访问的 API
* 返回内容中会有多个视频下载地址, 他们代表不同的视频质量(音频同理)
* 音频和视频是分开的
* 下载视频得到的是一个 m4s 文件, 但是实际上是完整的视频(例如整个番剧而非片段)
* 下载音频得到的也是一个 m4s 文件, 也是完整的
* 将视频和音频合在一起, 就可以播放了
*/
@Suppress("DeferredIsResult", "SpellCheckingInspection")
interface PlayerAPI {
/**
* 获得视频的播放地址
* 这个 API 需要使用特别的 appKey
*
* @param cid 在获取视频详情页面的接口的返回值里
* @param aid 视频的唯一标识
*
* @see com.hiczp.bilibili.api.app.AppAPI.view
*/
@GET(videoPlayUrl)
fun videoPlayUrl(
@Query("force_host") forceHost: Int = 0,
@Query("fnval") fnVal: Int = 16,
@Query("qn") qn: Int = 32,
@Query("npcybs") npcybs: Int = 0,
@Query("cid") cid: Long,
@Query("fnver") fnVer: Int = 0,
@Query("aid") aid: Long
): Deferred
/**
* 获得番剧的播放地址
*
* @param aid 番剧的唯一标识
* @param cid 在番剧详情页的返回值里
* @param seasonType 分季类型, 不明确, 似乎总为 1
* @param session 其值为 系统已运行时间(ms)的MD5值, 此处的默认值为 JVM 已启动时间, 在 Android 上请使用 SystemClock
* @param trackPath 不明确
*
* @see com.hiczp.bilibili.api.main.MainAPI.season
*/
@GET("https://api.bilibili.com/pgc/player/api/playurl")
fun bangumiPlayUrl(
@Query("aid") aid: Long,
@Query("cid") cid: Long,
@Query("fnval") fnVal: Int = 16,
@Query("fnver") fnVer: Int = 0,
@Query("module") module: String = "bangumi",
@Query("npcybs") npcybs: Int = 0,
@Query("qn") qn: Int = 32,
@Query("season_type") seasonType: Int = 1,
@Query("session") session: String = (System.currentTimeMillis() - ManagementFactory.getRuntimeMXBean().startTime).toString().md5(),
@Query("track_path") trackPath: Int? = null
): Deferred
companion object {
const val videoPlayUrl = "https://app.bilibili.com/x/playurl"
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy