[PHP] 纯文本查看 复制代码<?php
/*
* @Description: 网易云
* @Author: BuWenGuiQi_
* @Date: -02-15 18:06:15
* @LastEditTime: -02-25 07:45:54
* @Tips: 现在的努力是为了小时候吹过的牛逼!
*/
namespace app\common\lib;
class Netease
{
function getNeteaseMusicData($id, $br = 128000)
{
$p = [
'ids' => '[' . $id . ']',
'br' => $br,
];
$p = json_encode($p);
$data = $this->createParam($p);
return json_decode($this->httpPost('weapi/song/enhance/player/url?csrf_token=', $data), true);
/*
* {"data":[{"id":413812378,"url":"http://m10./0930150020/5a60f4e62d8da953894c00a57f083203/ymusic/2a0c/718e/fecc/d2407d8228490343a94dc008463d3aab.mp3","br":128000,"size":1778042,"md5":"d2407d8228490343a94dc008463d3aab","code":200,"expi":1200,"type":"mp3","gain":-2.0E-4,"fee":0,"uf":null,"payed":0,"flag":0,"canExtend":false}],"code":200}
* { ["msg"]=> string(12) "参数错误" ["code"]=> int(400) }
*/
}
/**
* @Description: 加密啥乱七八糟的东西
* @Date: -02-15 18:14:28
* [url=home.php?mod=space&uid=952169]@Param[/url] {type}
*/
function AesEncrypt($text, $key, $iv = '0102030405060708')
{
$pad = 16 - strlen($text) % 16;
$text = $text . str_repeat(chr($pad), $pad);
$encryptor = openssl_encrypt($text, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
return base64_encode($encryptor);
}
/**
* @Description: 生成 params & encSecKey
* @Date: -02-15 18:14:01
* @param {type}
*/
function createParam($text)
{
$nonce = '0CoJUm6Qyw8W8jud';
$secKey = 'FFFFFFFFFFFFFFFF';
$encText = $this->AesEncrypt($this->AesEncrypt($text, $nonce), $secKey);
$encSecKey = '257348aecb5e556c066de214e531faadd1c55d814f9be95fd06d6bff9f4c7a41f831f6394d5a3fd2e3881736d94a02ca919d952872e7d0a50ebfa1769a7a62d512f5f1ca21aec60bc3819a9c3ffca5eca9a0dba6d6f7249b06f5965ecfff3695b54e1c28f3f624750ed39e7de08fc8493242e26dbc4484a01c76f739e135637c';
return [
'params' => $encText,
'encSecKey' => $encSecKey,
];
}
/**
* @Description: 获取网易云热评
* @Date: -02-15 18:15:36
* @param {type}
*/
function music_hotComments($id, $br = 128000)
{
$p = [
'ids' => '[' . $id . ']',
'br' => $br,
];
$p = json_encode($p);
$data = $this->createParam($p);
return json_decode($this->httpPost('weapi/v1/resource/comments/R_SO_4_' . $id . '?csrf_token=', $data), true);
}
/**
* @Description: 发起访问请求
* @Date: -02-15 18:15:59
* @param {type}
*/
function httpPost($url = '', array $param)
{
$url = "/" . $url . '&s=' . time();
$values = [];
foreach ($param as $key => $value) {
$values[] = "$key=" . urlencode($value);
}
error_reporting(E_ALL);
$values = implode('&', $values);
$ch = curl_init(); //初始化curl
curl_setopt($ch, CURLOPT_URL, $url); //抓取指定网页
curl_setopt($ch, CURLOPT_HEADER, 0); //设置header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //要求结果为字符串且输出到屏幕上
curl_setopt($ch, CURLOPT_POST, 1); //post提交方式
//字符串时自动为application/x-www-form-urlencoded
//数组时自动为 form-data
curl_setopt($ch, CURLOPT_POSTFIELDS, $values);
$data = curl_exec($ch); //运行curl
curl_close($ch);
return $data;
}
}