我经常通过哔哩哔哩看学习视频,一般视频都很长,分上百个P,每次学一段时间这个教程以后可能会由于种种原因忘了这个视频还没学完,因此专门写了一个小脚本来把视频的每一集的标题记录一下,方便以后的复习和记录学习的情况。也可以更方便的做笔记。

获取视频的每一集的数据

const videoData = window.__INITIAL_STATE__.videoData
let bvid = videoData.bvid
let baseUrl = 'https://www.bilibili.com/video/'
let template = 
`- [ ] [p$page$ $part$]($partUrl$)
`
let resStr = ''
for(const page of videoData.pages) {
    let tempstr = template.replace('$part$', page.part).replace('$page$', page.page).replace('$url$', baseUrl + bvid).replace('$partUrl$',`${baseUrl}${bvid}?p=${page.page}`)
    resStr += tempstr
}
console.log(resStr)

会输出这种格式的文本,具体可以修改template字符串

- [ ] [p1 第1步 安装Ubuntu](https://www.bilibili.com/video/BV1Wb411S7JE?p=1)
- [ ] [p2 第2步 安装VMware Tools](https://www.bilibili.com/video/BV1Wb411S7JE?p=2)
- [ ] [p3 第3步 快照](https://www.bilibili.com/video/BV1Wb411S7JE?p=3)

template字符串

支持的模板如下:

  • $part$ 每一集的标题
  • $page$ 每一集的编号
  • $url$ 整个视频的url
  • $partUrl$ 视频每一集的url

加强版-可以给前n个视频打勾

let done = 8; // 学习过前几集


const videoData = window.__INITIAL_STATE__.videoData
let bvid = videoData.bvid
let baseUrl = 'https://www.bilibili.com/video/'
let template = 
`- [$checked$] [$part$]($partUrl$)
`
let resStr = ''
for(const page of videoData.pages) {
    let tempstr = template.replace('$part$', page.part).replace('$page$', page.page).replace('$url$', baseUrl + bvid).replace('$partUrl$',`${baseUrl}${bvid}?p=${page.page}`)
    if(page.page <= done) {
        tempstr = tempstr.replace('$checked$', 'x')
    } else {
        tempstr = tempstr.replace('$checked$', ' ')
    }
    
    resStr += tempstr
}
console.log(resStr)
console.log(videoData.pic)

使用方法