大家从采集站看爱优腾的视频的时候,是否为无法一同看到弹幕而忧愁,其实我们可以通过爬虫从爱优腾抓取弹幕内容,添加到播放器中,从而实现沉浸式弹幕观看。

原理就是多数的采集网站通常会自带豆瓣的影视ID,那么我们就可以通过这个ID确定视频的官方来源,通过豆瓣抓取对应的影视官方的视频链接,然后再通过该链接抓取到对应的弹幕。

我们这里有两个例子,都是魔改的其他开源项目:

基于python的弹幕抓取项目

项目仓库

这个爬虫方案强烈建议直接部署在本地,或者国内的服务器上。因为我测试部署在国外的平台都会导致抓取不到链接,或者抓取到错误的链接的情况。

部署方式

本项目采用docker部署:

1
2
3
4
5
docker run -d \
--name fetch_danmu \
--restart unless-stopped \
-p 8080:8080 \
ghcr.io/seqcrafter/fetch_danmu:latest

API接口

假设部署在本地,接口地址为:http://127.0.0.1:8080/douban_id,参数为:

  • douban_id : 豆瓣的ID
  • episode_number : 剧集集数

本地curl的调用示例:

1
2
## 子夜归第一集弹幕
curl "http://127.0.0.1:8080/douban_id?douban_id=36481469&episode_number=1"

返回格式中的danmuku数据可以直接传给播放器例如ZyPlayer或者LibreTV等使用。

1
2
3
4
5
6
7
8
9
{
"code": 0,
"name": "36172040",
"danmu": 13223,
"danmuku": [
[0.0, "right", "#FFFFFF", "25px", "恭迎师祖出山"],
[0.0, "right", "#FFFFFF", "25px", "来支持献鱼啦"]
]
}

基于nodejs的弹幕抓取项目

项目仓库

这个可以部署到vercel或者netlify, 部署到远端更方便

部署方式

例如部署到netlify:

直接fork本仓库,然后在netlify中创建项目,一键开启即可.

API接口

假设部署在本地,接口地址为:https://{你的部署项目名}.netlify.app/api/v2/douban,参数为:

  • douban_id : 豆瓣的ID
  • episode_number : 剧集集数

本地curl的调用示例:

1
2
## 子夜归第一集弹幕
curl "https://{你的部署项目名}.netlify.app/api/v2/douban?douban_id=36481469&episode_number=1"

返回格式中的danmuku数据可以直接传给播放器例如ZyPlayer或者LibreTV等使用。

1
2
3
4
5
6
7
8
9
10
{
"code": 0,
"success": "true",
"errorMessage": "",
"danmu": 1230,
"danmuku": [
[0.0, "right", "#FFFFFF", "25px", "恭迎师祖出山"],
[0.0, "right", "#FFFFFF", "25px", "来支持献鱼啦"]
]
}

想试试?

打开我部署的LibreTV项目:

按照图上设置,首先打开资源开关,然后在弹幕设置中填入你部署好的API地址,名称随便写,地址写https://{你的部署项目名}.netlify.app/api/v2/douban

随便打开一个视频测试一下吧!

警告

我部署的libreTV的资源调用是有限的,请不要把这个站点当做你的观看站点,如有需要,请自行部署