music-lib

module
v1.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 2, 2026 License: AGPL-3.0

README

music-lib

music-lib 是个用 Go 写的音乐库。

它没有 UI,主要帮你解决各个音乐平台的数据接口问题——不管是搜索、解析还是下载。如果你想自己写个音乐下载器或者播放器,用它正好。

主要功能

支持网易云、QQ、酷狗、酷我这些主流平台,也能搞定汽水音乐、5sing 这些。具体支持情况如下:

平台 包名 搜索 下载 歌词 歌曲解析 歌单搜索 歌单推荐 歌单歌曲 歌单链接解析 备注
网易云音乐 netease 支持 FLAC 无损
QQ 音乐 qq 支持 FLAC 无损
酷狗音乐 kugou
酷我音乐 kuwo
咪咕音乐 migu
千千音乐 qianqian
汽水音乐 soda 音频解密
5sing fivesing
Jamendo jamendo
JOOX joox
Bilibili bilibili 支持 FLAC 无损

怎么用

直接 go get

go get github.com/guohuiyuan/music-lib
1. 搜歌 + 下载
package main

import (
	"fmt"
	"log"

	"github.com/guohuiyuan/music-lib/kugou"
)

func main() {
	songs, err := kugou.Search("周杰伦")
	if err != nil {
		log.Fatal(err)
	}
	if len(songs) == 0 {
		fmt.Println("没找到相关歌曲")
		return
	}

	// 拿第一首的下载地址
	url, err := kugou.GetDownloadURL(&songs[0])
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println("下载地址:", url)
}
2. 获取推荐歌单 (新功能)
package main

import (
	"fmt"
	"log"
	"github.com/guohuiyuan/music-lib/netease"
)

func main() {
	// 获取不需要登录的推荐歌单
	playlists, err := netease.GetRecommendedPlaylists()
	if err != nil {
		log.Fatal(err)
	}

	fmt.Printf("拿到 %d 个推荐歌单:\n", len(playlists))
	for _, p := range playlists {
		fmt.Printf("- %s (ID: %s)\n", p.Name, p.ID)
	}
}
3. 解析歌单链接
package main

import (
	"fmt"
	"log"
	"github.com/guohuiyuan/music-lib/netease"
)

func main() {
	link := "https://music.163.com/#/playlist?id=123456"
	playlist, songs, err := netease.ParsePlaylist(link)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s 共有 %d 首歌\n", playlist.Name, len(songs))
}

设计的一点想法

做这个库的时候,我尽量保证了独立性统一性

  • 独立性:你可以只引 netease 包,别的包不会进去污染你的依赖。
  • 统一性:不管用哪个包,返回的 SongPlaylist 结构都是一样的,切换源的时候不用改业务逻辑。
  • 扩展性:如果要加新平台,照着 provider 接口实现一遍就行。

目录结构

music-lib/
├── model/      # 都在用的数据结构
├── provider/   # 接口定义
├── netease/    # 各个平台的实现
├── qq/
├── kugou/
...
└── README.md

许可证

本项目遵循 GNU Affero General Public License v3.0(AGPL-3.0)。详情见 LICENSE

免责声明

这个库就是写着玩、学技术的。大家用的时候遵守一下法律法规,不要拿去商用。下载的资源 24 小时内删掉。

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL