All Projects → winterssy → Mxget

winterssy / Mxget

Licence: gpl-3.0
优雅的一站式音乐搜索、下载试听服务,支持国内所有音乐平台

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Mxget

Pymxget
mxget的Python实现
Stars: ✭ 136 (-75.54%)
Mutual labels:  baidu, netease-cloud-music, xiami
Chord
Chord - A Modern Music Player
Stars: ✭ 615 (+10.61%)
Mutual labels:  baidu, xiami
Musicdl
A lightweight music downloader written by pure python.
Stars: ✭ 641 (+15.29%)
Mutual labels:  netease-cloud-music, xiami
Yavipcore
Net Core Music Interface
Stars: ✭ 1,095 (+96.94%)
Mutual labels:  baidu, xiami
Decryptlogin
APIs for loginning some websites by using requests.
Stars: ✭ 1,861 (+234.71%)
Mutual labels:  baidu, xiami
Sdmusic
Search && Download Music from multi-platform
Stars: ✭ 178 (-67.99%)
Mutual labels:  netease-cloud-music, xiami
Musiclake
MediaPlayer、Exoplayer音乐播放器,可播在线音乐,qq音乐,百度音乐,虾米音乐,网易云音乐,YouTuBe
Stars: ✭ 2,291 (+312.05%)
Mutual labels:  baidu, xiami
AutoCloudSign
百度贴吧、哔哩哔哩、毕方、网易云音乐 云签到
Stars: ✭ 24 (-95.68%)
Mutual labels:  baidu, netease-cloud-music
Baidu Ocr Api
👓 Baidu OCR Api For Node.js
Stars: ✭ 315 (-43.35%)
Mutual labels:  baidu
Speech Demo
语音api示例
Stars: ✭ 454 (-18.35%)
Mutual labels:  baidu
Lbsmap
利用百度地图快速实现支付宝的“到位”功能。基于LBS精确获取地理位置的周边数据,地图动态显示网络图标 支持多点聚合与分离,点击图标动态放大选中效果,移动、放大、缩小地图后重新更新数据,聚合图标点击动画展开,根据实际距离调整地图层级为屏幕大小 ,分页刷新,简书:
Stars: ✭ 313 (-43.71%)
Mutual labels:  baidu
Baidu Netdisk High Speed
⚡️ 百度网盘不限速下载 Chrome 插件。
Stars: ✭ 323 (-41.91%)
Mutual labels:  baidu
Musicapi
Centralized package to get data from qq, xiami, netease music
Stars: ✭ 463 (-16.73%)
Mutual labels:  xiami
Dotnet Sdk
百度AI开放平台 .Net SDK
Stars: ✭ 312 (-43.88%)
Mutual labels:  baidu
Swiper
轻量的移动端 H5 翻页库
Stars: ✭ 504 (-9.35%)
Mutual labels:  baidu
Electron Xiami
虾米音乐 & 虾米电台 - Linux & Mac | Xiami Player & Xiami Radio desktop for Linux & Mac supported by Electron
Stars: ✭ 304 (-45.32%)
Mutual labels:  xiami
Translators
🌏🌍🌎Translators🌎🌍🌏 is a library which aims to bring free, multiple, enjoyable translation to individuals and students in Python. Translators是一个旨在用Python为个人和学生带来免费、多样、愉快翻译的库。
Stars: ✭ 295 (-46.94%)
Mutual labels:  baidu
Iscript
各种脚本 -- 关于 虾米 xiami.com, 百度网盘 pan.baidu.com, 115网盘 115.com, 网易音乐 music.163.com, 百度音乐 music.baidu.com, 360网盘/云盘 yunpan.cn, 视频解析 flvxz.com, bt torrent ↔ magnet, ed2k 搜索, tumblr 图片下载, unzip
Stars: ✭ 4,908 (+782.73%)
Mutual labels:  xiami
Java Sdk
百度AI开放平台 Java SDK
Stars: ✭ 495 (-10.97%)
Mutual labels:  baidu
Zhuaxia
download mp3 files/albums from xiami.com and music.163.com
Stars: ✭ 421 (-24.28%)
Mutual labels:  xiami

mxget

通过命令行在线搜索你喜欢的音乐,下载并试听。

Actions Status

功能特性

  • 聚合国内各大音乐平台的资源,支持在线搜索和下载试听。
  • 单曲、专辑、歌单以及歌手热门歌曲,只需一步,就能搞定!
  • 支持自动嵌入音乐标签/下载歌词。
  • 利用Goroutines的先天优势快速并发下载。
  • 支持库调用和RESTful API。

重要说明

mxget 开发的初衷只是免去你须要频繁在各大网站切换听歌的烦恼,而不是为了破解音乐平台的数字版权限制。它无法下载受版权保护的数字音乐,音频也仅提供标准音质(128kbps)下载。如果你喜欢高音质/无损资源,请支持正版。

任何组织/个人不得将本项目用于商业或者其它非法用途,因此造成的责任和风险由使用者自行承担!

支持的音乐平台

音乐平台 平台标识 专用识别码
网易云音乐 netease / nc 1000
QQ音乐 tencent / qq 1001
咪咕音乐 migu / mg 1002
酷狗音乐 kugou / kg 1003
酷我音乐 kuwo / kw 1004
虾米音乐 xiami / xm 1005
千千音乐 qianqian / baidu / bd 1006

下载安装

# Go1.13+
go get -u github.com/winterssy/mxget

使用帮助

本项目不提供可执行程序下载,如须开箱即用,可选择 pymxget

 _____ ______      ___    ___ ________  _______  _________   
|\   _ \  _   \   |\  \  /  /|\   ____\|\  ___ \|\___   ___\ 
\ \  \\\__\ \  \  \ \  \/  / | \  \___|\ \   __/\|___ \  \_| 
 \ \  \\|__| \  \  \ \    / / \ \  \  __\ \  \_|/__  \ \  \  
  \ \  \    \ \  \  /     \/   \ \  \|\  \ \  \_|\ \  \ \  \ 
   \ \__\    \ \__\/  /\   \    \ \_______\ \_______\  \ \__\
    \|__|     \|__/__/ /\ __\    \|_______|\|_______|   \|__|
                  |__|/ \|__|                                

A simple tool that help you search and download your favorite music,
please visit https://github.com/winterssy/mxget for more detail.

Usage:
  mxget [command]

Available Commands:
  album       Fetch and download album's songs via its id
  artist      Fetch and download artist's hot songs via its id
  config      Specify the default behavior of mxget
  help        Help about any command
  playlist    Fetch and download playlist's songs via its id
  search      Search songs from the specified music platform
  serve       Run mxget as an API server
  song        Fetch and download single song via its id

Flags:
  -h, --help      help for mxget
      --version   version for mxget

Use "mxget [command] --help" for more information about a command.

作为CLI使用

这是 mxget 的基础功能,你可以通过终端调用 mxget 实现音乐搜索、下载功能。以网易云音乐为例,

  • 搜索歌曲
$ mxget search --from nc -k Faded

如果你的搜索关键词包含空格,请用双引号 "" 包围起来。

  • 下载歌曲
$ mxget song --from nc --id 36990266
  • 下载专辑
$ mxget album --from nc --id 3406843
  • 下载歌单
$ mxget playlist --from nc --id 156934569
  • 下载歌手热门歌曲
$ mxget artist --from nc --id 1045123
  • 自动更新音乐标签/下载歌词

如果你希望 mxget 为你自动更新音乐标签,可使用 --tag 指令,如:

$ mxget song --from nc --id 36990266 --tag

当使用 --tag 指令时,mxget 会同时将歌词内嵌到音乐文件中,一般而言你无须再额外下载歌词。如果你确实需要 .lrc 格式的歌词文件,可使用 --lyric 指令,如:

$ mxget song --from nc --id 36990266 --lyric
  • 设置默认下载目录

默认情况下,mxget 会下载音乐到当前目录下的 downloads 文件夹,如果你想要更改此行为,可以这样做:

$ mxget config --dir <directory>

directory 必须为绝对路径。

  • 设置默认音乐平台

mxget 默认使用的音乐平台为网易云音乐,你可以通过以下命令更改:

$ mxget config --from qq

这样,如果你不通过 --from 指令指定音乐平台,mxget 便会使用默认值。

在上述命令中,你会经常用到 --from 以及 --id 这两个指令,它们分别表示音乐平台标识和音乐id。

音乐id为音乐平台为对应资源分配的唯一id,当使用 mxget 进行搜索时,歌曲id会显示在每条结果的后面。你也可以通过各大音乐平台的网页版在线搜索相关资源,然后从结果详情页的URL中获取其音乐id。值得注意的是,酷狗音乐对应的歌曲id即为文件哈希 hash

  • 多任务下载

mxget 支持多任务快速并发下载,你可以通过 --limit 参数指定同时下载的任务数,如不指定默认为CPU核心数。

$ mxget playlist --from nc --id 156934569 --limit 16

尽管 mxget 允许设置的最高并发数是32,但使用时建议不要超过16,请根据网络状况适当调整。

作为库调用

mxget 封装了一些便捷的API,Go开发者可以直接调用,举个例子:

package main

import (
	"context"
	"fmt"

	"github.com/winterssy/mxget/pkg/provider/netease"
)

func main() {
	client := netease.Client()
	resp, err := client.GetSong(context.Background(), "36990266")
	if err != nil {
		panic(err)
	}

	fmt.Println(resp)
}

网易云音乐API的加解密算法参考 Binaryify/NeteaseCloudMusicApi 并用Golang实现,但 mxget 并未移植原项目的所有API,如开发者需要,可fork本项目实现,很简单。

作为API服务部署

mxget 提供了简易的RESTful API,允许你基于其开发web应用。启动服务:

$ mxget serve

Docker版:

$ docker pull winterssy/mxget
$ docker run -d --name mxget -p 8080:8080 -p 8090:8090 winterssy/mxget

注:8090 为 grpc 端口。

请求方法均为 GET ,统一调用路径为 /api/{platform}/{type}/{param} ,示例:

  • 从QQ音乐获取 周杰伦 的搜索结果
$ curl -X GET "http://127.0.0.1:8080/api/qq/search/周杰伦" -H "accept: application/json"
  • 从网易云音乐获取id为 36990266 的歌曲资源
$ curl -X GET "http://127.0.0.1:8080/api/netease/song/36990266" -H "accept: application/json"
  • 从咪咕音乐获取id为 1121438701 的专辑资源
$ curl -X GET "http://127.0.0.1:8080/api/migu/album/1121438701" -H "accept: application/json"
  • 从酷狗音乐获取id为 547134 的歌单资源
$ curl -X GET "http://127.0.0.1:8080/api/kugou/playlist/547134" -H "accept: application/json"
  • 从酷我音乐获取id为 336 的歌手资源
$ curl -X GET "http://127.0.0.1:8080/api/kuwo/artist/336" -H "accept: application/json"

注: 由于音乐平台的限制,mxget 的API服务仅在本地测试通过。如果你将 mxget 部署到公网,特别是海外VPS上,开发者不保证能工作,遇到的问题需要你自行解决。

FAQ

  • 抓取(Fetch)歌单数据耗时较长?

mxget 会将音乐标签、歌词等内容聚合之后才返回数据,耗时时长跟歌单歌曲数成正比。

  • 为什么部分音乐不支持下载?

API请求本身没有返回相应数据,原因可能是音乐平台的版权限制,这不是开发者能够解决的,请尝试更换音乐平台。

  • 下载MV?

经过调研,mxget 已明确不支持下载MV。

免责声明

  • 本项目仅供学习研究使用。
  • 本项目使用的接口如无特别说明均为官方接口,音乐版权归源音乐平台所有,侵删。

License

GPLv3。

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].