前言:
项目地址:https://github.com/HaruhiYunona/Danmaku-PHP-API
开发博客:https://mdzz.pro
(本人就是开发者)
本API是一个弹幕服务器API, 为DPlayer提供弹幕服务器支持,也可以自行根据接口返回数据内容开发弹幕流解析。还包含丰富的扩展插件,可以提供额外的解析服务(目前支持Bilibili)。该API同时支持DPlayer V2 V3接口,自由度较高。
以下是本API已经实装的实例(下面介绍的其他API也可以照格式使用,不过就不一一赘述):
整个API实际应用的Demo: https://api.mdzz.pro/demo/
B站视频解析Demo: https://api.mdzz.pro/bilibili/parse/video?bv=BV1Na411r7tN&p=1
B站弹幕解析Demo: https://api.mdzz.pro/danmaku/bilibili/get/v3/?bv=BV1Na411r7tN
本站弹幕Demo: https://api.mdzz.pro/danmaku/server/entrance/v3/?id=BV1Na411r7tN
一、安装
本接口为即装即用式,将内容放置于服务器网站根目录下,绑定接口域名后,配置根目录下config.php即可使用。不过您需要对本API设置伪静态规则才能正常访问。
1) 修改config.php配置
配置字段列表 define(“配置名”, “配置的值”):
配置名 | 配置可能值 | 默认 | 作用 |
---|---|---|---|
DB_SERVER_NAME | 您的数据库地址。如为本机请填localhost | localhost | 数据库链接时应用的数据库地址 |
DB_USER_NAME | 您的数据库用户名 | root | 数据库链接时应用的数据库用户名 |
DB_PASSWORD | 您的数据库用户密码 | 123456 | 数据库链接时应用的数据库密码 |
DB_NAME | 您的数据库名 | danmaku | 数据库链接时应用的数据库名 |
DB_PORT | 您的数据库端口 | 3306 | 数据库链接时应用的数据库端口 |
ROOT | 网站域名 | Danmaku | 在将本API作为网站子文件夹使用时是一个有效的筛除多余路径的设置。它强制定义了本API的根目录名称 |
TABLE_PRE_NAME | /^[a-zA-Z0-9]+$/ | danmaku | 用于定义API所创建表的前缀,防止与其他项目共用同一个库时,数据表混淆 |
PORT_VERSION_TRD | boolean | true | 用于控制API接口版本开放(针对DPlayer)。不同版本的接口返回内容不一样 |
PORT_VERSION_DUB | boolean | true | 同上 |
TOKEN_VERIFY | boolean | true | 设置在用户向API发送弹幕时是否需要正确的token,如果不需要验证token,可设置关闭 |
API_CACHE_TIME | number | 600 | 用于控制缓存时间。部分允许缓存结果的会生成缓存以节省服务器开支 |
API_HTTPS | boolean | false | 是否将接口返回的内容中URL全部转换为HTTPS |
2) 设置伪静态
您需要在API根目录新建一个.htaccess 文件,然后写入以下对应的内容
Nginx设置伪静态
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php last;
}
//如果您使用面板,可以直接在面板的网站管理内伪静态选项写入这个
Apache设置伪静态
Options -MultiViews
RewriteEngine On
RewriteCond %{
REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php [QSA,L]
配置好后您应该就可以使用本API了。DEMO文件夹下有demo演示,但需要您根据注释修改一点内容才可以尝试demo。
二、API介绍
由于第三方API是通过域名面向服务对象的,所以以下接口域名均以domain.com示例。实际使用请将domain.com替换为您绑定的的域名
1、本站弹幕API
由于DPlayer的设计,会自动在接口上增加/V3,该API将提供存储在本站的弹幕。如果您要请求V3版本弹幕,请在接口后加上V3, 请求V2弹幕同理
http://domain.com/danmaku/server/entrance/
1) 允许请求类型
POST GET
2) 请求内容
GET:获取本站弹幕
参数 | 请求允许值 |
---|---|
id | 您在程序设计时所使用的视频ID。以Bilibili为例,您用BV作为id的话就会获取该BV所记录的弹幕。除此之外还可以用aid,cid,自己设计的id等 |
POST:向本站服务器发送一条弹幕
参数 | 请求允许值 | 备注 |
---|---|---|
author | /^[a-zA-Z0-9]{1,50}$/ | 发送弹幕的用户ID |
color | /^[a-zA-Z0-9]{1,50}$/ | 发送弹幕的颜色。16进制色。 |
id | /^[a-zA-Z0-9]{1,50}$/ | 视频ID。您可以根据自己需要设置id。同GET的id,用于识别视频 |
text | string | 发送的弹幕内容 |
time | float | 弹幕处于视频的时间。浮点数 |
token | MD5(32bit) | TOKEN用于验证用户身份。默认为32位MD5码,逻辑为author+id |
type | number | 弹幕类型,控制弹幕是滚动还是悬停消失 |
3) 响应样本
//GET返回弹幕(v2):
{
"code": 0, //状态码
"version": 2, //版本号
"danmaku": [ //弹幕内容
[1.981745, 0, "16777215", "e29a22", "测试弹幕"],
[4.155057, 0, "16777215", "deea32", "测试"]
// 出现时间 类型 颜色 用户ID 弹幕内容
],
"msg": "[Danmaku]本站弹幕加载完成" //消息内容
}
//GET返回弹幕(V3)
{
"code": 0,
"version": 3,
"data": [
[1.981745, 0, "16777215", "e29a22", "测试弹幕"],
[4.155057, 0, "16777215", "deea32", "测试"]
],
"msg": "[Danmaku]本站弹幕加载完成"
}
//POST返回发送弹幕的执行结果
{
"code": 0,
"msg": "弹幕发送成功~"
}
//所有接口成功状态码均为0,如果失败会是别的参数。故代码判断返回结果中code即可判断执行结果
4) 调用代码示例(以DPlayer为例。如果是自己写的播放器需要自行写代码)