当前位置:书生博客 > 而已集 > 学习笔记 > 正文

作者:书生

懂得了这世界上没有绝对的正确,能够接受别人有不同的三观和其衍生出来的思考方式。

手机扫码查看

酷狗歌单获取歌曲信息的接口源码

话不多说直接上代码

<?php
/**
 * @author 	Youngxj <blog@youngxj.cn>
 * @time   	2018年6月22日
 * @todo 	利用酷狗歌单进行获取酷狗歌曲信息
 */

// 访问短网址出现的地址
// http://m.kugou.com/share/zlist.html?u=25230245&h1=142560927507380788791872687420293028022&h2=da7ce5776afd5fdba03daa05f4a19860&listid=25&uid=25230245&type=0&_t=1528116907&token=2b631b0f122f5dc5c0ca758374c4d190eb8bde2ea382bf7a29bacfd5bb439489&sign=c0c7fe2caee03445b51bf8961308174b&chl=qq_client

// 歌单列表接口
// http://m.kugou.com/zlist/list?listid=25&type=0&uid=25230245&sign=c0c7fe2caee03445b51bf8961308174b&_t=1528116907&pagesize=30&json=&page=1&token=2b631b0f122f5dc5c0ca758374c4d190eb8bde2ea382bf7a29bacfd5bb439489
// 关键值 uid sign  _t  token listid  type

// 获取歌曲信息的接口
// http://m.kugou.com/app/i/getSongInfo.php?hash=348CE533CE66E6DCEDA4A9FD63AB6D86&cmd=playInfo&is_share=1

# 设置json格式
header('Content-type: application/json');  

#缓存文件名(最好使用json文件格式)
$fileName = 'data.json';

# 酷狗歌单分享出来的短网址
$kgUrl = "http://t.kugou.com/1md5hf5t8V2";  

file_get_contents($kgUrl);
# 获取歌单访问后302跳转的header头信息
$responseInfo = $http_response_header;  
# 第五条记录为Location跳转地址里面包含多个关键值
$local = $responseInfo['5'];

# 下面是蹩脚正则取值
// uid(疑似用户id)
$zz_uid = "/uid=(.*?)&/";
preg_match($zz_uid,$local,$uid);
// sign
$zz_sign = "/sign=(.*?)&/";
preg_match($zz_sign,$local,$sign);
// _t
$zz_t = "/_t=(.*?)&/";
preg_match($zz_t,$local,$t);
// listid(疑似歌单id)
$zz_listid = "/listid=(.*?)&/";
preg_match($zz_listid,$local,$listid);
// type
$zz_type = "/type=(.*?)&/";
preg_match($zz_type,$local,$type);
// token
$zz_token = "/token=(.*?)&/";
preg_match($zz_token,$local,$token);

//echo '<br/>';
# 把取到的值变量定义
$uid = $uid['1'];
$sign = $sign['1'];
$t = $t['1'];
$listid = $listid['1'];
$type = $type['1'];
$token = $token['1'];

# 这里是呼应后面文本缓存的
# 主要是判断文本缓存中的token是否与当前获取的token是否一致
# 如果一致则读取文本缓存的json
# 如果不一致则使用后面的获取最新
# 继续写入文本缓存
if(is_file($fileName)){
	$dataJson = file_get_contents($fileName);
	$dataJsons = json_decode($dataJson,1);

	if($token == $dataJsons['token']){
		echo $dataJson;
		exit();
	}
}

# 这个地址是获取歌单列表里有多少歌
$listUrl = 'http://m.kugou.com/zlist/list?listid='.$listid.'&type='.$type.'&uid='.$uid.'&sign='.$sign.'&_t='.$t.'&pagesize=30&json=&page=1&token='.$token;


$list = file_get_contents($listUrl);
//var_dump($list);
$lists = json_decode($list,1);
# 统计歌单歌曲总数
$coun = count($lists["list"]["info"]);
$arr = array('token'=>$token);
for ($i=0; $i < $coun; $i++) {
	# 利用前面歌单列表取到的hash
	# 进行二次临时歌曲地址寻找
	$hash = $lists["list"]["info"][$i]['hash'];
	$getSongInfoUrl = 'http://m.kugou.com/app/i/getSongInfo.php?hash='.$hash.'&cmd=playInfo&is_share=1';
	$get = file_get_contents($getSongInfoUrl);
	$getjson = json_decode($get,1);
	$arr[$i] = $getjson;
}
# 到这里已经能正常输出歌单里所有歌曲的信息
echo $data_json = json_encode($arr,JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);


# 后面的为文本进行缓存的技术
$myfile = fopen($fileName, "w") or die("无法打开文件,请确定是否有权限编辑文件");
$txt = $data_json;
fwrite($myfile, $txt);
fclose($myfile);
博主有话说:

作者:书生, 转载或复制请以 超链接形式 并注明出处 书生博客
原文地址:《酷狗歌单获取歌曲信息的接口源码》 发布于2018-06-22

分享到:
赞(6) 打赏

评论 抢沙发

7 + 4 =

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

欢迎来访本博客!

本博客分享各种活动线报,实用代码等一些比较实用的资源,感兴趣的话可以收藏一下哦~

了解一下

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录