随机图片API代码

发布于 2022-08-11  824 次阅读


步骤

1、 在网站目录下新建一个img.php,填入以下内容

<?php
//获取类型,为空则默认为all,可自行修改
$sort = !empty($_GET['sort']) ? $_GET['sort'] : 'all' ;
// 存储数据的文件
$filename = ''.$sort.'.txt';
if(!file_exists($filename)) {
    die('指定sort为空或不存在');
}
// 读取整个数据文件
$data = file_get_contents($filename);
// 按换行符分割成数组
$data = explode(PHP_EOL, $data);
// 随机获取一行索引
$result = $data[array_rand($data)];
// 去除多余的换行符(解决获取空值问题
$result = str_replace(array("\r","\n","\r\n"), '', $result);
$size_arr = array('large', 'mw2048', 'mw1024', 'mw690', 'bmiddle', 'small', 'thumb150', 'thumb180', 'thumbnail', 'orj360', 'orj480', 'square');
$size = !empty($_GET['size']) ? $_GET['size'] : 'large' ;
$server = rand(1,4);
if(!in_array($size, $size_arr)){
    $size = 'large';
}
$url = 'https://tva'.$server.'.sinaimg.cn/'.$size.'/'.$result.'.jpg';
//返回指定格式
$type = $_GET['type'];
switch($type){
case 'json':
header('Content-type:text/json');
die(json_encode(['pic'=>$url]));
default:
die(header("Location: $url"));
}
?>

2、 新建一个(或多个)文本文档如all.txt,pc.txt,mp.txt来存放不同类型的图片
3、 将新浪图片的id放入txt文件内,每行一个,如

ec43126fgy1gwzttbaqdgj23ad5kwe85
004kfMibgy1gv9dgwgwcaj60ta1jcwzx02
004kfMibgy1gvm871c7kxj60zs1rvu0x02
ec43126fgy1gls2ljuncvj20kw0zk7mw
ec43126fgy1h1dwk65t40j212i1w3txc
ec43126fgy1gypdwheq23j215o1xp1ky
ec43126fgy1h07sk6gx1vj21e82p81kz
ec43126fgy1h0nmxrfjwxj20ma1b3kg7
ec43126fgy1gnptyzb04rj20xp1kwgrh
ec43126fgy1gt9r60t6xvj20xc1li7wh

4、 访问http://你的域名或IP/img.php来查看效果

这里代码中提到三个参数,

  • sort 图片的类型,其值对应你txt文件的主文件名,如上文中的all,mp,pc,若不输入则为默认值,代码中默认值为all,可自行修改
  • size 图片的大小,新浪图床带有的参数,可选值见代码,默认为large
  • type 返回的格式,可选值json,默认直接302跳转

访问示例:

至此大功告成!

延伸

由此我又想到做一个随机音乐的API,稍微修改后代码如下:

<?php
// 存储数据的文件
$file = 'musicid.txt';
if(!file_exists($file)) {
    die($file . ' 数据文件不存在');
}
// 读取整个数据文件
$data = file_get_contents($file);
// 按换行符分割成数组
$data = explode(PHP_EOL, $data);
// 随机获取一行索引
$id = $data[array_rand($data)];
// 去除多余的换行符(解决获取空值问题
$id = str_replace(array("\r","\n","\r\n"), '', $id);
$url = 'https://music.163.com/song/media/outer/url?id='.$id.'.mp3';
//返回指定格式
$type=$_GET['type'];
switch($type){
case 'json':
header('Content-type:text/json');
die(json_encode(['url'=>$url]));
default:
die(header("Location: $url"));
}
?>

此处musicid.txt中存放网易云音乐的ID,同上,一行一个,如

509728520
1865399500
424262056
1342500435
1351255013
433103634
1430075225
440767322
1443634040
38019747
461301621
1416874719
450795499
1865095537
1484336476
1417621861
1854628391
440241194
1804552399
1832945165

访问对应的链接会直接跳转到随机音乐的直链,再稍作修改json也能返回歌手和歌名及专辑等信息,但我懒得弄,因为我不会🐶🐶🐶

  • 示例:https://moe.jitsu.top/music