记录一次PHP下载酷狗歌单内所有歌曲(附林俊杰梦想的声音31首mp3合集)

前段时间二刷了<梦想的声音>又被JJ林俊杰实力吸粉了,于是找到一个他在梦想的声音所有歌的歌单

歌单是酷狗的…该说不说现在酷狗弄的…PC端分享歌单不能直接复制链接,还得分享到QQ然后再复制一下…

在这分享下歌单链接给爱听”行走的CD”唱歌的小伙伴们:

  歌单地址

然后酷狗里点击下载之后弹出个窗口给我整无语了…8说了看图好吧

一共31首歌, 28首都是付费下载的!

于是本小白就开始琢磨, 一顿操作后写出如下代码:

<?php
$ym = file_get_contents('https://wwwapi.kugou.com/share/zlist.html?listid=32&type=1&uid=366027247&sign=faa36a1424720f32a3239f033b367a39&_t=619359783&from=pcCode&share_type=collect#hash=62D383EB833E41FF7E05E7BC493CE31F&album_id=8022123');

//设置歌曲保存路径
$path = __DIR__ . '\\music\\';

//正则取出包涵歌曲hash的json
$pattern = '/var dataFromSmarty = (.*?),\/\/当前页面歌曲信息/';
preg_match_all($pattern, $ym, $matches);
$sings = json_decode($matches[1][0]);

$singsarr = [];

foreach ($sings as $key => $value) {
	$singsarr[] = 'https://wwwapi.kugou.com/yy/index.php?r=play/getdata&hash='.$value->hash.'&album_id='.$value->album_id;
}

foreach ($singsarr as $key => $value) {
	$sjson = mycurl($value);
	$downjson = json_decode($sjson,true);

	if (file_put_contents($path . iconv("UTF-8","gbk//TRANSLIT",$downjson['data']['audio_name']) . '.mp3', file_get_contents($downjson['data']['play_url']))) {
		//在小黑框输出中文的时候要把utf-8转换成gbk,不然会乱码
		echo iconv("UTF-8","gbk//TRANSLIT",$downjson['data']['audio_name'] . '下载完毕')."\n";
	}else{
		echo iconv("UTF-8","gbk//TRANSLIT",$downjson['data']['audio_name'] . '下载失败')."\n";
	}
	//下载完一首,休眠10s,以防访问频繁cookie过期
	sleep(10);

}


function mycurl($url){
	$cookie='cookie';
	//设置访问头
	$httpheader[] = "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36";
	$curl = curl_init();//初始化一个curl会话;
	curl_setopt($curl,CURLOPT_URL,$url);//指定访问的url
	curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//获取的信息以文件流的方式返回
	curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
	curl_setopt($curl, CURLOPT_HTTPHEADER, $httpheader);
	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
	curl_setopt($curl, CURLOPT_COOKIE, $cookie);//设置cookie
	$data = curl_exec($curl);//执行curl;
	curl_close($curl); // 关闭CURL会话
	return $data;
}

小黑框内运行一哈

然后发现有8首歌下载一直都是失败的…

后来一看, 这8首歌连听听都要花钱! 所以没有搞到下载链接!

另外一个坑的点就是.测试的时候cookie总是过期…可能是访问太频繁了吧, 然后我就加了个 sleep(10)

记录一哈, 有时间把这段代码完善一下.

最后分享一哈我下完的31首歌给喜欢听JJ林俊杰唱歌的小伙伴吧!

  百度云盘    提取码: miy2

-End-

风影OvO

风影OvO, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA 4.0协议进行授权 | 转载请注明原文链接

2 Comments

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐