✦ Developer Docs · 第三方接入

xd音源
装进你的 APP

一份地址 + 一个 Key,即可把洛雪音乐、MusicFree 等第三方播放器接入 xd音源聚合接口。十一方平台曲库、多音质直链,由 v2 / v3 两个插件脚本自动完成全部请求与鉴权。

// 接入只需要一行地址
GET /v3/index.php?key=你的Key
→ xdyy-musicfree-xxxxxxxx.js
✓ 导入插件 · 切换音源 · 开始播放
Quick Start · 三步接入

先领钥匙,再选插件

接入前请先向管理员申请一个 API Key(后台「API Key 管理」生成)。Key 是唯一凭证,请妥善保管、完整复制。

1

获取 Key

联系管理员在后台生成 API Key。Key 与账号绑定,停用后立即失效(返回 403)。

2

选拼插件地址

洛雪音乐用 /v2/index.php?key=,MusicFree 用 /v3/index.php?key=,把 Key 拼在地址后面。

3

导入并播放

浏览器打开地址即下载脚本文件,导入对应播放器,切换音源为「xd音源」即可播放。

你的 APP

洛雪 / MusicFree
等第三方播放器

v2 / v3 分发

校验 Key 合法性
下发定制 JS 脚本

v1 聚合接口

解析播放地址
校验直链有效性

播放直链

200/206 校验通过
即可直接播放

Plugin v2 · 洛雪音乐 LX Music

v2 插件 · 洛雪自定义音源

适用于洛雪音乐桌面版 / 移动版。访问 v2 地址即下载一份标准格式的洛雪自定义音源脚本,脚本内已内置你的 Key、v1 接口地址与更新自检逻辑,导入即用。

接入地址

浏览器打开下面的地址(把 你的Key 换成后台生成的 Key),就会下载 xdyy-xxxxxxxx.js 脚本文件:

URL
# 洛雪音源脚本下载地址(key 必填)
https://xd.xm5201314.top/v2/index.php?key=你的Key

# Key 缺失或无效时返回 403 纯文本提示:
#   缺少 key 参数,正确格式: /v2/index.php?key=你的Key
#   Key 无效或已停用,请联系管理员

脚本内置请求契约

下发的脚本已封装好全部逻辑,这里说明它内部如何请求 v1 聚合接口,方便你排查问题或自研脚本对齐契约:

JavaScript
// ── v2 下发脚本内置逻辑(导入即用,无需手写)──

// 脚本头部常量(下发时已替换为你的专属值)
const API_URL = "https://xd.xm5201314.top/v1/index.php";  // v1 聚合接口
const API_KEY = "你的Key";                          // 鉴权凭证
const SCRIPT_MD5 = "脚本内容MD5";                 // 更新自检指纹

// 取歌曲ID:酷狗用 hash,QQ 用 songmid,其余平台用 id
const songId = musicInfo.hash ?? musicInfo.songmid ?? musicInfo.id;

// 请求播放链接:POST /music/url + X-Api-Key 鉴权头
const resp = await httpFetch(`${API_URL}/music/url?key=${API_KEY}`, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "X-Api-Key": API_KEY,          // ★ 鉴权头,必带
  },
  body: {
    source: "kg",        // 平台标识:kg/kw/mg/wy/tx/bilibili/qishui…
    musicId: songId,     // 歌曲ID
    quality: "320k"      // 音质:128k/320k/flac/flac24bit/hires…
  }
});

// ── 响应契约(switch code)──
// 200 → { code: 200, url: "https://…" }        成功,url 即播放直链
// 403 → 鉴权失败(Key 无效或已停用)
// 429 → 请求过速,稍后重试
// 500 → { code: 500, message: "获取URL失败, …" } 具体失败原因看 message
更新自检:脚本内置 SCRIPT_MD5 指纹,播放器启动时会 GET /script/lxmusic?checkUpdate={MD5}&key={KEY} 比对版本,服务端脚本一更新,客户端即可收到 updateAlert 更新提醒。

洛雪导入步骤

  1. 打开 洛雪音乐设置音源自定义音源
  2. 点击「导入」,选择刚下载的 xdyy-xxxxxxxx.js(桌面版也可直接把文件拖入窗口)。
  3. 在音源列表中切换到 xd音源,搜索任意歌曲测试播放。
  4. 播放无声音?到「自定义音源管理」里确认脚本状态为已启用,再检查 Key 是否被停用。
Plugin v3 · MusicFree

v3 插件 · MusicFree 聚合音源

适用于 MusicFree 播放器。访问 v3 地址即下载一份 CommonJS 插件脚本,可直接在「插件管理」中导入。它作为音源插件工作:先搜索歌曲,再把音源切换到「xd音源」播放。

接入地址

浏览器打开下面的地址(把 你的Key 换成后台生成的 Key),就会下载 xdyy-musicfree-xxxxxxxx.js 插件文件:

URL
# MusicFree 插件下载地址(key 必填)
https://xd.xm5201314.top/v3/index.php?key=你的Key

# 也可以在 MusicFree「插件管理 → 从网络安装」
# 直接填入上面的地址,省去手动下载

插件元信息与核心方法

插件脚本为 CommonJS 格式,核心是 getMediaSource 方法——把歌曲对象映射成播放地址:

JavaScript
// ── v3 下发插件的元信息 ──
module.exports = {
  platform: "xd音源",            // 音源切换列表里显示的名字
  version: "1.1.0",
  appVersion: ">0.1.0-alpha.0",  // 兼容的 MusicFree 版本
  srcUrl: "https://xd.xm5201314.top/v3/index.php?key=你的Key",  // 自动更新源
  cacheControl: "no-cache",      // 每次拉取最新脚本
  primaryKey: ["id", "platform"],
  getMediaSource: getMediaSource,  // ★ 核心方法
};

// ── 核心方法:歌曲 → 播放地址 ──
async function getMediaSource(musicItem, quality) {
  // 1) 平台识别:中/英文名自动映射("酷狗"→kg,"网易云"→wy)
  const source = mapPlatform(musicItem.platform || musicItem.$platform);

  // 2) 音质映射:low→128k / standard→320k / high→flac / super→hires
  const q = QUALITY_MAP[quality] || "320k";

  // 3) 歌曲ID:酷狗=hash,QQ=songmid,其余=id
  const musicId = musicItem.hash || musicItem.songmid || musicItem.id;

  // 4) 调 v1 聚合接口取直链(GET,参数全在 URL,兼容所有引擎)
  //    {API_URL}/music/url?key=…&source=…&musicId=…&quality=…
  const body = await callV1(source, musicId, q);

  return body ? { url: body.url } : null;  // null 时交给下一个插件
}
网络请求:插件优先使用 MusicFree 内置的 axios(15 秒超时),不可用时自动退化到全局 fetch;两种方式都无需额外配置。

平台映射表

插件会自动识别歌曲来源平台的名称(中英文都认),映射为 v1 接口的 source 标识:

musicItem.platform(识别规则)source 标识musicId 取值
酷狗 / kg / kugoukghash
酷我 / kw / kuwokwid
咪咕 / mg / migumgid
网易 / wy / netease / 163wyid
qq / 腾讯 / tx / tencenttxsongmid
bili / b站 / 哔哩bilibiliid(视频/BV)
汽水 / qishui / douyin / 抖音qishuiid
全民K歌 / qmkgqmkgshareid 或自带 url
快手 / ks / kuaishoukuaishoumanifest 直取
youtube / yt / 油管youtubeid
喜马拉雅 / ximalaya / xmlyxmlyid
特殊平台:快手不支持按 ID 取流,播放地址来自搜索结果的 manifest(先搜索后播放);全民K歌自带 url 时直接播放,否则用 shareid 解析分享页。

MusicFree 导入步骤

  1. 打开 MusicFree插件管理 → 右上角「+」。
  2. 选择「从网络安装」填入接入地址,或「导入本地文件」选择下载的 xdyy-musicfree-xxxxxxxx.js
  3. 搜索任意想听的歌。
  4. 播放前把音源切换为「xd音源」,即可取直链播放。
Parameters · 参数说明

接口参数一览

v2 / v3 脚本最终都会调用 v1 聚合接口取播放直链,这里统一说明各参数的取值规则。

请求参数

参数必填说明
key必填后台生成的 API Key。可放 URL 参数或 X-Api-Key 请求头(v2 走请求头,v3 两者都带,兼容性最好)。无效或停用返回 403。
source必填音源平台标识,见上方平台映射表,共 11 个:kg / kw / mg / wy / tx / bilibili / qishui / qmkg / kuaishou / youtube / xmly。
musicId必填歌曲唯一标识。酷狗传 hash,QQ 传 songmid,其余平台传 id;B站传视频 ID,全民K歌传 shareid
quality可选音质标识,默认 320k。各平台支持范围不同,见下方音质表;不支持的音质会自动就近降级。

各平台音质支持

标签越华丽代表音质越高:128kflachires

平台source支持的音质
酷狗kg128k320kflacflac24bithiresatmosmaster
QQ音乐tx128k320kflacflac24bithiresatmosatmos_plusmaster
网易云wy128k320kflacflac24bithiresatmosmaster
咪咕mg128k320kflacflac24bithires
酷我kw128k320kflacflac24bithires
B站bilibili128k320kflac
汽水音乐qishui128k320kflac
全民K歌qmkg128k320k
快手kuaishou128k320k
YouTubeyoutube128k320k
喜马拉雅xmly128k320k
MusicFree 音质映射:v3 插件把 MusicFree 的音质档位映射为 low→128kstandard→320khigh→flacsuper→hires,选不到的档位自动回退 320k

响应码说明

code含义处理建议
200成功url 字段即播放直链,已通过 200/206 + 音频类型校验,可直接播放。
403鉴权失败Key 缺失、无效或已停用,到后台核对 Key 状态。
429请求过速触发频率限制,稍后重试或给请求加节流。
500获取失败取流失败,message 字段含具体原因(如「歌曲不存在」)。
FAQ · 常见问题

接入路上小答疑

🔑 Key 从哪里来?能共用吗?
Key 由管理员在后台「API Key 管理」中生成,一个 Key 只对应一个授权,v2 和 v3 可以共用同一个 Key。Key 被停用后所有接口立即返回 403,请勿泄露给他人。
🔄 更新了脚本,客户端还是旧版行为?
洛雪 PC 端对脚本有缓存:先在「自定义音源管理」里彻底删除旧音源 → 重新导入新脚本 → 重启应用,三步缺一不可。v3 插件设置了 no-cache,一般无此问题。
🎵 为什么歌曲搜得到却放不出?
常见原因:① 音源没切换到「xd音源」;② 该歌曲取流失败(返回 500,可看 message);③ 快手平台需先搜索再播放,播放地址依赖搜索结果里的 manifest。
📱 手机端和桌面端有区别吗?
有细微差别:桌面端(PC User-Agent)会自动改走服务端代理链接(HMAC 签名、2 小时有效、支持 Range 断点续传),用于绕过部分 CDN 的 UA / Referer 校验;手机端返回直链播放。
🛠 想自研播放器直连接口可以吗?
可以。绕过 v2 / v3,直接 POST /v1/index.php/music/url,带 X-Api-Key 请求头和 {source, musicId, quality} JSON 体即可,响应契约与本文档一致。