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; } }
最近下载更多
最近浏览更多
s4dmcc LV1
9月17日
JulyMagnolia LV4
4月29日
是夜在熬我. LV6
2月19日
cxz2132132 LV11
2023年12月9日
pangzhihui LV14
2023年11月13日
oldfox LV19
2023年11月13日
EFWAGGFAWGR
2023年10月19日
暂无贡献等级
lzl111213 LV1
2023年6月21日
runbey6666 LV2
2023年6月15日
空中飞尘 LV13
2023年6月13日