Closed zhangn1985 closed 6 years ago
好像用python写会比较困难,倒不如直接调用nodejs
可以参考这个
https://github.com/kamikat/bilibili-playurl
相关js
https://static.hdslb.com/player/js/bilibiliPlayer.min.js?v=7d9a020e
另外这个接口并不像app.bilibili.com/playurl可以指定platform参数
https://interface.bilibili.com/v2/playurl?cid=15195741&appkey=84956560bc028eb7&otype=json&type=&quality=16&qn=16&sign=52415457788b3631f011df7d369a3633
https://interface.bilibili.com/v2/playurl?appkey=84956560bc028eb7&cid=15195741&otype=json&platform=html5&qn=16&quality=16&sign=275f9473af4465f7f1b44dc86b62016f&type=
对于一些用户来说 这个接口真没啥用
如果不是强迫多分辨率,其实v2没啥用。
那你可以用iPhone的接口,多分辨率 其中qn为16/64/80和pc应该一样
var appkey = 'YvirImLGlLANCLvM';
var appsecret= 'JNlZNgfNGKZEpaDTkCdPQVXntXhuiJEM';
https://app.bilibili.com/playurl?appkey=YvirImLGlLANCLvM&build=4140&buvid=ef5efdc0452641eb235cd424dfa03660&cid=15195741&device=phone&otype=json&platform=html5&qn=64&sign=d3d35035ef541600b3d25c0923715f3f
插个题外话:
发现现在大多数结果都是 http://upos-hz-mirror****.acgvideo.com/
优先,45*
无法直接播放,
backup_url
里面的 http://ws.acgvideo.com/
就没问题。
像我这种情况的多吗?
这个地址从来都没有看到过。
有一段时间了,愈来愈多。 这儿也有 https://github.com/zhangn1985/ykdl/issues/251#issue-300249282
platform=pc有来源限制 改用html5就行
我现在是自己过滤了一下,暂时能用。
还有,刚才发现有视频的 quality
是 48,需要添加。
wget "http://upos-hz-mirrorkodo.acgvideo.com/upgcxcode/41/57/15195741/15195741-1-80.flv?e=ig8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNC8xNEVE9EKE9IMvXBvE2ENvNCImNEVEK9GVqJIwqa80WXIekXRE9IMvXBvEuENvNCImNEVEua6m2jIxux0CkF6s2JZv5x0DQJZY2F8SkXKE9IB5to8euxZM2rNcNbUVhwdVhoM1hwdVhwdVNCM=&platform=pc&uipk=5&uipv=5&deadline=1520244769&gen=playurl&um_deadline=1520244769&rate=0&um_sign=886b1b6254b964f16ab18b3e5e9b1bfe&dynamic=1&os=kodo&oi=463345104&upsig=422a4cdb841c0605236481fc6cd01a9f" --referer "https://www.bilibili.com"
Resolving upos-hz-mirrorkodo.acgvideo.com (upos-hz-mirrorkodo.acgvideo.com)... 2
18.92.152.69, 27.148.203.40, 27.148.203.39, ...
Connecting to upos-hz-mirrorkodo.acgvideo.com (upos-hz-mirrorkodo.acgvideo.com)|
218.92.152.69|:80... connected.
HTTP request sent, awaiting response... 454 Unknown
2018-03-05 16:16:27 ERROR 454: Unknown.
和
wget "http://upos-hz-mirrorkodo.acgvideo.com/upgcxcode/41/57/15195741/15195741-1-80.flv?e=ig8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNC8xNEVE9EKE9IMvXBvE2ENvNCImNEVEK9GVqJIwqa80WXIekXRE9IMvXBvEuENvNCImNEVEua6m2jIxux0CkF6s2JZv5x0DQJZY2F8SkXKE9IB5to8euxZM2rNcNbUVhwdVhoM1hwdVhwdVNCM=&platform=pc&uipk=5&uipv=5&deadline=1520244769&gen=playurl&um_deadline=1520244769&rate=0&um_sign=886b1b6254b964f16ab18b3e5e9b1bfe&dynamic=1&os=kodo&oi=463345104&upsig=422a4cdb841c0605236481fc6cd01a9f" --referer "https://www.bilibili.com/"
Connecting to upos-hz-mirrorkodo.acgvideo.com (upos-hz-mirrorkodo.acgvideo.com)|
218.92.152.69|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 30695642 (29M) [video/x-flv]
上面referer为https://www.bilibili.com会出现454 设置https://www.bilibili.com/正常 还是referer的事 问题不大
@airdge 看了很久才发现哪里不一样。。。
居然是这样,也太讲究了。。。
https://github.com/SeaHOH/ykdl/commit/5a42ce8d878cc73b51f64f10b9178fd2d9f462dc
我把 api 参数 quality
替换为 qn
,然后发现这样好用多了,可以减少 api 请求次数;
测试后发现 http://www.bilibili.com/
和 https://www.bilibili.com/
都可以作为 referer 使用,
获取视频页面 Url 时使用 http 会重定向到 https,api Url 不会重定向,统一修改为 https。
最后发现个问题,我这里不管用哪个 api 返回的结果好像都没变化,感觉是根据 User-Agent
判断的,没仔细测试。
看了你的patch,终于发现我之前犯的一个错误。
for q in self.supported_stream_profile: 改成 for q in self.qlt_2_profile.keys(): 这样就能正确处理qn了吧?
@SeaHOH 你觉得patch OK,就提PR,自己合并吧。
好,那我就把 supported_stream_profile 去掉咯。
刚才修改时发现个问题,bangumi.py 中的 get_api_url 完全可以用 video.py 中的来替代,
只使用 https://interface.bilibili.com/playurl
这一个 api 就够了。
那啥,referer 又失效了,难道还要查 cookie?
改成 api v2 就好了。。。
@SeaHOH 有些(最新)番剧CID必须要bangumi接口, 不然会出现 video is hidden 错误
有些(最新)番剧CID必须要bangumi接口, 不然会出现 video is hidden 错误
原来如此
不过。。。好吧,我这儿 v2 也不行了,无法播放。。。只好继续用 http://ws.acgvideo.com
,
怀疑 secretkey 过期了,这是咋个算出来的?能更新吗?
发现问题所在:
因为我传了 otype=json
以 json 格式解析,所以怎么都没有浏览权限,恢复成 xml 就好了。
@zhangn1985 还有 interface api 可以直接改成 v2 了,我这里这样才正常,你试试?
还有个问题就是,live 就一个质量?怎么换感觉都一样。。。分辨率相同,码率(看下载速率)都差不多。
大部分直播间都不支持清晰度切换。
@zhangn1985 试试下面这个能不能正常工作?我这里测试了几十个视频没遇到问题。 https://github.com/zhangn1985/ykdl/tree/bilibili-v2-api
@SeaHOH 谢谢,已经合并到主线了。
还有 bangumi v2 api 没解决,但是我不会反向,搞出 secretkey 的人真厉害。
请问appsecret是怎么获得的?好奇。谢谢!
http://interface.bilibili.com/playurl
http://bangumi.bilibili.com/player/web_api/playurl
可能很快就要不能用了 它们会被v2 api,取代:http://interface.bilibili.com/v2/playurl
这个api有如下特点: 如果按v1 api传参数,将只能得到最低清晰度。 v2 api需要appkey和正确的check_sum
目前v1api 的状态: 只能得到自动清晰度和最低清晰度。