首页 > 编程知识 正文

原创音乐吧百度贴吧,百度网盘直链php代码

时间:2023-05-04 14:09:43 阅读:279199 作者:4732

前几天发了一篇QQ音乐直链的帖子:http://www.52pojie.cn/thread-419942-1-1.html

今晚利用空闲时间,折腾了一个百度音乐直链分析工具,也是网页在线的,

大家可以先看一下:http://dwz.cn/1WQoqW

---------------------------------------------蛋疼的分割线---------------------------------------------

论坛里面有人提供音乐接口:

①:http://music.baidu.com/data/music/fmlink?songIds={$SongId}&type={$SongType}

②:http://music.baidu.com/data/music/fmlink?songIds={$SongId}&type={$SongType}&rate={$Rate}

我测试了一下,可行,只不过现在修改了,跳转结果是

http://music.baidu.com/data/music/links?songIds=歌曲ID

至于上面的type和rate可忽略了。

百度音乐的ID就是点击一首歌曲的网址,不是播放音乐的音乐盒网址,例如:

http://music.baidu.com/song/134294423

QQ截图20151009224317.jpg (52.74 KB, 下载次数: 8)

2015-10-9 22:40 上传

复制上面网址中的那串数字,我随便看了一下,音乐ID从6位数到10位数都有,这个等下再说。

拼接网址和ID,结果如下:

http://music.baidu.com/data/music/links?songIds=134294423

直接粘贴浏览器地址栏,回车访问,得到以下结果:

{"errorCode":22000,"data":{"xcode":"0fa193606a6cf0e18156ebcf093b7cc0","songList":[{"queryId":"134294423","songId":134294423,"songName":"u82b1u4e3au5a92","artistId":"5976","artistName":"u7396u6708u5947u8ff9","albumId":134294430,"albumName":"u82b1u4e3au5a92","songPicSmall":"http://c.hiphotos.baidu.com/ting/pic/item/50da81cb39dbb6fd04ad51040d24ab18972b3719.jpg","songPicBig":"http://b.hiphotos.baidu.com/ting/pic/item/dbb44aed2e738bd43fb60613a58b87d6277ff979.jpg","songPicRadio":"http://b.hiphotos.baidu.com/ting/pic/item/18d8bc3eb13533faa840270cacd3fd1f41345b19.jpg","lrcLink":"/data2/lrc/134331079/134331079.lrc","version":"","copyType":0,"time":208,"linkCode":22000,"songLink":"http://yinyueshiting.baidu.com/data2/music/134294564/1342944231444312861128.mp3?xcode=0fa193606a6cf0e123407a79428c3f0f","showLink":"http://yinyueshiting.baidu.com/data2/music/134294564/1342944231444312861128.mp3?xcode=0fa193606a6cf0e123407a79428c3f0f","format":"mp3","rate":128,"size":3342029,"relateStatus":"0","resourceType":"0","source":"web"}]}}

这个就是返回结果,JSON格式,仔细看一下,里面有songLink后面的网址就是MP3链接,songPicBig是音乐封面的图片链接,只不过多了一些斜杠等等。

有了上面的数据,就可以使用编程语言封装了,本人使用的ASP.NET做演示。

我知道论坛很多人都会易语言,可是我不会,没有系统的学过,这里仅供思路参考。

---------------------------------------------蛋疼的分割线---------------------------------------------

/***

思路:

1、读取音乐网址里面的音乐ID

2、拼接网址和ID并且访问

3、解析&输出结果

***/

这个界面我就不说了,从按钮事件开始

QQ截图20151009224855.jpg (10.06 KB, 下载次数: 7)

2015-10-9 22:47 上传

[C#] 纯文本查看 复制代码//获取音乐直链地址

protected void btnGo_Click(object sender, EventArgs e)

{

string mid = "";//定义存放音乐ID的变量

//这里使用正则表达式,匹配输入网址里面的音乐ID,也就是一串数字,使用d+可以匹配连续的多个数字,符合我们的要求

ArrayList alist = new HttpHelper().PiPeiText(this.txtMusicUrl.Text.Trim(), "\d+");

//判断是否有返回结果

if (alist.Count > 0)

{

mid = alist[0].ToString();//如果有,就读取结果

}

if (string.IsNullOrEmpty(mid))//如果没有结果,说明音乐网址不正确,返回错误信息

{

this.txtMp3Url.InnerText = "错误:请检查音乐网址是否正确,是否可以正常播放";

return;

}

string requestUrl = "http://music.baidu.com/data/music/links?songIds=" + mid;//拼接访问网址

//获得访问网址返回的JSON信息

string responseHTML = new HttpHelper().GetDocumentText(requestUrl);

//由于我电脑网络问题,打不开json网站,不能下载类库,就没有用Json解析了,

//如果你用解析的方法,可以获得更多信息:音乐封面图片(大和小),音乐时长,大小等。

//这里我使用了正则表达式匹配想要的信息

ArrayList mp3List = new HttpHelper().PiPeiText(responseHTML, "songLink":".*","show");

string musicUrl = "";//定义MP3音乐直链的变量

if (mp3List.Count == 0)

{

/*这里验证是否匹配到了mp3链接,如果没有,那么可能是下面这种情况:

* 一开始音乐网址就不对,虽然有音乐ID,但是可能因为网址里面有一串数字而已,并不是要求的网址页面,

* 所以,一开始的匹配音乐ID,要做严格的网址验证,也是使用正则表达式,这块自己升级一下

* */

this.txtMp3Url.InnerText = "错误:请检查音乐网址是否正确,是否可以正常播放";

return;

}

else

{

//如果匹配到了mp3链接,就保存网址到上面定义的变量

musicUrl = mp3List[0].ToString();

}

//使用正则表达式匹配的结果,要过滤一下,如果使用json解析,就不用这么麻烦,直接取出来再replace一次就可以了

musicUrl = musicUrl.Replace(""", "").Replace("songLink:", "").Replace(",show", "").Replace("\", "");

//输出结果到网页上

this.txtMp3Url.InnerHtml = musicUrl;

}

.NET安详的人生别嫌我注解写的太多,照顾新人吧。

如果你直接复制上面的代码到VS里面编译,会出错,因为缺少HttpHelper类,这个是我自己写的下面发出来

HttpHelper.txt

(4.91 KB, 下载次数: 6)

2015-10-9 23:09 上传

点击文件名下载附件

下载积分: 吾爱币 -1 CB

用的时候,修改txt为cs,复制到VS,修改命名空间即可。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。