npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

musicfree-api

v1.0.0

Published

Multi-platform music API library for downloading and searching across various music services

Downloads

20

Readme

MusicFree API Library

一个多平台音乐搜索和下载API库,支持多个主流音乐平台,包括网易云音乐、QQ音乐、酷狗音乐、酷我音乐和小米音乐。

特性

  • 支持多个音乐平台
  • 统一的API接口
  • 支持搜索歌曲、专辑、艺人、歌单和歌词
  • 支持获取不同音质的音乐下载链接
  • 支持获取歌词
  • 支持导入歌单
  • 支持获取排行榜

安装

npm install musicfree-api

快速开始

搜索歌曲

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();

获取排行榜

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)

返回: 包含歌单详情和曲目的对象。

命令行工具

库同时提供了一个命令行工具,可以通过以下方式使用:

npx musicfree-api

或者全局安装:

npm install -g musicfree-api
musicfree-api

注意事项

  • 部分功能可能需要登录才能使用
  • VIP歌曲可能无法获取下载链接
  • 不同平台的API返回格式可能有所不同
  • 请勿滥用API进行大量请求

许可证

MIT