【源码-弹幕服务-Dplayer】Danmaku PHP API – 一个功能丰富的Dplayer.JS配套的可扩展视频站弹幕API服务器

  • Post author:
  • Post category:php




前言:


项目地址:

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为例。如果是自己写的播放器需要自行写代码)
                   let domain 



版权声明:本文为qq_30836733原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。