Closed candrwow closed 5 years ago
由于时间的问题,总站API还没做。视频(普通投稿视频和番剧)的API(视频基本信息,评论,分类等)之前已经截包分析过,有空我会把它做一下。 如果急着要用的话我可以把接口的参数整理一下发在这里,这样就可以自己用Python实现了(我想做深度学习得大多都用Python吧)
@czp3009 我发现评论接口确实是不需要appkey和验签的,但是点进视频后根据aid获取视频的标题,up名是需要appkey,时间戳验签这两样的,其他地方好像都无法直接根据aid获取视频标题
获取评论示例
oid 与 type 为必填参数, oid 即 aid, 视频的唯一标识, 俗称 av 号.
type 不明确含义, 客户端上总是为 1.
返回值示例如下 https://api.bilibili.com/x/v2/reply/main?oid=16622855&type=1
(这里就不贴了)
next 参数是一个分页参数, 表示想要请求的评论(复数)从哪个评论开始, 即 offset. 没有这个参数则从最后一楼开始.
ps 为 pageSize, 分页长度.
评论是降序排序的, 也就是楼层大的排在前面, next 会不停的变小直到某一页的返回值中最后一条评论为 1 楼.
获取子评论示例
子评论即对一个评论的评论.
oid, root, type 必填.
oid 即 aid, 同上.
root 为父评论的 id(在上面那个接口的返回值里面, rpid 就是评论的 id).
type 也同上.
子评论是升序排序的, 楼层逐渐变大, min_id 是分页偏移量, 没有这个参数则从最上面开始.
示例 https://api.bilibili.com/x/v2/reply/reply/cursor?oid=16622855&type=1&root=1405602348
获取视频的基本信息
这个比较麻烦, 因为必须要签名, 示例如下
里面的 ad_extra 很长很长, 但是不是必须的参数, 访问上面这个地址就可以看到返回内容了, 其中的 tag 就是该视频的标签.
签名算法比较简单, 我描述一下
先把所有参数排好顺序(字典序)(包括 = & 这些符号), 然后把 appSecret 拼接在后面(直接拼接, 没有 &). 最后做一次 md5 就得到了 sign 的值. 将 sign 的值再拼接到全部东西的后面就可以了.
companion object {
/**
* 签名算法为 "$排序后的参数字符串$appSecret".md5()
*/
private fun calculateSign(string: String, appSecret: String) =
MessageDigest.getInstance("MD5")
.digest((string + appSecret).toByteArray())
.joinToString(separator = "") {
"%02x".format(it)
}
}
/**
* Android 平台的 appKey(该默认值为普通版客户端, 非概念版)
*/
var appKey = "1d8b6e7d45233436"
/**
* 由反编译 so 文件得到的 appSecret, 与 appKey 必须匹配
*/
@Suppress("SpellCheckingInspection")
var appSecret = "560c52ccd288fed045859ed18bffd973"
appSecret 如上所述.
不要问为什么这么久了才回复这个 issue, 因为太忙
希望获取到这部分数据用来进行rnn,up有这些api方面的研究吗