今天通知下来,如果疫情没有直接证据表明好转,则整个学期都会以线上形式授课。其实挺适合我的,这样我就可以自己安排时间学习,有时候多看一点,有时候少看一点。听说考试不会延期,那这次再出难题可就有点说不过去了。
说一下API,主要是导航页,和博客首页头图用到了这个API,就是从一个文件夹下随机获取一张我的摄影作品。
之前是在网上找到了acgimgurl这么一个方案,可以从网易自动获取图片,也可以自定义文件。
实现方法是建立个TXT格式的文件名列表,再通过PHP读取其中每一条整合成完整的地址。
但这个比较蛋疼就是,在我传完图片后,为了让API能更新这些图片,我需要再手动把这几个文件名放到TXT文件里。多一个步骤,很不爽。
于是就稍微做了些改动,先在储存照片的网站下挂一个PHP单纯用来计数。
<?php
$imgnum = (count(scandir('./api'))-'2');
print_r($imgnum);
?>
这个php也可以直接访问来看已经有多少图片,为之后图片批量命名做参考。
直接计数会出一个数组,其中包含一个. 和一个.. 所以在计数后-2,就是真正的文件数了。
然后就是真正的API
<?php
$raw = file_get_contents('https://fkun.tech/apinum.php');
$imgnum= (int)$raw;
$num = rand(1,$imgnum);
$url = 'https://fkun.tech/api/web-'.$num.'.jpg';
//解析结果
$result=array("code"=>"200","acgurl"=>"$url");
//Type Choose参数代码
$type=$_GET['return'];
switch ($type)
{
//格式解析
case 'json':
$path = "$url";
$pathinfo = pathinfo($path);
$imageInfo = getimagesize($url);
$result['width']="$imageInfo[0]";
$result['height']="$imageInfo[1]";
$result['size']="$pathinfo[extension]";
header('Content-type:text/json');
echo json_encode($result);
break;
//格式解析
case 'img':
$img = file_get_contents($url,true);
header("Content-Type: image/jpeg;");
echo $img;
break;
//IMG
default:
header("Location:".$result['acgurl']);
break;
}
function str_re($str){
$str = str_replace(' ', "", $str);
$str = str_replace("\n", "", $str);
$str = str_replace("\t", "", $str);
$str = str_replace("\r", "", $str);
return $str;
}
?>
他这个代码前半部分我改了一下,直接让他获取之前计数网页的数据,转成整型再做个random。
现在终于就可以直接传图,自动更新到首页了。
之后想单独做个摄影集的页面。