phpcms二次开发图片采集接口

刚写的,把工作减轻下,也不想用phpcms后台的采集,那样不好直接搞完开始SEO优化。

api/目录下新建接口文件getpic.php,内容如下:

01.
<?php
02.
defined('IN_PHPCMS') or exit('No permission resources.');
03.
//获取图片链接
04.
function GetUrl($pageurl){
05.
$a = file_get_contents($pageurl);
06.
preg_match_all("/<img src=\"(.*?)\" alt=\"(.*?)\" \/>/i", $a, $b);
07.
return $b[1][0];
08.
}
09.
//保存图片
10.
function GrabImage($url, $img_path){
11.
if ($url == ""){
12.
return false;
13.
}
14.
$filename = date("Ymdhis").rand(100, 999).".jpg";
15.
  ob_start();//打开输出
16.
  readfile($url);//输出图片文件
17.
  $img = ob_get_contents();//得到浏览器输出
18.
  ob_end_clean();//清除输出并关闭
19.
  $size = strlen($img);//得到图片大小
20.
  $fp2 = @fopen($img_path.$filename, "a");
21.
  fwrite($fp2, $img);//向当前目录写入图片文件,并重新命名
22.
  fclose($fp2);
23.
  return APP_PATH.$img_path.$filename;//返回新的文件名
24.
}
25.
26.
//获取页面内容
27.
$picurl = $_GET['url'];
28.
$item = file_get_contents($picurl);
29.
preg_match_all("/<h1 class=\"center\">(.*?)\(1\/(.*?)\)<\/h1>/i", $item, $b);
30.
if($b){
31.
$data[0] = 1;
32.
$data[1]['title'] = $b[1][0];
33.
$piclistnum = $b[2][0];
34.
35.
//生成列表页
36.
//$pic = array();
37.
for ($i=1; $i<=$piclistnum; $i++) { 
38.
if($i == 1){
39.
$pic[$i] = $picurl;
40.
}else{
41.
//https://www.uumnt.com/shuaige/20498.html
42.
//https://www.uumnt.com/shuaige/20498_2.html
43.
$pic[$i] = str_replace(".html", "_".$i.".html", $picurl);
44.
}
45.
}
46.
47.
//生成目录
48.
$img_path = "uploadfile/".date("Y/md/");
49.
if(!file_exists($img_path)){
50.
mkdir($img_path, 0777, ture);
51.
}
52.
53.
//循环存储图片
54.
foreach ($pic as $key => $value) {
55.
$picname[$key] = GrabImage(GetUrl($value), $img_path);
56.
}
57.
58.
$data[1]['list'] = $picname;
59.
}else{
60.
$data[0] = 0;
61.
}
62.
63.
echo json_encode($data);
64.
?>

然后我们需要在后台添加内容模版里添加代码,我是用的图片模型,所以判断下了modelid,找到phpcms/modules/content/templates/下的content_add.tpl.php里面找到dom结束的标签</html>后面添加如下代码:

01.
<?php
02.
if($modelid == 3){
03.
?>
04.
<script type="text/javascript">
05.
$(function(){
06.
$("input[name='info[copyfrom]']").attr("placeholder","请输入要采集的图片页面地址!");
07.
$("input[name='info[copyfrom]']").after("<input type='button' id='collection' value='采集图片' /> ");
08.
$("#collection").click(function(){
09.
if($("input[name='info[copyfrom]']").val() == ''){
10.
alert("请输入要采集的图片页面地址!");
11.
return false;
12.
}else{
13.
var pic_url = $("input[name='info[copyfrom]']").val();
14.
$.get("/api.php?op=getpic",{url:pic_url},
15.
function(data){
16.
//alert(data);
17.
var info = eval(data);
18.
if(info[0] == 0){
19.
alert("采集失败!");
20.
return false;
21.
}else{
22.
$("#title").val(info[1]['title']);
23.
$("#thumb_preview").attr("src",info[1]['list'][1]);
24.
$("#thumb").val(info[1]['list'][1]);
25.
for (var p in info[1]['list']) {
26.
//alert(info[1]['list'][p]);
27.
$("#pictureurls").before("<div id='image_pictureurls_"+ p +"' style='padding:1px'><input type='text' name='pictureurls_url[]' value='"+ info[1]['list'][p] +"' style='width:310px;' ondblclick='image_priview(this.value);' class='input-text'> <input type='text' name='pictureurls_alt[]' value='"+ info[1]['title'] + p +"' style='width:160px;' class='input-text'> <a href=\"javascript:remove_div\('image_pictureurls_"+ p +"'\)\">移除<\/a><\/div>");
28.
29.
}
30.
$("#nameTip").remove();
31.
$("input[name='info[copyfrom]']").val("");
32.
}
33.
});
34.
}
35.
});
36.
});
37.
</script>
38.
<?php
39.
}
40.
?>

我是测试的uumnt.com的图片,其它站点的把GetUrl函数内的正则改改。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/451

评论列表