LunaTV 订阅配置指南一条链接实现播放源同步与自动更新【免费下载链接】LunaTV本项目采用 CC BY-NC-SA 协议禁止任何商业化行为任何衍生项目必须保留本项目地址并以相同协议开源项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTV你们站的搜索框怎么一直有内容如果你部署过开源影视聚合播放器 LunaTV又名 MoonTV大概率被问过这句话——页面、播放器、管理后台启动后全部就绪唯独播放源列表是空的得自己一个个收集、填写。LunaTV 订阅配置就是干这个的把整套播放源配置压缩成一个链接拿到链接即可一键同步还能叠加自动更新。下面按一份配置的生命周期讲完它的生成、落地、自动迭代与报错处理。第一步编写配置文件——订阅链接的完整构成订阅链接的本体就是一份 JSON 配置文件核心字段如下字段含义说明cache_time接口缓存时间秒默认 7200控制资源站接口结果的缓存时长api_site视频源站点列表每站含key唯一标识、apivod JSON API 根地址、name界面显示名、detail可选网页详情根 URLcustom_category自定义分类由typemovie/tvquery组合作唯一标识在导航栏生成个性化影视分类lives直播源列表每源含name、urlm3u 地址、ua可选、epg可选节目单地址一份最小可用的配置文件长这样{ cache_time: 7200, api_site: { example: { api: https://example.com/api.php/provide/vod, name: 示例资源, detail: https://example.com } }, custom_category: [ { name: 华语, type: movie, query: 华语 } ], lives: { example_live: { name: 示例直播, url: https://example.com/live.m3u } } }两个注意点api_site里的站点要求符合苹果 CMS V10 API 格式即苹果 CMS V10 资源站常见的/api.php/provide/vod接口形式LunaTV 靠它做搜索和详情key建议用小写字母和数字避免特殊字符引发解析问题。第二步编码与托管——订阅链接怎么生成JSON 写好后还不能直接托管要先做 Base58 编码。Base58 是一种只用 58 个不易混淆字符的编码方式编出来就是一串可直接放进 URL 的字符串不需要任何转义。把编码后的字符串存成纯文本文件放到任意能返回文本的 HTTP 服务上——静态托管、对象存储、自己站点的一个目录都行——得到形如https://example.com/config.json的地址这就是订阅链接。⚠️ 这里是最常见的翻车点托管的内容必须是编码后的字符串。直接上传 JSON 明文后面拉取一定解码失败。第三步落地——粘贴链接、拉取配置、保存生效登录站长账号进入管理后台找到配置订阅区域对应源码 src/app/admin/page.tsx操作分三步在订阅URL输入框中粘贴订阅链接点击拉取配置后端请求该地址、做 Base58 解码成功后把解码出的 JSON 自动填入下方的配置文件文本框对应源码 src/app/api/admin/config_subscription/fetch/route.ts花十秒检查 JSON 内容是否完整确认后点保存。保存时后端会再做一次JSON.parse校验通过后配置即时生效视频源、自定义分类、直播源一起更新。不想走拉取流程也行直接把 JSON 填进文本框再点保存两条路走的是同一个保存接口结果完全一致。第四步让配置自动迭代——自动更新开关与定时任务流程配置订阅区域底部有一个自动更新开关。开启后定时任务对应源码 src/app/api/cron/route.ts会定期执行固定动作请求订阅地址 → Base58 解码 → 校验 JSON 合法性 → 更新配置文件并刷新内存中的配置缓存 → 记录最后检查时间显示在订阅区域右上角。触发有两个硬性条件订阅地址已填写 开关开启缺一即跳过日志会明确记录跳过刷新未配置订阅地址或自动更新。所以开完开关务必确认订阅 URL 没有留空。适合开启的场景播放源地址变动频繁的站点、多人协作维护配置站长更新订阅文件所有开启自动更新的实例自动跟进。如果你希望每次配置变化都经过人工确认就保持开关关闭改为手动拉取。第五步拉取/保存失败时的排查清单五种典型报错按出现概率排序拉取配置失败Base58 解码失败订阅地址返回的不是合法 Base58 字符串。大概率是上传了 JSON 明文忘了编码或托管服务对文件做了二次处理换行、转码。先确认文件内容是编码后的字符串。配置文件格式错误请检查 JSON 语法解码成功但内容不是合法 JSON——多了一个逗号、少了一对括号、混入了注释JSON 不支持注释。用任意在线 JSON 校验工具本地验证后再重新编码。权限不足只有站长可以拉取配置订阅订阅拉取只对站长开放登录账号必须与USERNAME环境变量一致。检查是否用部署时设置的站长账号登录。不支持本地存储进行管理员配置NEXT_PUBLIC_STORAGE_TYPE为localstorage时管理后台的保存操作会被直接拒绝。改为kvrocks、redis或upstash之一再重试。拉取成功但保存报错优先检查文本框内容是否被截断重复的key字段会导致系统在合并视频源、自定义分类、直播源时触发去重确认各条目标识唯一。第六步权限与安全边界订阅功能方便但权限收得很紧这几点对站长有用身份双重校验拉取接口和保存接口都会校验登录身份并强制要求当前用户与USERNAME环境变量一致普通用户即使知道后台地址也无法修改配置双重 JSON 校验前端拉取解码后先提示格式问题后端保存时再执行一次JSON.parse两次把关降低脏数据入库的概率合并策略从配置文件引入的源标记为from: config手动添加的标记为from: custom两者合并互不覆盖对应源码 src/lib/config.ts订阅更新不会冲掉你手工加的源分发提醒不要把订阅链接和站点地址公开发布到社交平台链接背后就是站点完整的配置结构。项目采用 CC BY-NC-SA 协议禁止商业化衍生项目须保留本项目地址并以相同协议开源。收尾保存新订阅前的两件事 ✅先备份拉取成功后别急着保存把文本框里原有的配置文件内容复制出来留存防止切换源后原有内容丢失再实测新订阅生效后实际播放一两部片确认源可用再考虑开启自动更新。更多字段细节与环境变量说明以 README.md 中的官方文档为准。【免费下载链接】LunaTV本项目采用 CC BY-NC-SA 协议禁止任何商业化行为任何衍生项目必须保留本项目地址并以相同协议开源项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTV创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考