ibili
- 下载方式: npm i ibili
- 这是一个获取哔哩哔哩资源的工具库,可以下载哔哩哔哩的视频资源,也可以下载视频弹幕,下载用户评论等等之类
严重警告
:不可以将获取的资源用于恶意用途
- 有以下功能:
函数名 |
功能 |
loadbarrage |
下载视频弹幕 |
downVideo |
下载视频 |
loademojis |
下载表情包 |
loadcomments |
获取视频下的评论 |
loadsearch |
获取搜索结果 |
loadbarrage:下载视频弹幕
参数 |
类型 |
属性 |
说明 |
返回值 |
opt |
string |
|
如果opt是视频的av号,会根据av号获取相应的视频弹幕;如果是视频的播放地址(url),会根据视频的播放地址获取视频弹幕 |
返回promise对象 |
object |
url |
视频的直播地址 |
返回promise对象 |
num |
番剧的集数,这个属性只对 番剧 有效 |
返回promise对象 |
loadbarrage
的返回值是一个 promise
对象,promise
的值就是视频弹幕数据
使用案例:
- 比如说要下载 周杰伦的告白气球MV 的视频弹幕,可以知道播放地址就是
https://www.bilibili.com/video/av15227278?from=search&seid=16573406510590472928
const ibili = require('ibili')
const fs = require('fs')
ibili.loadbarrage('https://www.bilibili.com/video/av15227278?from=search&seid=16573406510590472928').then(function(data){
fs.writeFile('demo.json',JSON.stringify(data,null,5),function(){
console.log('ok')
})
})
- 比如要下载 香菜的告白气球 的视频弹幕,查看简介可以知道视频的av号为 51560305
const ibili = require('ibili')
const fs = require('fs')
ibili.loadbarrage('51560305').then(function(data){
fs.writeFile('demo.json',JSON.stringify(data,null,5),function(){
console.log('ok')
})
})
- 比如要下载整部番剧的弹幕,以 刀剑神域 Alicization 为例,要下载整部番剧的弹幕数据的话可以这样,首先要知道番剧的第一集的播放地址(url),然后要知道整部番剧的总集数(num)是多少
const ibili = require('ibili')
const fs = require('fs')
ibili.loadbarrage({
url:'https://www.bilibili.com/bangumi/play/ep250536',
num:24
}).then(function(data){
var merges = data.merge_barrages
console.log(merges.length)
fs.writeFile('demo.json',JSON.stringify(merges,null,5),function(){
console.log('ok')
})
})
75301
15443
ok
- 下载整部番剧的弹幕数据用时比较长,实际上num可以是任意值,但是要满足 num <= 总集数
downloadVideo:下载视频资源
参数 |
类型 |
返回值 |
opt |
object |
返回promise对象 |
属性 |
类型 |
说明 |
url |
string,Array |
视频的播放地址 |
av |
string,Array |
视频的av号 |
num |
number |
番剧的集数,这个属性只对 番剧 有效 |
sessdata |
string |
如果登陆哔哩哔哩的话,在返回的响应中的Cookie里边会有一个SESSDATA值 |
type |
string |
如果值为 default,那么会下载视频,type的默认值就是 default |
如果值为 silent,那么会下载无声视频 |
如果值为 audio,那么会下载音频 |
folder |
string |
存放视频的路径,默认值是 meida,因此默认会将下载的视频存放在 media文件夹 里边 |
filename |
string |
自定义下载的视频的名称,如果不设置,会调用默认值 |
oncomplete |
function |
视频下载结束之后会触发 oncomplete事件 |
progress |
object |
设置下载进度条的参数 |
属性 |
类型 |
说明 |
labelname |
string |
设置进度条的标签,默认值是 Download progress |
length |
number |
设置进度条的长度,默认值是50 |
url
和 av
一般只需要一个就可以了,但是如果两个参数都有,那么优先使用 av
- 使用案例:
- 比如要下载 周杰伦告白气球MV,可以知道视频的播放地址就是
https://www.bilibili.com/video/av15227278?from=search&seid=1147385259116260142
const ibili = require('ibili')
ibili.downloadVideo({
url:'https://www.bilibili.com/video/av15227278?from=search&seid=1147385259116260142'
}).then(()=>{
console.log('视频下载完成!')
})
- 同样也可以使用av号下载视频资源
- 还可以下载整部番剧的视频资源,比如下载 群居姐妹整部番剧,首先要知道番剧第一集的播放地址(url),还有整部番剧的总集数(num)
const ibili = require('ibili')
ibili.downloadVideo({
url:'https://www.bilibili.com/bangumi/play/ep63865',
folder:'media/群居姐妹',
sessdata:'b6714909%2C158***3693%2C1a29f0c1',
num:12
}).then(()=>{
console.log('番剧下载完成!')
})
loademojis:下载表情包
参数 |
类型 |
属性 |
说明 |
返回值 |
opt |
object |
folder |
存放表情包资源的路径,默认值是 media/picture |
返回promise对象 |
const ibili = require('ibili')
ibili.loademojis({}).then(()=>{
console.log('表情包下载完成!')
})
loadcomments: 获取视频下的评论
参数 |
类型 |
值 |
说明 |
opt |
string |
|
视频的播放地址(url)或者 视频的av号 |
object |
|
如果opt是object,可以看第二个表格 |
page |
number |
|
页数 |
mode |
string |
default |
获取格式化之后的评论信息,默认值是default |
string |
reply |
获取无嵌套关系的评论与回复 |
string |
no_reply |
只获取评论,没有回复 |
string |
init |
获取评论的原始数据 |
- 如果 opt是object,那么可以忽略第二个参数page,和第三个参数mode,opt的属性如图:
参数 |
属性 |
类型 |
值 |
说明 |
opt |
url |
string |
|
视频的播放地址(url) |
av |
string |
|
视频的av号 |
page |
number |
|
页数 |
mode |
string |
default |
获取格式化之后的评论信息,默认值是default |
string |
reply |
获取无嵌套关系的评论与回复 |
string |
no_reply |
只获取评论,没有回复 |
string |
init |
获取评论的原始数据 |
使用案例:
const ibili = require('ibili')
const fs = require('fs')
ibili.loadcomments({
url:'https://www.bilibili.com/video/av15227278?from=search&seid=11837609076354078745'
}).then(data=>{
fs.writeFile('demo.json',JSON.stringify(data,null,5),function(){
console.log('ok')
})
})
loadsearch: 获取搜索结果
参数 |
类型 |
说明 |
opt |
string |
搜索内容 |
object |
如果opt是object,请看第二个表格 |
page |
number |
页数 |
参数 |
属性 |
类型 |
值 |
说明 |
opt |
content |
string |
|
搜索内容 |
search |
string |
|
搜索内容 |
page |
number |
|
页数 |
mode |
string |
default |
获取格式化之后的搜索结果,默认值是 default |
string |
init |
获取原始的搜索结果 |
使用案例:
const ibili = require('ibili')
const fs = require('fs')
ibili.loadsearch({
content:'告白气球'
}).then(data=>{
fs.writeFile('demo.json',JSON.stringify(data,null,5),function(){
console.log('ok')
})
})