博客音乐调用网易云歌曲
设置全民歌单,通过调用网易云 API,直接播放歌单歌曲。
编辑文件 header.php
musicSrc
<?php
function netease_AESECB($API) {
$KEY='7246674226682325323F5E6544673A51';
$body=json_encode($API['body']);
if (function_exists('openssl_encrypt')) {
$body=openssl_encrypt($body, 'aes-128-ecb', pack('H*', $KEY));
} else {
$PAD=16-(strlen($body)%16);
$body=base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, hex2bin($KEY), $body.str_repeat(chr($PAD), $PAD), MCRYPT_MODE_ECB));
}
$body=strtoupper(bin2hex(base64_decode($body)));
$API['body']=array(
'eparams'=>$body,
);
return $API;
}
function curl($API) {
$API=netease_AESECB($API);
$BASE = array(
'referer' => 'https://music.163.com/',
'cookie' => 'os=linux; appver=1.0.0.1026; osver=Ubuntu%2016.10; MUSIC_U=78d411095f4b022667bc8ec49e9a44cca088df057d987f5feaf066d37458e41c4a7d9447977352cf27ea9fee03f6ec4441049cea1c6bb9b6; __remember_me=true',
'useragent' => 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
);
$curl=curl_init();
if ($API['method']=='POST') {
if (is_array($API['body'])) {
$API['body']=http_build_query($API['body']);
}
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $API['body']);
} elseif ($API['method']=='GET') {
if (isset($API['body'])) {
$API['url']=$API['url'].'?'.http_build_query($API['body']);
}
}
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_TIMEOUT, 20);
curl_setopt($curl, CURLOPT_ENCODING, 'gzip');
curl_setopt($curl, CURLOPT_IPRESOLVE, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($curl, CURLOPT_URL, $API['url']);
curl_setopt($curl, CURLOPT_COOKIE, $BASE['cookie']);
curl_setopt($curl, CURLOPT_REFERER, $BASE['referer']);
curl_setopt($curl, CURLOPT_USERAGENT, $BASE['useragent']);
$data=curl_exec($curl);
curl_close($curl);
return $data;
}
function curlMusic($id, $type = 'list', $br = 320) {
if ($type === 'list') {
$API=array(
'method' => 'POST',
'url' => 'http://music.163.com/api/linux/forward',
'body' => array(
'method' => 'POST',
'params' => array(
'id' => $id,
"n" => 1000,
),
'url' => 'http://music.163.com/api/v3/playlist/detail',
),
'encode' => 'netease_AESECB',
'format' => 'playlist#tracks',
);
$data = json_decode(curl($API))->playlist->tracks;
foreach($data as $k => $v) {
$ids[] = $v->id;
}
$urlList = json_decode(curlMusic($ids, 'music'))->data;
foreach ($urlList as $key => $value) {
$url[] = substr($value->url,5);
}
return $url;
} else {
if(is_array($id)){
$API=array(
'method' => 'POST',
'url' => 'http://music.163.com/api/linux/forward',
'body' => array(
'method' => 'POST',
'params' => array(
'ids' => $id,
'br' => $br*1000,
),
'url' => 'http://music.163.com/api/song/enhance/player/url',
),
'encode' => 'netease_AESECB',
'decode' => 'netease_url',
);
return curl($API);
} else {
$API=array(
'method' => 'POST',
'url' => 'http://music.163.com/api/linux/forward',
'body' => array(
'method' => 'POST',
'params' => array(
'ids' => array($id),
'br' => $br*1000,
),
'url' => 'http://music.163.com/api/song/enhance/player/url',
),
'encode' => 'netease_AESECB',
'decode' => 'netease_url',
);
return substr(json_decode(curl($API))->data[0]->url,5);
}
}
}
$id = $this->options->socialmusic;
$url=implode(",", curlMusic($id));
print_r($url);
?>
编辑文件 functions.php
$socialmusic = new Typecho_Widget_Helper_Form_Element_Text('socialmusic', NULL, NULL, _t('输入网易云ID'), _t('在这里输入网易云歌单ID,多首以,隔开'));
注解
1. 暂不支持多首歌单;
2. 暂未进行数据容错性解析;
3. 代码凌乱。
本文链接:https://www.masterzc.cn/archives/26.html
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处