昨日通过Freebuf上某大神分析,实现了解析某狗音乐无损格式下载,那么今天这篇文章则使用PHP几十行代码实现某狗音乐无损格式营业的搜索+下载。当然了,本篇文章中所提供的一切代码资源,仅供学习交流,严禁用于商业用途,请于24小时内删除。
一。接口的准备
根据Freebuf上某大神分析出来的结果,一共得到4个接口,分别如下:
搜索地址: http://songsearch.kugou.com/song_search_v2?keyword={关键字}page=1
无损音乐下载地址:
# V2版系统,pc版,加密方式为md5(hash +"kgcloudv2")
Music_api_1 = 'http://trackercdnbj.kugou.com/i/v2/?cmd=23&pid=1&behavior=download'
# V2版系统,手机版,加密方式为md5(hash +"kgcloudv2") (备用)
Music_api_2 = 'http://trackercdn.kugou.com/i/v2/?appid=1005&pid=2&cmd=25&behavior=play'
# 老版系统,加密方式为md5(hash +"kgcloud")(备用)
Music_api_3 = 'http://trackercdn.kugou.com/i/?cmd=4&pid=1&forceDown=0&vip=1'
二。解析过程
三。完整代码
<?php
/**
* 解析酷狗无损音乐下载
* @author Wigiesen - 心语难诉
* @version v1.0
* @link https://xinyu19.com
*/
class KuGou
{
# 下载url 加密方式md5(hash +"kgcloudv2")
private $kugou_v2_pc = 'http://trackercdnbj.kugou.com/i/v2/?cmd=23&pid=1&behavior=download';
# 搜索url
private $search_api = 'http://songsearch.kugou.com/song_search_v2';
public function search($song_name){
# 搜索音乐资源,将返回的json歌曲信息解析
$res = json_decode(file_get_contents($this->search_api.'?keyword='.$song_name.'page=1'),true);
# 判断搜索返回的列表是否为空,不为空则有资源。
if (!empty($res['data']['lists'])) {
$Songs = [];
$SongsCount = 0;
foreach ($res['data']['lists'] as $value) {
# SQLFileHash = 32个0说明没有无损音质的资源,排除掉。
if ($value['SQFileHash'] != '00000000000000000000000000000000') {
# 通过得到的SQFileHash加密key后去请求单个无损音质音乐的资源信息
$Song_res = json_decode(file_get_contents($this->kugou_v2_pc.'&hash='.$value['SQFileHash'].'&key='.md5($value['SQFileHash'].'kgcloudv2')),true);
$Songs[$SongsCount] = [
'SongName' => $value['SongName'], //歌曲名称
'SingerName' => $value['SingerName'], //歌手名字
'SongExt' => $Song_res['extName'], //歌曲后缀
'SongSize' => round($Song_res['fileSize'] /1024/1024,2).' MB', //歌曲资源大小
'SongTime' => ltrim(date('i:s', $Song_res['timeLength']),0), //歌曲的时长
'SongUrl' => $Song_res['url'] //下载URL
];
$SongsCount++;
}
}
echo json_encode(['status' => true, 'message' => '加载资源成功', 'count' => count($Songs), 'data' => $Songs]);
}else{
echo json_encode(['status' => false, 'message' => '找不到相关匹配的资源']);
}
}
}
$KuGou = new KuGou();
$KuGou->search($_GET['song_name']);
?>
四。案例展示。
五。完结
案例上我用Bootstrap套了一个简易的搜索列表页,使用AJAX请求返回歌曲列表,可以看到资源的详细的参数+一键下载,与上面代码所用的代码是一模一样的。相关注释已经写入到代码中,这里就不再逐步分析了。当然还有一个问题是无法搜素英文歌曲,至于为什么,我也不知道咯~最后需要说的本篇文章中所提供的一切代码资源,仅供学习交流,严禁用于商业用途,请于24小时内删除。
蛋仔派对无限蛋币https://www.wzryzs.com/
王者荣耀无限点券http://av325.com/
gg修改器http://www.zavx.cn/
现在还能用吗
key参数的生成方式已经变更了,楼主有最新的生成方式么
好人一生平安