电台与 HLS
接口列表
| 方法 | 路径 | 说明 |
|---|---|---|
PUT | /settings/hls-proxy | 更新 HLS 代理开关 |
GET | /settings/hls-proxy | 获取 HLS 代理开关 |
GET | /songs/{id}/hls/playlist | 反代 HLS 子层 m3u8 |
GET | /songs/{id}/hls/segment | 反代 HLS 切片 / key / init 段 |
PUT /settings/hls-proxy
更新 HLS 代理开关
开启/关闭 HLS 反代。开启时电台切片字节全部经本机转发(解决源站 Referer/CORS 拦截),关闭时仅 302 给 player。
需要认证
此接口需要 Bearer Token 认证
请求体
开关请求
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
enabled | boolean | 否 |
响应
200 - 返回 enabled 字段表示更新后的开关状态
类型: map[string]boolean
400 - 请求格式错误
类型: map[string]string
500 - 保存配置失败
类型: map[string]string
内容类型
- 请求:
application/json - 响应:
application/json
GET /settings/hls-proxy
获取 HLS 代理开关
获取“HLS 电台流通过本机反代回客户端”开关的当前状态
需要认证
此接口需要 Bearer Token 认证
响应
200 - 返回 enabled 字段表示开关状态
类型: map[string]boolean
内容类型
- 响应:
application/json
GET /songs/{id}/hls/playlist
反代 HLS 子层 m3u8
HLS 反代开启时,由 ServeProxy 改写后的 m3u8 内回链触发。拉取上游 m3u8 → 同源校验 → 改写 URI → 回写给 player。
需要认证
此接口需要 Bearer Token 认证
路径参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | integer | 是 | 歌曲 ID |
查询参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
u | string | 是 | 上游 m3u8 URL(base64url 编码) |
响应
200 - 改写后的 m3u8 文本
类型: string
400 - song_id 或 u 参数无效
类型: map[string]string
403 - 非同源 URL 拒绝代理(SSRF 防护)
类型: map[string]string
404 - 歌曲不存在
类型: string
502 - 上游不可用
类型: map[string]string
内容类型
- 响应:
application/vnd.apple.mpegurl
GET /songs/{id}/hls/segment
反代 HLS 切片 / key / init 段
由 HandlePlaylist 改写后的相对路径触发,反代音频切片、加密 key、init 段等二进制资源。透传 Range 请求。
需要认证
此接口需要 Bearer Token 认证
路径参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | integer | 是 | 歌曲 ID |
查询参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
u | string | 是 | 上游切片 URL(base64url 编码) |
响应
200 - 切片二进制内容
类型: file
206 - Range 请求的部分内容
类型: file
400 - song_id 或 u 参数无效
类型: map[string]string
403 - 非同源 URL 拒绝代理
类型: map[string]string
404 - 歌曲不存在
类型: string
502 - 上游不可用
类型: map[string]string
内容类型
- 响应:
application/octet-stream
