inki-music-api
v2.0.7
Published
lx-music 自定义源 TypeScript + axios 封装,支持 MusicApi class 与外部源加载
Maintainers
Readme
inki-music-api
inki-music-api 是基于 TypeScript + axios 的 lx-music 自定义源封装包,核心导出 MusicApi class,支持:
- 统一配置化初始化
- 必须显式加载 source(本地/远程/代码)
- 外部源文件/代码动态加载
musicUrl走源脚本,其它接口走内置聚合实现
安装
npm install快速开始
const { MusicApi } = require('inki-music-api');
async function main() {
const api = new MusicApi();
await api.loadSourceFromFile('./your-source.js');
const result = await api.search('kw', '周杰伦', { page: 1, limit: 5 });
const first = result.list[0];
const url = await api.getMusicUrl('kw', first, '128k');
const lyric = await api.getLyric('kw', first);
const pic = await api.getPic('kw', first);
const hot = await api.getHot('kw', { page: 1, limit: 5 });
const rank = await api.getRank('kw', 'hot', { page: 1, limit: 5 });
console.log(url, lyric, pic, hot.total, rank.total);
}
main();配置项
type MusicApiConfig = {
initTimeout?: number;
requestTimeout?: number;
followMaxRedirects?: number;
rejectUnauthorized?: boolean;
retry?: {
retries?: number;
retryDelayMs?: number;
retryStatusCodes?: number[];
retryErrorCodes?: string[];
};
cache?: {
enabled?: boolean;
ttlMs?: number;
maxEntries?: number;
};
};默认配置:
{
initTimeout: 15000,
requestTimeout: 15000,
followMaxRedirects: 5,
rejectUnauthorized: false,
retry: {
retries: 2,
retryDelayMs: 200,
retryStatusCodes: [429, 500, 502, 503, 504],
retryErrorCodes: ['ECONNRESET', 'ECONNABORTED', 'ETIMEDOUT', 'EAI_AGAIN']
},
cache: {
enabled: true,
ttlMs: 30000,
maxEntries: 1000
}
}加载外部源
const api = new MusicApi();
await api.loadSourceFromFile('./my-source.js');
// 或
await api.loadSourceFromCode(sourceCode);API
init()updateConfig(partialConfig)loadSourceFromFile(filePath)loadSourceFromCode(code)loadSourceFromRemote(url, options)loadSourceFormRemote(url, options)loadSourceFormRmote(url, options)setSource(sourceInstance)getSupportedPlatforms()getCapabilities(source?)getSupportedSourceList()search(source, keywords, { page, limit })searchMusic({ name, singer, source, limit })findMusic({ name, singer, albumName, interval, source })getMusicUrl(source, musicInfo, quality)getLyric(source, musicInfo)getPic(source, musicInfo)getHot(source, { page, limit })getRank(source, rankType, { page, limit })getComment(source, musicInfo, { page, limit })getHotComment(source, musicInfo, { page, limit })getMusicDetailPageUrl(source, musicInfo)getSongListTags(source)getSongList(source, { sortId, tagId, page, limit })getSongListDetail(source, listId, { page, limit })dispatch(source, action, info)clearCache()
开发命令
npm run build
npm run typecheck
npm run lint
npm run format:check
npm test
npm publish