DIYP(DIY Player)在国内小众电视盒子圈子里以灵活的插件机制著称,然而默认的直播源接口往往只能满足大众需求。想要把自家内容库或第三方API接入DIYP时,必须在后台自行定义一个符合DIYP协议的接口,否则播放器会把请求当成无效地址直接报错。
DIYP约定的直播源返回值为JSON数组,每条记录包含name(频道名称)、url(播放地址)和group(分组标签)三个必填字段。播放器在解析时会先检查status字段是否为200,再遍历data数组进行渲染。换句话说,只要返回结构保持一致,后端语言、框架甚至数据库都可以自由选型。
在基于 Django 的 DIYP 管理后台里,最直接的做法是新建一个视图函数,挂载到/api/live_sources/路径,并在urls.py中声明路由。视图内部读取本地 SQLite、远程 MySQL 或者第三方 RESTful 服务,随后把数据组装成 DIYP 规范的 JSON。
views.py 中定义 def live_sources(request):。requests.get() 或 ORM 拉取原始频道信息。{"status":200,"data":[...]} 的字典结构。JsonResponse 返回,并在 settings.py 里加入 CORS 允许。from django.http import JsonResponse
import requests
def live_sources(request):
raw = requests.get('https://example.com/api/channel_list').json()
data = []
for item in raw.get('channels', []):
data.append({
"name": item["title"],
"url": item["stream_url"],
"group": item.get("category", "未分类")
})
return JsonResponse({"status":200, "data": data})
不少开发者在部署时忘记打开跨域头,导致 DIYP 客户端报“Network Error”。检查Access-Control-Allow-Origin是否包含*或播放器所在的 IP。还有一种情况是返回的url缺少协议前缀(http/https),DIYP 会直接把它当成相对路径,播放失败。最保险的做法是统一在视图层对url做一次正则校验,确保以http://或https://开头。
文章版权归作者所有,未经允许请勿转载。
参与讨论
暂无评论,快来发表你的观点吧!