b站java是不是不行_B站最详细的API

获取cid

获取视频地址需要获取cid。这里整理当前可用的获取cid的途径。

通过API获取

http://api.bilibili.com/view?type=json&id={aid}&batch=1&appkey={appkey}

包括标题、描述、cid、分页标题等信息。

信息最全,但是有频率限制,在不需要详细信息时可以优先考虑使用其他的途径。

通过pagelist获取

http://www.bilibili.tv/widget/getPageList?aid={aid}

包括cid、分页标题。

通过HTML5接口获取

http://www.bilibili.tv/m/html5?aid={aid}&page={pid}

仅限单个分页,可获取cid。

通过flash参数获取

flash参数中”cid”或”*-cid”可以提供cid

获取aid

http://interface.bilibili.com/player?id=cid:{cid}

可以通过cid获取aid

相邻视频推测cid

如果不能直接获取cid,会考虑通过相邻的视频的cid获取aid。

这里的实现是基于cid[i] > cid[j] 当且仅当 aid[i] > aid[j]在大多数情况下成立作为假设的。

当前脚本的实现方法是:

获取前后若干视频的cid

忽略有多个分页的视频

获取不超过6个视频的cid,或不超过12个视频(包括获取失败)

根据这些cid推断cid可能的区间

如果两边都没有获取到cid则报告失败

如果一边没有获取到cid,使用另一侧最大/小的cid作为替代

去掉右侧比左侧所有数字都小的,和左侧比右侧所有数字都大的

找到两边的中位数,把另一边在这个中位数以外的部分砍掉

再找两边最靠里的数,把另一边在这里面的部分砍掉

最后再找两边最靠里的数,认为我们要的cid在这个范围内

根据cid可能的区间尝试

从中间往两边进行尝试

如果进行了32次网络访问不能找到视频则放弃

使用了缓存的情况下可能实际上已经尝试了更多个视频

如果找到了某个分页之后已找到分页数×4+6个视频查找失败则停止

最后整理得到aid的列表

检查是否可以正常播放

http://interface.bilibili.com/playurl?cid={cid}&passkey={passkey}[&sign={sign}]

有些passkey的情况下sign可选。

如果返回succ或suee则说明成功

修复网页全屏和浮动播放器

请参考:http://static.hdslb.com/js/page.arc.js

获取新番专题相关内容

参考:

http://api.bilibili.com/spview?spid={spid}&season\_id={season\_id}&bangumi=1

http://api.bilibili.tv/sp?spid={spid}

spview中的bangumi参数为0/1用于区分是所属番剧还是相关视频。

这两个API似乎不需要appkey的样子……

完整版新番列表

新番列表隐藏了部分视频,如果需要完整版新番列表,需要通过手机的加载方式获取。 http://api.bilibili.com/list?pagesize=24&type=json&page=1&ios=0&order=default&appkey={appkey}&platform=ios&tid=33。

其他视频信息

搜索的自动补全

在搜索框输入 /av\d+/ 形式的字串,会提示对应视频的标题。可以用此获取视频标题

http://www.bilibili.tv/suggest?term=av{{aid}}&jsoncallback={{callback}}&rnd={{random}}&\_={{date}}

返回是 JSONP 形式的,要注意的是callback是不可省的,否则会直接不返回数据。

补档页面使用的接口

这个接口可以获取部分视频的信息,尚不确定什么条件下可以获取到,什么情况下不行。

http://www.bilibili.tv/html/arc/{{aid}}.html

返回的是 HTML 的片段。

脚本接口

其他脚本使用本脚本接口的方法

// 参数:第一个参数为对应的函数名(String,如”ping”、”getCid”)

// 后面的若干个参数为传给这个函数的参数

var rbb = function () {

if (!unsafeWindow.replaceBilibiliBofqi) unsafeWindow.replaceBilibiliBofqi = [];

unsafeWindow.replaceBilibiliBofqi.push(Array.apply(Array, arguments));

return unsafeWindow.replaceBilibiliBofqi.constructor.name !== ‘Array';

};

如上代码提供了调用本脚本接口的方法,如rbb(‘ping’, function () { alert(‘replace bilibili bofqi loaded!’); });可以检查本脚本是否已被加载。

脚本提供的接口包括下列接口

ping

检查本脚本是否被加载,或注册本脚本被加载时的回调函数

参数:callback 回调函数(Function)

参数: (无)

getAid

通过cid获得aid和pid信息

参数:cid 视频的chatid,如529622(Number)

onsucc 成功获取时的回调函数(Function)

参数:id 一个包括aid和pid的对象,如{“aid”:314,”pid”:1}。

onerror 获取失败的回调函数(Function)

参数:(无)

cid

获取当前视频的cid

参数:callback 返回cid的回调函数(Function)

参数:null 当前无法获取或不是视频页面(可忽略,获取后会在重新调用回调函数)

参数:cid 视频的cid(Number)

在一些情况导致替换了当前页面的播放器后,可能会反复调用该回调函数

getCid

通过aid和pid获取cid

参数:id 一个包括aid(articlecid,av号)和pid(pageid)的对象, 如{“aid”:314,”pid”:1};或{“aid”:314,”pid”:null}。(Object)

onsucc 成功获取时的回调函数(Function)

参数:cid(Number),如529622(对应第一种参数); 或一个pid到cid的键值对组(Object),如{“1″:529622}(对应第二种参数)

onerror 获取失败时的回调函数(Function)

参数:(无)

methods 获取cid使用哪些方法和这些方法的顺序(String构成的Array)

可能的取值:

“direct” 直接获取(可能包括HTML5、AssDown、PlayList等)

“api” 通过API获取

“undirect” 间接获取(通过相邻视频的cid猜测)

“cached” 读取缓存(如果之前获取过且用户没有禁用缓存)

说明:如果只需要一个分页请勿将pid留空,可以有更大的几率获取到cid。如果只需要当前视频的cid,请使用cid接口。

replaced

注册发生替换播放器事件时的回调函数

参数:callback 替换播放器时回调(Function)

参数:true 表示事件已经被注册

参数:cid 播放器被替换时调用,参数是视频的cid(Number)

added

注册添加评论等相关信息时的回调函数

参数:callback 替换播放器时回调(Function)

参数:(无)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值