php 颜值测试源码,微软小冰颜值测试PHP最新代码

/**

* 微软小冰颜值测试

*/

class IceFace

{

// 颜值测试首页

protected $page = 'http://kan.msxiaobing.com/ImageGame/Portal?task=yanzhi';

// 颜值测试接口

protected $api = 'http://kan.msxiaobing.com/Api/ImageAnalyze/Process?service=yanzhi';

// 上传图片接口

protected $fileApi = 'http://kan.msxiaobing.com/Api/Image/UploadBase64';

// 错误信息

protected $error = '';

// 保存会话的文件

protected $cookieFile = '';

// 原数据

public $srcData = [];

// 评分

public $score = 0;

// 调侃

public $ridicule = '';

// 人脸图片

public $imgOfFace = '';

// 原图片文件

public $srcImgPath = '';

/**

* 构造函数

* @param string $file_path 本地或网络的文件路径

*/

public function __construct($file_path)

{

$this->srcImgPath = $file_path;

// 建立一个零时文件

$this->cookieFile = tempnam('./temp', 'cookie');

}

/**

* 颜值测试

* @return boolean 测试是否成功

*/

public function test()

{

$ret = $this->send($this->page);

if (empty($ret)) {

return $this->setError('访问颜值测试主页失败');

}

$ret = $this->uploadImgage($this->srcImgPath);

if (!isset($ret->Host) || !isset($ret->Host)) {

return $this->setError('上传图片到微软服务器错误');

}

$data = [

'MsgId' => str_pad(time(), 13, '0'),

'CreateTime' => time(),

'Content[imageUrl]' => $ret->Host . $ret->Url,

];

$headers = [

'Referer' => $this->page,

'User-Agent' => 'Python-urllib/2.7',

'Connection' => 'close',

];

$rsp = $this->send($this->api, $data, 'POST', $headers);

if (empty($rsp)) {

return $this->setError('颜值测试失败');

}

$this->srcData = json_decode($rsp, true);

if (!isset($this->srcData['content'])) {

return $this->setError('返回的数据异常');

}

// 解析原始数据

$this->paramSrcData();

}

/**

* 获取错误信息

* @return string

*/

public function getError()

{

return $this->error;

}

/**

* 解析原始数据

*/

private function paramSrcData()

{

if (empty($this->srcData)) {

return;

}

preg_match('/[-+]?([0-9]*\.[0-9]+|[0-9]+)/', $this->srcData['content']['text'], $matches);

if (!empty($matches) && isset($matches[0])) {

$this->score = $matches[0];

}

$this->ridicule = $this->srcData['content']['text'];

$this->imgOfFace = $this->srcData['content']['imageUrl'];

}

/**

* 设置错误信息

* @return boolean

*/

private function setError($message = '')

{

$this->error = $message;

return false;

}

/**

* 上传图片

* @param string $file_path 本地或网络地址

* @return data|string 响应数据

*/

private function uploadImgage($file_path)

{

$img_data = $this->getBase64DataByFilePath($file_path);

$rsp = $this->send($this->fileApi, $img_data, 'post', [], true);

if (empty($rsp)) {

return fasle;

}

return json_decode($rsp);

}

/**

* 发出请求

* @param string $url URL

* @param array|string $request 请求参数

* @param string $method 请求方法

* @return string

*/

private function send($url, $request = null, $method = 'GET', $headers = [], $is_binary = false)

{

$ch = curl_init();

$method = strtoupper($method);

if ($method == 'GET') {

if (is_array($request)) {

$url = $url . '?' . http_build_query($request);

}

}

if ($method == 'POST') {

curl_setopt($ch, CURLOPT_POST, true);

if ($is_binary) {

curl_setopt($ch, CURLOPT_POSTFIELDS, $request);

} else {

if (is_array($request)) {

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($request));

}

}

}

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_HTTPHEADER, $this->paramHeader($headers));

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

// cookie文件

curl_setopt($ch, CURLOPT_COOKIEJAR, $this->cookieFile);

curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookieFile);

$res = curl_exec($ch);

curl_close($ch);

return $res;

}

/**

* 解析header

* @param array $headers

* @return array 解析后的头部数组

*/

private function paramHeader($headers)

{

$arr = [];

foreach ($headers as $key => $value) {

$arr[] = $key . ':' . $value;

}

return $arr;

}

/**

* 获取图片的Base64编码的数据

* @param string $file_path 本地或网络地址

* @return string|base64

*/

private function getBase64DataByFilePath($file_path)

{

return base64_encode(file_get_contents($file_path));

}

}

$o = new IceFace('https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1527267326820&di=ed1e3eac833f7cee00cce44aca19cbc5&imgtype=0&src=http%3A%2F%2Fimgsrc.baidu.com%2Fimgad%2Fpic%2Fitem%2F7c1ed21b0ef41bd5221ae1d15bda81cb39db3d4d.jpg');

$o->test();

print_r($o->score);

print_r($o->ridicule);

print_r($o->imgOfFace);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值