各大音乐社区api接口(MP3&LRC)

转载地址:http://blog.csdn.net/wolfcyl/article/details/6069500

http://blog.csdn.net/mirkerson/article/details/8656930

http://mrasong.com/a/baidu-mp3-api

百度:
sound:
<a target=_blank href="http://box.zhangmen.baidu.com/x?op=12&count=1&title=不得不爱$$潘玮柏$$$$">http://box.zhangmen.baidu.com/x?op=12&count=1&title=不得不爱$$潘玮柏$$$$</a>
lrc:
<a target=_blank href="http://box.zhangmen.baidu.com/bdlrc/86/8654.lrc">http://box.zhangmen.baidu.com/bdlrc/86/8654.lrc</a>
这个地址解析下: 
http://box.zhangmen.baidu.com/bdlrc/ 这个是百度lrc歌词存放地址,后面的496是一个的不定的,民就是说歌曲不同那个目录名也不同,它的算法是拿歌词文件名(也就是上面说的 8654) 除以一百,然后取小于等于其结果的最大整数,如上面的:8654/100 =86.54取小于等于86.54 的最大整数就是86,于是这首歌完整的歌词地址:http://box.zhangmen.baidu.com/bdlrc/86/8654.lrc

QQ音乐:
sound:
<a target=_blank href="http://qqmusic.qq.com/fcgi-bin/qm_getLyricId.fcg?name=不得不爱&singer=潘玮柏&from=qqplayer">http://qqmusic.qq.com/fcgi-bin/qm_getLyricId.fcg?name=不得不爱&singer=潘玮柏&from=qqplayer</a>
lrc:
<a target=_blank href="http://music.qq.com/miniportal/static/lyric/90/95690.xml">http://music.qq.com/miniportal/static/lyric/90/95690.xml</a>

 

说明:lrc的歌词地址 lyric/90/95690.xm 其中的90是上面sound中出来的id95690的最后面两位数字、。
 
搜搜音乐:
sound:
<a target=_blank href="http://cgi.music.soso.com/fcgi-bin/m.q?w=不得不爱&p=1&t=0">http://cgi.music.soso.com/fcgi-bin/m.q?w=不得不爱&p=1&t=0</a>
格式: 1-全部 0-MP3 1-RM ,2-WMA
lrc:(注意!歌曲名和歌手名字一定要准确)
<a target=_blank href="http://cgi.music.soso.com/fcgi-bin/fcg_download_lrc.q?song=不得不爱&singer=潘玮柏%26弦子&down=1">http://cgi.music.soso.com/fcgi-bin/fcg_download_lrc.q?song=不得不爱&singer=潘玮柏%26弦子&down=1</a>

 
8BOX
sound:
http://api.8box.com/get/search/song?api_key={api_key}&title={歌曲名(URL16进制加密)}&artist={歌手(URL16进制加密)}
    
 lrc:(2010年8月19日更新)
http://www.8box.com/feed/radio/s?type=widget¶m={歌曲ID(数字)}
http://www.8box.com/pictures/lyrics/83/591383.lrc

最近在做一个播放器的项目,要实现从网络下载歌曲和歌词,看了很多别人的帖子和博客,今天上午终于搞定,也来总结一下,希望能帮助大家,好了,不说废话了,进入正题。
百度提供了一个开放音乐搜索的api,在浏览器的地址栏输入:
http://box.zhangmen.baidu.com/x?op=12&count=1&title=歌名$$歌手$$$$
其中歌名和歌手两个字段值需要经过utf-8编码

URLEncoder.encode(song.trim(), “utf-8”);
这个是编码方法

然后访问回来的中歌曲下载的url还要处理一下,如:
http://box.zhangmen.baidu.com/x?op=12&count=1&title=怒放的生命$$汪峰$$$$,返回xml格式的流。
  <?xml version="1.0" encoding="gb2312" ?> 
-<result>
 <count>1</count>
-<url>
-<encode>
- <![CDATA[http://zhangmenshiting.baidu.com/data2/music/4725615/ZWllaWtnbGaeomZzrZmmnJZvbGdrbG2aZWhsZmacmWqUlGZkl2ZscGKXlWtuapqZZmVZoZ6adGhfaWpsa25raWRramVtbmw4
 ]]>
 </encode>
-<decode>
- <![CDATA[4725615.mp3?xcode=93666b46921fb2cb30b0581eb794ca53&mid=0.77868413971885
 ]]>
 </decode>
 <type>8</type>
 <lrcid>25635</lrcid>
 <flag>1</flag>
 </url>
-<durl>
-<encode>
- <![CDATA[http://zhangmenshiting2.baidu.com/data2/music/829260/aWRsZmtmZaWhZXKsmKWbnW5rZmprbJlsZ2tlZZuYaZuTZWOWZWtvaZaUam1pmZhtZFignZlzZ2ZoaWtqbWpoa2ppZGxtazc$
 ]]>
 </encode>
-<decode>
- <![CDATA[829260.mp3?xcode=93666b46921fb2cb30b0581eb794ca53&mid=0.77868413971885
 ]]>
 </decode>
 <type>8</type>
 <lrcid>25635</lrcid>
 <flag>1</flag>
 </durl>
-<p2p>
 <hash>284df2cfe87b4fe1442f4469aa688abc067a6243</hash>
-<url>
- <![CDATA[http://zhangmenshiting.baidu.com/data2/music/2346073/2346073.mp3?xcode=93666b46921fb2cb30b0581eb794ca53
 ]]>
 </url>
 <type>mp3</type>
 <size>6795585</size>
 <bitrate>192</bitrate>
 </p2p>
 </result>
大多数标签式没用的,<encode>,<decode>和<lrcid>三个标签是我们需要的,以第一个<url>为例;只需要用4725615.mp3?xcode=93666b46921fb2cb30b0581eb794ca53&mid=0.77868413971885替换
http://zhangmenshiting.baidu.com/data2/music/4725615/ZWllaWtnbGaeomZzrZmmnJZvbGdrbG2aZWhsZmacmWqUlGZkl2ZscGKXlWtuapqZZmVZoZ6adGhfaWpsa25raWRramVtbmw4中的ZWllaWtnbGaeomZzrZmmnJZvbGdrbG2aZWhsZmacmWqUlGZkl2ZscGKXlWtuapqZZmVZoZ6adGhfaWpsa25raWRramVtbmw4 ,这样就得到了歌曲的下载地址。lrcid这个的值是百度服务器上这首歌的歌词文件的文件名,这个文件的路径是:http://box.zhangmen.baidu.com/bdlrc/256/25635.lrc 

这个地址解析下: 
http://box.zhangmen.baidu.com/bdlrc/ 这个是百度lrc歌词存放地址这个地址解析下: 
http://box.zhangmen.baidu.com/bdlrc/ 这个是百度lrc歌词存放地址这个地址解析下: 
http://box.zhangmen.baidu.com/bdlrc/ 这个是百度lrc歌词存放地址,256是lrcid里的值除以100,后边的25635就是lrcid的值,这样就得到了歌曲的下载地址。如果lrcid的值为0,则表示没有对应的歌词。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
生成LRC文件需要对MP3文件进行解析,提取出歌词信息。Java中可以使用第三方库来实现这一功能,如`jAudiotagger`和`jlrc`。 下面是一个简单的示例代码,使用`jAudiotagger`库从MP3文件中提取出歌词信息并生成LRC文件: ```java import java.io.File; import java.io.FileWriter; import java.io.IOException; import org.jaudiotagger.audio.AudioFile; import org.jaudiotagger.audio.AudioFileIO; import org.jaudiotagger.tag.FieldKey; import org.jaudiotagger.tag.Tag; import org.jaudiotagger.tag.datatype.Lyrics3Line; import org.jaudiotagger.tag.id3.AbstractID3v2Frame; import org.jaudiotagger.tag.id3.ID3v24Tag; public class Mp3ToLrcConverter { public static void main(String[] args) throws Exception { File mp3File = new File("path/to/mp3/file.mp3"); File lrcFile = new File("path/to/lrc/file.lrc"); convertMp3ToLrc(mp3File, lrcFile); } public static void convertMp3ToLrc(File mp3File, File lrcFile) throws Exception { AudioFile audioFile = AudioFileIO.read(mp3File); Tag tag = audioFile.getTag(); // Check if the MP3 file has embedded lyrics if (tag != null) { String lyrics = tag.getFirst(FieldKey.LYRICS); if (lyrics != null &amp;&amp; !lyrics.isEmpty()) { writeLrcFile(lrcFile, lyrics); return; } } // If the MP3 file doesn't have embedded lyrics, try to extract them from ID3v2 tags if (audioFile instanceof org.jaudiotagger.audio.mp3.MP3File) { org.jaudiotagger.audio.mp3.MP3File mp3 = (org.jaudiotagger.audio.mp3.MP3File) audioFile; ID3v24Tag id3v2Tag = mp3.getID3v2TagAsv24(); if (id3v2Tag != null) { AbstractID3v2Frame lyricsFrame = id3v2Tag.getFirst("USLT"); if (lyricsFrame != null) { String lyrics = lyricsFrame.getContent(); writeLrcFile(lrcFile, lyrics); return; } } } // If the MP3 file doesn't have embedded lyrics or ID3v2 tags, try to extract them from Lyrics3 tags if (audioFile.hasLyrics3Tag()) { Lyrics3Line lyrics3Line = audioFile.getLyrics3Tag().getLine(0); if (lyrics3Line != null) { String lyrics = lyrics3Line.getLyric(); writeLrcFile(lrcFile, lyrics); return; } } // If the MP3 file doesn't have any embedded lyrics, throw an exception throw new Exception("No lyrics found in the MP3 file."); } public static void writeLrcFile(File lrcFile, String lyrics) throws IOException { try (FileWriter writer = new FileWriter(lrcFile)) { writer.write(lyrics); } } } ``` 这段代码会首先检查MP3文件是否有内嵌歌词,如果有则直接生成LRC文件。如果没有内嵌歌词,则尝试从ID3v2标签或Lyrics3标签中提取歌词信息,最后将歌词信息写入LRC文件。如果无法提取歌词信息,则抛出异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值