Free Player 通用播放器 0.1.0 正式版

Free Player / 开发者 / 源开发

写一个源,
不用改客户端。

源可以是线上 HTTP 服务,也可以是从云端下载的本地 JS 包。前者用任意语言实现 SourceProtocol v1;后者是单文件 JS,在客户端内置 QuickJS 中执行,不依赖任何外部环境。

协议版本 v1 语言无关
01

返回源列表

客户端先请求入口地址。地址没有路径时请求 /v1/sources;有路径时原样请求该地址。

02

声明源清单

在源列表里给出 id、名称、能力和版本。页面、筛选和登录方式都由这份清单决定。

03

实现内容与播放

至少实现信息流、搜索、详情、选集和播放。其余能力可选,未实现时返回 50100。

最小响应长这样

所有响应使用统一信封。业务错误也返回 HTTP 200,错误码放在 code 里;只有上游超时才使用 HTTP 504。

{
  "code": 0,
  "message": "ok",
  "data": {
    "sources": [
      {
        "id": "demo",
        "name": "示例源",
        "protocol": "1",
        "version": "1.0.0",
        "capabilities": ["feed", "search", "detail", "episodes", "play"]
      }
    ]
  },
  "trace_id": "c4d42cce1a477931"
}

示例数据不对应任何真实上游。不要内置账号、Cookie 或密钥,也不要把上游凭据下发给客户端。

先跑起来

下载示例网关,准备一个 MP4,然后启动:

python python_gateway_example.py
# 默认监听 http://127.0.0.1:8790
# 源 ID 为 demo

# 在客户端添加这个地址:
http://127.0.0.1:8790

用自检脚本检查全部端点:

python protocol_check.py --base http://127.0.0.1:8790

客户端会带上 X-Client-Id、X-Source-Protocol 和页面白名单;源可以校验,也可以忽略。

最少要实现这些

完整清单与字段说明见开发文档
GET /v1/sources 源列表与源清单 必需
GET /v1/{sid}/ui 菜单、首页标签、页面能力 必需
GET /v1/{sid}/feed 首页信息流 必需
GET /v1/{sid}/search 搜索 必需
GET /v1/{sid}/detail/{id} 条目详情 必需
GET /v1/{sid}/episodes/{id} 选集 必需
POST /v1/{sid}/play 播放计划与媒体地址 必需
GET /v1/{sid}/rank 榜单;未实现返回 50100 可选
GET /v1/{sid}/category 分类筛选;未实现返回 50100 可选
GET /v1/{sid}/comments 评论;未实现返回 50100 可选
写好了

提交给站点收录

如果希望更多用户看到,可以把源地址提交到视频源目录。审核通过后会出现在官网和客户端推荐列表。

提交源
先看看

浏览网友源

看看已经收录的源长什么样,或者直接把地址填进客户端。

视频源目录