首页>代码>java swing开发的网易云音乐试听下载、播放>/zuidaima.cnm.163music/src/cnm/music163/Mp3Info.java
package cnm.music163;

import java.io.File;
import java.io.IOException;
import java.net.SocketTimeoutException;
import java.util.HashMap;

import org.jaudiotagger.audio.AudioFileIO;
import org.jaudiotagger.audio.exceptions.CannotReadException;
import org.jaudiotagger.audio.exceptions.InvalidAudioFrameException;
import org.jaudiotagger.audio.exceptions.ReadOnlyFileException;
import org.jaudiotagger.audio.mp3.MP3File;
import org.jaudiotagger.tag.TagException;
import org.jaudiotagger.tag.id3.AbstractID3v2Tag;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class Mp3Info {

	public static boolean setInfo(Musicer m) {
		try {
			File f = new File(m.getDownPath());
			System.out.println(f.exists());
			MP3File mp3 = (MP3File) AudioFileIO.read(f);
			AbstractID3v2Tag t = mp3.getID3v2Tag();
			m.setName(t.getFirst("TIT2"));
			m.setSinger(t.getFirst("TPE1"));

//			System.out.println("标题:"+t.getFirst("TIT2"));
//			System.out.println("作者:"+t.getFirst("TPE1"));
//			System.out.println();
			// HashMap<String, Object> map= t.frameMap;
			// System.out.println(map.toString());
			/**
			 * 原本打算从mp3文件中提取的,但是 部分mp3没有tag信息,最终决定从网页获取是最靠谱的
			 */
//			if ("".equals(m.getName())) {
//				setInfo4html(m);
//			}
			if(m.getName()!=null||m.getSinger()!=null) {
				return true;
			}

		} catch (CannotReadException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		} catch (TagException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		} catch (ReadOnlyFileException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		} catch (InvalidAudioFrameException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
		return false;

	}

	public static boolean setInfo4html(Musicer m) {
		try {
			/*
			 * 为什么不用URLConnection去获取? 乱码是个痛苦的事
			 */
			//加上超时时间,防止死了
			Document doc = Jsoup.connect(m.getOnUrl()).timeout(10000).get();
			m.setName(doc.select("meta[property=og:title]").get(0).attr("content"));
			m.setSinger(doc.select("meta[property=og:music:artist]").get(0).attr("content"));
			//如果从网页获取失败 尝试从文件中读取
			if(m.getName()==null||m.getSinger()==null) {
				setInfo(m);
			}
			if(m.getName()!=null||m.getSinger()!=null) {
				return true;
			}

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
		return false;

	}

}
最近下载更多
云翳tel青  LV11 2022年3月1日
时光凉薄  LV2 2021年7月9日
满脑子痛苦  LV3 2021年1月10日
pxlpxlpxl  LV4 2020年12月20日
MotleyHighness  LV1 2020年12月1日
与于与  LV2 2020年11月17日
刘晓静  LV5 2020年6月14日
Macjie  LV1 2020年4月24日
w5650100  LV3 2019年10月26日
hw272619  LV6 2019年9月13日
最近浏览更多
是夜在熬我.  LV6 2月19日
cxz2132132  LV11 2023年12月9日
pangzhihui  LV12 2023年11月13日
oldfox  LV18 2023年11月13日
EFWAGGFAWGR 2023年10月19日
暂无贡献等级
lzl111213  LV1 2023年6月21日
runbey6666  LV2 2023年6月15日
空中飞尘  LV13 2023年6月13日
wawayv  LV2 2022年12月13日
过桥次米线  LV2 2022年12月11日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友