[PHP] 纯文本查看 复制代码<?php
$data = $_POST;
if(empty($data) || empty($data['bz_url'])){
echo json_encode(['code'=>500,'msg'=>'必填参数不能为空']);die;
}
if(substr($data['bz_url'] , 0 , 22) != 'http://desk.zol.com.cn'){
echo json_encode(['code'=>501,'msg'=>'请传入正确的 ZOL 地址!']);die;
}
$rs['width'] = '1440';//默认分辨率
$rs['height'] = '900';//默认分辨率
if(!empty($data['bz_dpi'])){
$dpi = explode(',',$data['bz_dpi']);
if(count($dpi) != 2){
echo json_encode(['code'=>502,'msg'=>'分辨率解析失败']);die;
}
if(!in_array($dpi[0] , [2880,2560,1920,1680,1600,1440,1366,1280]) || !in_array($dpi[1] , [1800,1600,1080,1050,900,768,1024,800])){
echo json_encode(['code'=>503,'msg'=>'无法识别的分辨率']);die;
}
$rs['width'] = trim($dpi[0]);//默认分辨率
$rs['height'] = trim($dpi[1]);//默认分辨率
}
$path = './image/';
if(!empty($data['bz_path'])){
if(!is_dir($data['bz_path'])){
$rk = mkdir($data['bz_path'],0777);
if(!$rk) echo json_encode(['code'=>505,'msg'=>'保存目录文件夹创建失败']);die;
}
$path = $data['bz_path'];
}
//使用 queryList 下载ZOL壁纸
require('./autoload.php');
use QL\QueryList;
$withDownImageUrl = trim($data['bz_url']);
$ql = QueryList::getInstance();
$ql->bind('downloadImage',function ($path,$rs){
$data = $this->getData()->map(function ($item) use($path,$rs){
$imageUrl = '';
if(!empty($item['image'])){
$imageUrl .= $item['image'];
}
if(!empty($item['images'])){
$imageUrl .= $item['images'];
}
if(empty($imageUrl)) return false;
$urlArr = explode('144x90',$imageUrl);
if(count($urlArr) !=2) return false;
$imageUrl = $urlArr[0].$rs['width'].'x'.$rs['height'].$urlArr[1];
// 获取图片
$img = file_get_contents($imageUrl);
if(!is_dir($path.$rs['title'].'_'.$rs['count'])){
$isMkDir = mkdir($path.$rs['title'].'_'.$rs['count'],0777);
if(!$isMkDir){
$item['down_image'] = '文件夹创建失败';return;
}
}
//存储路径和文件名
$localPath = $path.$rs['title'].'_'.$rs['count'].'/'.date('YmdHis').mt_rand(10000,99999).'.jpg';
// 保存图片到本地路径
$res = file_put_contents($localPath,$img);
$item['issave'] = !empty($res)?'1':'0';
$item['message'] = !empty($res)?'保存成功':'保存失败';
return $item;
});
//更新data属性
$this->setData($data);
return $this;
});
$html = $ql->get($withDownImageUrl);
//标题
$rs['title'] = $ql->find('#titleName')->text();
//图片总数
$rs['count'] = mb_substr(explode('/',$ql->find('h3>span')->text())[1],0,-1);
$data = $html->rules([
'image' =>['#showImg>li>a>img','src'],
'images' =>['#showImg>li>a>img','srcs'],
])->query()->downloadImage($path,$rs)->getData()->all();
$responseData['title'] = $rs['title'];
$responseData['count'] = $rs['count'];
$responseData['succ'] = 0;
$responseData['fail'] = 0;
foreach ($data as $v) {
if($v['issave']){
$responseData['succ']+=1;
}else{
$responseData['fail']+=1;
}
}
echo json_encode(['code'=>200,'msg'=>'下载完成','data'=>$responseData]);die;