最新网易云音乐API 亲测可用 JAVA代码只是示例其他语言也适用
1.maven引入
<!-- jsoup --> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.12.1</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.10</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.6</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient-cache</artifactId> <version>4.5.6</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <version>4.5.6</version> </dependency>
2.API处理代码,通过关键词搜索歌曲,并且获取歌曲名称、图片、歌手、真实播放地址等信息。
//网易云音乐
public static MusicShare musicApi(String name) {
MusicShare musicShare = new MusicShare ();
String url ="https://api.imjad.cn/cloudmusic/?type=search&search_type=1&s="+name;
try {
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet get = new HttpGet(url);
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(60000).setConnectionRequestTimeout(60000)
.setSocketTimeout(60000).build(); //设置超时
get.setConfig(requestConfig);
HttpResponse response = httpclient.execute(get);
int statusCode = response.getStatusLine().getStatusCode();
System.out.println(statusCode);
//if(statusCode==200){
//获取响应结果
String result = EntityUtils.toString(response.getEntity());
System.out.println(result);
ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(result);
Iterator<JsonNode> it = root.get("result").get("songs").iterator();
List<MusicShare> musicShares = new ArrayList<MusicShare>();
while (it.hasNext()) {
MusicShare mu = new MusicShare();
JsonNode node = it.next();
String id = node.get("id").asText();
String title = node.get("name").asText();
String pictureUrl = node.get("al").get("picUrl").asText();
String jumpUrl = "https://y.music.163.com/m/song?id="+id+"&app_version=8";
String summary = "";
Iterator<JsonNode> summaryIt = node.get("ar").iterator();
while (summaryIt.hasNext()) {
JsonNode de = summaryIt.next();
summary = de.get("name").asText();
}
mu.setId(id);
mu.setTitle(title);
mu.setPictureUrl(pictureUrl);
mu.setSummary(summary);
mu.setJumpUrl(jumpUrl);
musicShares.add(mu);
}
int i = musicShares.size();
int random=(int)(Math.random()*i+0);
musicShare = musicShares.get(random);
if(StringUtils.isEmpty(musicShare.getId())) {
return musicShare;
}
url ="https://api.imjad.cn/cloudmusic/?type=song&id="+musicShare.getId();
get = new HttpGet(url);
requestConfig = RequestConfig.custom()
.setConnectTimeout(60000).setConnectionRequestTimeout(60000)
.setSocketTimeout(60000).build(); //设置超时
get.setConfig(requestConfig);
response = httpclient.execute(get);
statusCode = response.getStatusLine().getStatusCode();
System.out.println(statusCode);
//if(statusCode==200){
//获取响应结果
result = EntityUtils.toString(response.getEntity());
root = mapper.readTree(result);
it = root.get("data").iterator();
String musicUrl = "";
while (it.hasNext()) {
JsonNode node = it.next();
musicUrl = node.get("url").asText();
}
musicShare.setMusicUrl(musicUrl);
System.out.println(musicShare.getId()+""+musicShare.getTitle()+""+musicShare.getSummary()+" "+musicShare.getPictureUrl()+" "+musicShare.getMusicUrl());
} catch (Exception e) {
// TODO Auto-generated catch block
}
return musicShare;
}