ibi

ibili

能够迅速下载哔哩哔哩的视频弹幕,视频资源,评论等等

Showing:

Popularity

Downloads/wk

2

GitHub Stars

18

Maintenance

Last Commit

1yr ago

Contributors

1

Package

Dependencies

3

Size (min+gzip)

13.2KB

License

ISC

Type Definitions

Tree-Shakeable

No?

Categories

Readme

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){
    // 将数据存进demo.json文件中,你可以打开demo.json可以清楚的看到弹幕的数据
    fs.writeFile('demo.json',JSON.stringify(data,null,5),function(){
        console.log('ok')
    })
})
  • 比如要下载 香菜的告白气球 的视频弹幕,查看简介可以知道视频的av号为 51560305
const ibili = require('ibili')
const fs = require('fs')
// 使用 视频的av号说去视频弹幕
ibili.loadbarrage('51560305').then(function(data){
    // 将数据存进demo.json文件中,你可以打开demo.json可以清楚的看到弹幕的数据
    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) // 打印弹幕的总条数
    // 将数据存进demo.json文件中,你可以打开demo.json可以清楚的看到弹幕的数据
    fs.writeFile('demo.json',JSON.stringify(merges,null,5),function(){
        console.log('ok')
    })
})

// 打印结果
75301 // 可以看到整部番剧的弹幕有75301条
15443 // 下载整部番剧的弹幕用时 15秒
ok
  • 下载整部番剧的弹幕数据用时比较长,实际上num可以是任意值,但是要满足 num <= 总集数

downloadVideo:下载视频资源

参数 类型 返回值
opt object 返回promise对象
  • opt 有以下属性:
属性 类型 说明
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 设置下载进度条的参数
  • progress 对象的属性如下:
属性 类型 说明
labelname string 设置进度条的标签,默认值是 Download progress
length number 设置进度条的长度,默认值是50
  • urlav 一般只需要一个就可以了,但是如果两个参数都有,那么优先使用 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/群居姐妹', // 将视频资源存放在 media文件夹下的 群居姐妹 文件夹里
    sessdata:'b6714909%2C158***3693%2C1a29f0c1', // 使用 sessdata,这样可以下载 1080p的视频
    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' // 视频的播放地址(url)
}).then(data=>{
    // 将评论数据存储在demo.json文件里边
    fs.writeFile('demo.json',JSON.stringify(data,null,5),function(){
        console.log('ok')
    })
})

loadsearch: 获取搜索结果

参数 类型 说明
opt string 搜索内容
object 如果opt是object,请看第二个表格
page number 页数
  • 如果opt是object
参数 属性 类型 说明
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=>{
    // 将搜索结果数据存进 demo.json文件里边
    fs.writeFile('demo.json',JSON.stringify(data,null,5),function(){
        console.log('ok')
    })
})

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100