LunaTV 播放源订阅完整指南:一条链接导入全部配置,还能自动更新
【免费下载链接】LunaTV本项目采用 CC BY-NC-SA 协议,禁止任何商业化行为,任何衍生项目必须保留本项目地址并以相同协议开源项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTV
你刚部署好 LunaTV(开源影视聚合播放器,也叫 MoonTV),第一次打开站点:首页没有片单,直播页没有频道,管理后台的配置栏一片空白。这时有人丢给你一个 https:// 开头的地址:"把你的后台填上这个就行。"这就是LunaTV 播放源订阅链接——视频源、自定义分类、直播源全部打包进一个地址里。这篇文章带你走通"导入 → 看懂字段 → 自动更新 → 排错"的完整链路。
订阅链接是什么:给配置文件配的"投递地址"
一句话定位:订阅链接是一份Base58 编码后的 JSON 配置文件托管在任意 HTTP 服务上的地址。站长维护一次文件,所有使用该链接的站点配置保持同步;拿链接的人不用读懂 JSON,粘贴地址、点一下拉取即可。它只解决一个问题:站点一个源都没有时,如何一次导入整套可播放的播放源。
动手前准备:这 4 项先备好 📌
- 运行环境:站点已部署完成,
NEXT_PUBLIC_STORAGE_TYPE配置为kvrocks、redis或upstash之一。用localstorage的话,保存配置会被直接拒绝。 - 站长账号:用部署时通过
USERNAME环境变量设定的那个账号登录管理后台——只有站长能拉取订阅和修改配置。 - 订阅链接:拿到手且浏览器能直接访问;文件内容必须是 Base58 编码后的字符串,不是 JSON 明文。
- 定时任务(可选):自动更新依赖 定时任务 的定期触发,不打算开自动更新可跳过这一项。
后台一键导入:先填地址,再拉取,最后保存
全部操作都在 管理后台 的**"配置订阅"区域**完成,按时间线走三步。
先:填写订阅 URL。在"订阅URL"输入框粘贴拿到的链接。输入框下方的提示写得很明确:要求 JSON 格式且使用 Base58 编码。
再:点击"拉取配置"。后端会向该地址发请求、做 Base58 解码,成功就把内容自动填进下方的"配置文件"文本框——相当于 拉取接口 替你拆开了"信封",把里面的 JSON 摆进配置盒。不想拉取也可以直接手动把 JSON 填进文本框,两种方式最终走的是同一个保存接口。
最后:检查后保存。花十秒扫一眼解码出来的 JSON 是否完整,再点击"保存"。后端保存时还会再做一次 JSON 语法校验,通过后配置即时生效——视频源、自定义分类、直播源一起更新。
配置文件字段速查表与最小示例
无论手填还是订阅拉取,最终都落到这份 JSON 上。把它读明白,才算真正握住订阅:
| 字段 | 含义 | 说明 |
|---|---|---|
cache_time | 接口缓存时间(秒) | 默认 7200,控制资源站接口结果的缓存时长 |
api_site | 视频源站点列表 | 每站含key(唯一标识,建议小写字母数字)、api(vod JSON API 根地址)、name(显示名)、detail(可选,网页详情根 URL) |
custom_category | 自定义分类 | 以type(movie/tv)+query作为唯一标识,在导航栏生成个性化影视分类 |
lives | 直播源列表 | 每源含name、url(m3u 地址)、ua(可选)、epg(可选,节目单地址) |
最小可用示例:
{ "cache_time": 7200, "api_site": { "dyttzy": { "api": "http://example.com/api.php/provide/vod", "name": "示例资源", "detail": "http://example.com" } }, "custom_category": [ { "name": "华语", "type": "movie", "query": "华语" } ] }一个容易忽视的细节:api_site里的站点必须符合标准苹果 CMS V10 API 格式,key里带特殊字符可能引发解析问题。配置生效后,播放页右侧会出现多源切换面板,哪个源可用一眼可见:
自动更新怎么开:两个条件、一套动作
"配置订阅"区域底部有个**"自动更新"开关**。它背后的 定时任务 会定期替你跑腿,但触发要同时满足两个条件:
- 订阅地址已填写(URL 非空);
- 自动更新开关为开启状态。
两者缺一,任务直接跳过。条件齐了之后,它依次做四件事:访问订阅地址取回内容 → Base58 解码 → 校验 JSON 合法性 → 更新配置文件并刷新内存中的配置缓存,顺手记下"最后检查时间"。
建议开启:
- 源站地址经常变动,自动更新定期拉最新配置,坏源不用你手动救;
- 多人协作维护配置,站长更新订阅文件后,开启自动更新的实例自动跟进。
建议关闭:
- 你希望每次配置变化都过一遍人眼,保持开关关闭,改成手动"拉取配置",逐次审核再保存。
报错对照表:现象、原因、解法一一对上
| 现象 / 报错 | 原因 | 解决 |
|---|---|---|
| Base58 解码失败 | 上传的是未编码的原始 JSON,或托管服务对文件做了换行、转码等二次处理 | 确认订阅文件是编码后的字符串,重新编码再上传 |
| 配置文件格式错误,请检查 JSON 语法 | 解码成功但内容不是合法 JSON:多逗号、少括号或混入注释 | 用任意 JSON 校验工具本地验证,修正后重新编码 |
| 权限不足,只有站长可以拉取配置订阅 | 登录的不是USERNAME对应的站长账号 | 换站长账号登录后重试 |
| 不支持本地存储进行管理员配置 | NEXT_PUBLIC_STORAGE_TYPE为localstorage | 改为kvrocks、redis或upstash再重试 |
| 拉取失败(请求失败 404 / 500 等) | 订阅地址本身不可达 | 用浏览器直接打开链接,确认托管正常 |
| 拉取成功但保存报错 | 文本框内容被截断,或存在重复的key | 对照原文补全文本框内容;系统会对视频源、自定义分类、直播源分别去重,清掉重复 key |
使用边界:谁能改,什么不能外传
- 权限收口:拉取接口 和 保存接口 都校验登录身份,且要求当前用户与
USERNAME环境变量一致——普通用户就算摸到后台地址也改不了任何东西。 - 双重 JSON 校验:前端拉取后的格式提示是第一道质检,保存时再执行一次
JSON.parse是第二道,两次把关压低脏数据入库的概率。 - 配置合并不互相冲掉:配置文件引入的源标记为
from: 'config',手动添加的标记为from: 'custom'(见 合并逻辑),两条账各记各的,订阅更新不会洗掉你自己加的源。 - 分享红线:订阅链接背后是你站点的完整配置结构,别把它和站点地址发到社交平台;项目采用 CC BY-NC-SA 协议,部署实例请勿用于商业用途。
写在最后:一条链路串起来
整条链路一句话概括:JSON 配置文件 → Base58 编码 → 托管成订阅链接 → 后台拉取解码 → 校验保存 →(可选)自动更新。动手前两条建议:
- 先备份当前配置文件再应用新订阅,防止切换源后原有内容丢失;
- 订阅生效后做一次实际播放测试,确认源真能放,而不是只看保存是否成功。
下一步动作:现在登录管理后台,打开"配置订阅"区域,把订阅链接粘进去点"拉取配置"——三分钟内你的站点就能从空白变成可播 ✅
【免费下载链接】LunaTV本项目采用 CC BY-NC-SA 协议,禁止任何商业化行为,任何衍生项目必须保留本项目地址并以相同协议开源项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTV
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考