宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取

这个播放器是利用qq音乐的api实现了音乐的播放,搜索,歌词同步。

MusicUtil.java主要代码

package com.tc.musicplay.utils;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.regex.Pattern;
import org.apache.commons.io.FileUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.show.api.ShowapiRequest;
import com.tc.musicplay.domain.MusicInfo;
import com.tc.musicplay.domain.MusicLrc;
/**
* 
*/
/**
* @ClassName: MusicUtil
* @Description: TODO
* @author Simple 
* @date 2017-5-16 上午10:02:19
*
*/
public class MusicUtil {
/**
* 
* @Title: searchSongs
* @Description: 该类是通过歌手,歌名获取音乐列表
* @param @param keyWord 搜索的关键词
* @param @param count 每页的个数
* @param @param page 
* @param @return    设定文件
* @return ArrayList<Map<String, String>>    返回类型
* @throws
*/
public static ArrayList<MusicInfo> searchSongsString keyWord,int count,int page){
String url="http://s.music.qq.com/fcgi-bin/music_search_new_platform?t=0&n="+count+"&aggr=1&cr=1&loginUin=0&format=json&inCharset=GB2312&outCharset=utf-8¬ice=0&platform=jqminiframe.json&needNewCode=0&p="+page+"&catZhida=0&remoteplace=sizer.newclient.next_song&w="+keyWord;
ArrayList<MusicInfo> songArrayList=new ArrayList<MusicInfo>);
String json=HttpUtil.sendGeturl);
JSONObject rootObject=JSONObject.parseObjectjson);
JSONObject dataObject=rootObject.getJSONObject"data");
JSONObject songObject=dataObject.getJSONObject"song");
JSONArray songList=songObject.getJSONArray"list");
for int i = 0; i < songList.size); i++) {
JSONObject song=songList.getJSONObjecti);
String f[]=song.getString"f").split"\\|");
iff.length>=3){
MusicInfo musicInfo=new MusicInfo);
String songId=f[0];
String imageId=f[f.length-3];
String songName=song.getString"fsong");
String singer=song.getString"fsinger");
String singer2=song.getString"fsinger2");
musicInfo.setSongUrlgetSongUrlsongId));
musicInfo.setImageUrlgetImageUrlimageId));
musicInfo.setSongNamesongName.trim));
musicInfo.setSingersinger);
musicInfo.setSinger2singer2);
musicInfo.setSongIdsongId);
songArrayList.addmusicInfo);
}
}
return songArrayList;
}
/**
* 
* @Title: getSongUrl
* @Description: 得到歌曲地址
* @param @param songId
* @param @return    设定文件
* @return String    返回类型
* @throws
*/
public static String getSongUrlString songId){
return "http://ws.stream.qqmusic.qq.com/"+songId+".m4a?fromtag=46";
}
/**
* 
* @Title: getImageUrl
* @Description: 得到图片的地址
* @param @param imageId
* @param @param width
* @param @return    设定文件
* @return String    返回类型
* @throws
*/
public static String getImageUrlString imageId){
String first=imageId.substringimageId.length)-2,imageId.length)-1);
String second=imageId.substringimageId.length)-1);
return "http://i.gtimg.cn/music/photo/mid_album_300/"+first+"/"+second+"/"+imageId+".jpg";
}
/**
* 
* @Title: getSongLrcUrl
* @Description: 得到歌词的地址
* @param @param songId
* @param @return    设定文件
* @return String    返回类型
* @throws
*/
public static String getSongLrcUrlString songId){
return "http://music.qq.com/miniportal/static/lyric/"+Integer.parseIntsongId)%100+"/"+songId+".xml";
}
/**
* 
* @Title: downloadSong
* @Description: 该类是下载歌曲
* @param @param songId 歌曲的id
* @param @param destFile 文件类型为mp3
* @param @throws Exception    设定文件
* @return void    返回类型
* @throws
*/
public static void downloadSongString songId,File destFile) throws Exception{
String songUrl=getSongUrlsongId);
FileUtils.copyURLToFilenew URLsongUrl), destFile);
}
public static byte[] downloadSongString songId){
return null;
}
/**
* 
* @Title: downLoadLrc
* @Description: 该方法是下载歌词
* @param @param songId
* @param @param destFile 文件类型为xml
* @param @throws Exception    设定文件
* @return void    返回类型
* @throws
*/
public static void downLoadLrcString songId,File destFile) throws Exception{
String lrcUrl=getSongLrcUrlsongId);
FileUtils.copyURLToFilenew URLlrcUrl), destFile);
}
private static ArrayList<MusicLrc> putInfoString lrc){
String lines[]=lrc.split"\n");
ArrayList<MusicLrc> lrcList=new ArrayList<MusicLrc>);
Integer offset=0;
for int i = 0; i < lines.length; i++) {
String reg = "\\[\\d{2}:\\d{2}\\.\\d{2})\\]";  
// 编译  
Pattern pattern = Pattern.compilereg); 
iflines[i].startsWith"[offset")){
offset=Integer.parseIntlines[i].substring8,lines[i].length)-1));
System.out.printlnoffset);
}else ifpattern.matcherlines[i]).find)){
String lrcText=lines[i].substring10);
iflrcText!=null&&!lrcText.equals"")){
MusicLrc musicLrc=new MusicLrc);
String time=lines[i].substring1,9);
String minute=time.substring0,2);
String second=time.substring3,5);
String millisecond=time.substring6);
int key=Integer.parseIntminute)*60+Integer.parseIntsecond))*1000+Integer.parseIntmillisecond)*10-offset;
musicLrc.setTimekey);
musicLrc.setLrcLinelrcText);
lrcList.addmusicLrc);
}	
}
}
return lrcList;
}
public static ArrayList<MusicLrc> getOnlineLrcMapString songId) throws DocumentException{
SAXReader reader=new SAXReader);
String lrcUrl=getSongLrcUrlsongId);
System.out.printlnlrcUrl);
String result=HttpUtil.sendGetlrcUrl);
ByteArrayInputStream byteArrayInputStream=null;
try {
byteArrayInputStream = new ByteArrayInputStreamresult.getBytes"GB2312"));
} catch UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace);
return null;
}
Document document=reader.readbyteArrayInputStream);
Element element=document.getRootElement);
String lrc=element.getData).toString);
return putInfolrc);
}
public static ArrayList<MusicLrc> getLrcMapOnAliyunString songId){
ShowapiRequest req = new ShowapiRequest
"https://ali-qqmusic.showapi.com/song-word?musicid="+songId,"d5175d863d8c41fba83bc40ca41c6596");
String json= req.get);
json=json.replaceAll":", ":").replaceAll".", ".").replaceAll"
", "\n").replaceAll" ", " ");
System.out.printlnjson);
Map map = req.getRes_headMap);
Iterator it = map.keySet).iterator);
while it.hasNext)) {
Object k = it.next);
System.out.printlnk + "          " + map.getk));
}
JSONObject jsonObject=JSONObject.parseObjectjson);
String lrc=jsonObject.getJSONObject"showapi_res_body").getString"lyric");
System.out.printlnlrc);
return putInfolrc);
}
public static ArrayList<MusicLrc> getLrcMapFile file) throws Exception{
SAXReader reader=new SAXReader);
Document document=reader.readnew FileInputStreamfile));
Element element=document.getRootElement);
String lrc=element.getData).toString);
return putInfolrc);
}
}

运行截图

网页音乐播放器网页音乐播放器网页音乐播放器网页音乐播放器

网页音乐播放器网页音乐播放器网页音乐播放器网页音乐播放器

网页音乐播放器网页音乐播放器

网页音乐播放器网页音乐播放器

网页音乐播放器网页音乐播放器

网页音乐播放器网页音乐播放器网页音乐播放器网页音乐播放器

完整项目的下载地址


去下载