网易云音乐开放api接口
网址:https://binaryify.github.io/NeteaseCloudMusicApi/#/?id=neteasecloudmusicapi
项目地址:https://github.com/Binaryify/NeteaseCloudMusicApi
下载下来之后,安装依赖:npm install
启动服务: node app.js
启动成功之后,根据api接口文档就可以获取请求的url了。
本文需求是,获取推荐歌单30张,并把数据存储到MySQL数据库,并且根据每张歌单的图片url将图片下载下来存到本地。
先看一下获取歌单列表的api文档
文档地址:https://binaryify.github.io/NeteaseCloudMusicApi/#/?id=neteasecloudmusicapi
全局搜索Ctrl + F 推荐歌单,可以看到一个api
试一试看能不能得到数据
把项目启动,网址输入:50张歌单
http://localhost:3000/personalized?limit=50
可以得到数据,现在来存储到数据库,并且下载图片
先看一下数据结构,存储哪些数据
这里我们只要歌单的id,picUrl,name,playCount
先建表
springboot连接数据库,代码生成controller,service,mapper等,使用mybatis-plus
先存储
controller:
/**
* 获取歌单列表
* api接口地址:https://binaryify.github.io/NeteaseCloudMusicApi/#/?id=neteasecloudmusicapi
* 项目地址:https://github.com/Binaryify/NeteaseCloudMusicApi
* 下载下来之后
* npm install
* 运行 node app.js
* 默认运行端口:3000
*/
@GetMapping("/getListSongs")
public ResponseWrapper getListSongs(){
return gedanService.getListSongs();
}
service实现
/**
* 获取歌单列表
* api接口地址:https://binaryify.github.io/NeteaseCloudMusicApi/#/?id=neteasecloudmusicapi
* 项目地址:https://github.com/Binaryify/NeteaseCloudMusicApi
* 下载下来之后
* npm install
* 运行 node app.js
* 默认运行端口:3000
*/
@Override
public ResponseWrapper getListSongs() {
// 推荐歌单的请求地址:http://localhost:3000/personalized?limit=
/**
* 推荐歌单
* 说明 : 调用此接口 , 可获取推荐歌单
*
* 可选参数 : limit: 取出数量 , 默认为 30 (不支持 offset)
*
* 接口地址 : /personalized
*
* 调用例子 : /personalized?limit=1
*/
// 获取100个歌单
String url = "http://localhost:3000/personalized?limit=50";
String s = HttpUtils.sendGetRequest(url);
log.info(s);
// JSON字符串转JSONObject对象
JSONObject jsonObj = JSONObject.parseObject(s);
// JSONObject对象转map
Map<String, Object> map = JSONUtilsTool.JSONObjectToMap(jsonObj);
log.info(map.toString());
log.info(map.get("code").toString());
if (map.get("code").toString().equals("200")){
// 200 说明获取数据成功
Object result = map.get("result");
log.info(result.toString());
// 获取到了歌单列表
JSONArray resuArr = JSONObject.parseArray(result.toString());
log.info(resuArr.get(0).toString());
// JSONArray 转 list<javaBean>
List