musicfree-api
Version:
Multi-platform music API library for downloading and searching across various music services
260 lines (179 loc) • 6.04 kB
Markdown
# MusicFree API Library
一个多平台音乐搜索和下载API库,支持多个主流音乐平台,包括网易云音乐、QQ音乐、酷狗音乐、酷我音乐和小米音乐。
## 特性
- 支持多个音乐平台
- 统一的API接口
- 支持搜索歌曲、专辑、艺人、歌单和歌词
- 支持获取不同音质的音乐下载链接
- 支持获取歌词
- 支持导入歌单
- 支持获取排行榜
## 安装
```bash
npm install musicfree-api
```
## 快速开始
### 搜索歌曲
```javascript
const musicAPI = require('musicfree-api');
// 获取所有可用平台
const platforms = musicAPI.getAvailablePlatforms();
console.log(platforms);
// 搜索歌曲
async function searchSongs() {
try {
// 在网易云音乐上搜索歌曲
const results = await musicAPI.search('wy', '周杰伦', 1, 'music');
console.log(`找到 ${results.data.length} 首歌曲`);
// 获取第一首歌的下载链接
if (results.data.length > 0) {
const song = results.data[0];
console.log(`歌曲: ${song.title} - ${song.artist}`);
// 获取高质量下载链接
const mediaSource = await musicAPI.getMediaSource('wy', song, 'high');
console.log(`下载链接: ${mediaSource.url}`);
// 获取歌词
const lyric = await musicAPI.getLyric('wy', song);
console.log(`歌词: ${lyric.rawLrc}`);
}
} catch (error) {
console.error('搜索错误:', error);
}
}
searchSongs();
```
### 获取排行榜
```javascript
const musicAPI = require('musicfree-api');
async function getCharts() {
try {
// 获取QQ音乐排行榜
const topLists = await musicAPI.getTopLists('qq');
console.log('可用排行榜:');
// 格式因平台而异
if (Array.isArray(topLists)) {
topLists.forEach((list, index) => {
console.log(`${index + 1}. ${list.title}`);
});
// 获取第一个排行榜详情
if (topLists.length > 0) {
const detail = await musicAPI.getTopListDetail('qq', topLists[0]);
console.log(`排行榜: ${topLists[0].title}`);
console.log(`歌曲数: ${detail.musicList.length}`);
}
} else if (topLists.data) {
// 处理分类排行榜
topLists.data.forEach(category => {
console.log(`[${category.title}]`);
category.data.forEach(list => {
console.log(`- ${list.title}`);
});
});
}
} catch (error) {
console.error('获取排行榜错误:', error);
}
}
getCharts();
```
## API 参考
所有API函数都需要指定平台代码作为第一个参数:
- `wy`: 网易云音乐
- `qq`: QQ音乐
- `kg`: 酷狗音乐
- `kw`: 酷我音乐
- `xiaomi`: 小米音乐
### 核心功能
#### `getAvailablePlatforms()`
获取所有可用的平台及其名称。
返回: 包含平台代码和名称的对象。
#### `search(platform, keyword, page = 1, type = 'music')`
在指定平台上搜索内容。
参数:
- `platform`: 平台代码
- `keyword`: 搜索关键词
- `page`: 页码 (默认: 1)
- `type`: 搜索类型,可以是 'music', 'album', 'artist', 'sheet', 'lyric'
返回: 包含搜索结果的对象。
#### `getMediaSource(platform, song, quality = 'high')`
获取歌曲的媒体源URL。
参数:
- `platform`: 平台代码
- `song`: 从搜索结果获得的歌曲对象
- `quality`: 音质,可以是 'low', 'standard', 'high', 'super'
返回: 包含媒体URL的对象。
#### `getLyric(platform, song)`
获取歌曲的歌词。
参数:
- `platform`: 平台代码
- `song`: 从搜索结果获得的歌曲对象
返回: 包含歌词的对象。
### 专辑和艺人
#### `getAlbumInfo(platform, album)`
获取专辑详情。
参数:
- `platform`: 平台代码
- `album`: 从搜索结果获得的专辑对象
返回: 包含专辑详情和曲目的对象。
#### `getArtistWorks(platform, artist, page = 1, type = 'music')`
获取艺人的作品(歌曲或专辑)。
参数:
- `platform`: 平台代码
- `artist`: 从搜索结果获得的艺人对象
- `page`: 页码 (默认: 1)
- `type`: 作品类型,可以是 'music' 或 'album'
返回: 包含艺人作品的对象。
### 歌单和排行榜
#### `importMusicSheet(platform, url)`
从URL导入歌单。
参数:
- `platform`: 平台代码
- `url`: 歌单URL
返回: 包含歌单曲目的数组。
#### `getTopLists(platform)`
获取平台上可用的排行榜。
参数:
- `platform`: 平台代码
返回: 包含排行榜的数组或对象(视平台而定)。
#### `getTopListDetail(platform, topList)`
获取排行榜详情。
参数:
- `platform`: 平台代码
- `topList`: 从getTopLists获得的排行榜对象
返回: 包含排行榜详情和曲目的对象。
#### `getRecommendSheetTags(platform)`
获取推荐的歌单标签。
参数:
- `platform`: 平台代码
返回: 包含标签的对象。
#### `getRecommendSheetsByTag(platform, tag, page = 1)`
获取特定标签的推荐歌单。
参数:
- `platform`: 平台代码
- `tag`: 从getRecommendSheetTags获得的标签对象
- `page`: 页码 (默认: 1)
返回: 包含推荐歌单的对象。
#### `getMusicSheetInfo(platform, sheet, page = 1)`
获取歌单信息和曲目。
参数:
- `platform`: 平台代码
- `sheet`: 从搜索结果获得的歌单对象
- `page`: 页码 (默认: 1)
返回: 包含歌单详情和曲目的对象。
## 命令行工具
库同时提供了一个命令行工具,可以通过以下方式使用:
```bash
npx musicfree-api
```
或者全局安装:
```bash
npm install -g musicfree-api
musicfree-api
```
## 注意事项
- 部分功能可能需要登录才能使用
- VIP歌曲可能无法获取下载链接
- 不同平台的API返回格式可能有所不同
- 请勿滥用API进行大量请求
## 许可证
MIT