mirror of https://github.com/IoTcat/img-api.git
parent
53f2982b85
commit
265cf97ba0
6 changed files with 778 additions and 0 deletions
@ -0,0 +1,2 @@ |
||||
<?php |
||||
phpinfo(); |
@ -0,0 +1,10 @@ |
||||
<?php |
||||
include './functions.php'; |
||||
|
||||
header('Access-Control-Allow-Origin:*'); |
||||
|
||||
$type = $_REQUEST['type']; |
||||
|
||||
$arr = getImgsInfo($type); |
||||
|
||||
echo json_encode($arr); |
@ -0,0 +1,121 @@ |
||||
<?php |
||||
|
||||
include './functions.php'; |
||||
|
||||
/* anti ddos */ |
||||
/*if(!isset($_COOKIE['_token__']) || $_COOKIE['_token__'] != md5(date('Y-m-d-H'))) { |
||||
setcookie("_token__",md5(date('Y-m-d-H')),time()+1*3600); |
||||
header("Location: https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], true, 301); |
||||
}*/ |
||||
|
||||
|
||||
header('content-type: image/png'); |
||||
|
||||
$path = $_REQUEST['path']; |
||||
$type = $_REQUEST['type']; |
||||
$id = $_REQUEST['id']; |
||||
$size = $_REQUEST['size']; |
||||
$display = $_REQUEST['display']; |
||||
$R18 = $_REQUEST['R18']; |
||||
$range = $_REQUEST['range']; |
||||
|
||||
|
||||
if(!isset($type) || !($type == "moe" || $type == "koino" || $type == "head" || $type == "wallpaper" || $type == "blog" || $type == "imgbed" || $type == "easyver")) $type = "moe"; |
||||
if(!isset($id)) $id = null; |
||||
if(!isset($size)) $size = null; |
||||
if(!isset($path)) $path = null; |
||||
if($display != "true") $display = false; else $display = true; |
||||
if($R18 != "true") $R18 = false; else $R18 = true; |
||||
if(isset($range) && $range > 0) $range = $range; else $range = 0; |
||||
|
||||
|
||||
if($path){ |
||||
|
||||
returnImg($path); |
||||
}elseif($type){ |
||||
|
||||
$arr = getImgsInfo($type); |
||||
|
||||
if($id){ |
||||
$pos = array_search($id, $arr[1]); |
||||
if($pos) $path = $type. '/' .$arr[0][$pos]; |
||||
} |
||||
|
||||
if(!$size && !$path){ |
||||
$path = $type. '/' .$arr[0][array_rand($arr[0])]; |
||||
}elseif(strpos($size, '-') && !$path){ |
||||
$arr_size = explode('x',$size); |
||||
if(strpos($arr_size[0], '-')) $arr_size_length = explode('-',$arr_size[0]); |
||||
else $arr_size_length = $arr_size[0]; |
||||
if(strpos($arr_size[1], '-')) $arr_size_high = explode('-',$arr_size[1]); |
||||
else $arr_size_high = $arr_size[1]; |
||||
$arr_length = getMatchedKeys($arr_size_length, $arr[2]); |
||||
$arr_high = getMatchedKeys($arr_size_high, $arr[3]); |
||||
if($arr_size[0] == '*') $arr_keys = $arr_high; |
||||
elseif($arr_size[1] == '*') $arr_keys = $arr_length; |
||||
else $arr_keys = array_intersect($arr_length, $arr_high); |
||||
if(!count($arr_keys)){ |
||||
header('content-type: application/json'); |
||||
echo json_encode(array("err"=>"Can not find any images matching Size $size in Type $type!!")); |
||||
die(); |
||||
} |
||||
do{ |
||||
$index = array_rand($arr_keys); |
||||
}while($R18 != true && $arr[6][$arr_keys[$index]] != "normal"); |
||||
$path = $type. '/' .$arr[0][$arr_keys[$index]]; |
||||
|
||||
}elseif(!$path){ |
||||
$arr_size = explode('x',$size); |
||||
$arr_length = getMatchedKeys($arr_size[0], $arr[2]); |
||||
$arr_high = getMatchedKeys($arr_size[1], $arr[3]); |
||||
if($arr_size[0] == '*' && $arr_size[1] == '*') $arr_keys = getMatchedKeys(array(0=>0,1=>9999), $arr[2]); |
||||
elseif($arr_size[0] == '*') $arr_keys = $arr_high; |
||||
elseif($arr_size[1] == '*') $arr_keys = $arr_length; |
||||
else $arr_keys = array_intersect($arr_length, $arr_high); |
||||
if(!count($arr_keys)){ |
||||
header('content-type: application/json'); |
||||
echo json_encode(array("err"=>"Can not find any images matching Size $size in Type $type!!")); |
||||
die(); |
||||
} |
||||
do{ |
||||
$index = array_rand($arr_keys); |
||||
}while($R18 != true && $arr[6][$arr_keys[$index]] != "normal"); |
||||
$path = $type. '/' .$arr[0][$arr_keys[$index]]; |
||||
|
||||
//$path = $type. '/' .$arr[0][$arr_keys[array_rand($arr_keys)]]; |
||||
|
||||
} |
||||
|
||||
returnImg($path); |
||||
|
||||
}else{ |
||||
|
||||
die(); |
||||
} |
||||
|
||||
|
||||
yimian__log("log_api", array("api" => "img", "timestamp" => date('Y-m-d H:i:s', time()), "ip" => ip2long(getIp()), "_from" => get_from(), "content" => $path)); |
||||
|
||||
|
||||
|
||||
|
||||
function returnImg($path){ |
||||
$url = getImg($path); |
||||
if($GLOBALS['display']) echo file_get_contents($url); else header("Location: $url"); |
||||
} |
||||
|
||||
function getMatchedKeys($str, $arr){ |
||||
if(!is_array($str)){ |
||||
$o = array(); |
||||
foreach($arr as $key=>$val){ |
||||
if($val >= $str - $GLOBALS['range'] && $val <= $str + $GLOBALS['range']) array_push($o, $key); |
||||
} |
||||
return $o; |
||||
}else{ |
||||
$o = array(); |
||||
foreach($arr as $key=>$val){ |
||||
if($val >= $str[0] - $GLOBALS['range'] && $val <= $str[1] + $GLOBALS['range']) array_push($o, $key); |
||||
} |
||||
return $o; |
||||
} |
||||
} |
@ -0,0 +1,63 @@ |
||||
<!doctype html> |
||||
<html> |
||||
|
||||
<head> |
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
||||
<title>随机图片 API</title> |
||||
<meta name="theme-color" content="#fd4b5c"> |
||||
<script src="https://cdn.yimian.xyz/ushio-js/ushio-head.min.js"></script> |
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<style type="text/css">h3:hover {box-shadow:0px 0px 8px #D1D1D1;}</style> |
||||
<div style="box-shadow: 5px 5px 25px 0 rgba(46,61,73,.2);border-radius:15px;font-size:13px;width:950px;font-family:微软雅黑,'Helvetica Neue',Arial,sans-serif;margin:10px auto 0px;border:0px solid #eee;max-width:100%;"> |
||||
<div style="width:100%;background-color: #3174ed;background-image: linear-gradient(90deg, #3174ed 0%, #FA8BFF 35%, #3fd9fb 88%);color:#FFFFFF;border-radius:15px 15px 0 0;"> |
||||
<h2 style="font-size:15px;word-break:break-all;padding:20px 32px;margin:0;text-align:center">随机图 - API</h2></div> |
||||
<div style="margin:0px auto;width:90%"> |
||||
<h3 style="-webkit-transition: all .2s cubic-bezier(0, 0, 0, 0.48);-moz-transition: all .2s ease;border:.0625rem solid #fafafa;background:#fafafa repeating-linear-gradient(-45deg,#fff,#fff 1.125rem,transparent 1.125rem,transparent 2.25rem);margin:15px 0px;padding:20px;border-radius:5px;font-size:14px;color:#333;"># 随机图片API请求方式 # |
||||
<ul> |
||||
<li>Method: GET/POST</li></ul> |
||||
<hr># 请求地址 # |
||||
<br/> |
||||
<a style="color:#fd4b5c;text-decoration:none;">https://api.yimian.xyz/img</a> |
||||
<br/># 参数 # |
||||
<br/> |
||||
<li>type //type=moe二次元(default)/wallpaper风景壁纸/head头像/koino幼犬酱</li> |
||||
<li>size //size=1920x1080图片大小/ 格式: ??x?? / ??-??x?? / ??x??-?? / ??-??x??-?? / ??x* / *x?? / *x* (default)</li> |
||||
<li>id //id=15 根据图片id获取图片,需要先指定type,默认为moe</li> |
||||
<li>display //display=true 是否直接输出图片(很慢),而不是302重定向到临时地址(默认,建议)</li> |
||||
<li>path //path=koino/img_7_849x906_96_koino_normal.jpg 直接根据地址获取图片,优先级高于type</li> |
||||
<li>R18 //R18=true 是否展示18禁图片,默认不展示</li> |
||||
<hr># 返回数据 # |
||||
<br/> |
||||
<div style="width:100%;background-color: #000;background-image: linear-gradient(90deg, #6694ed 0%,);color:#FFFFFF;border-radius:5px">本API无返回数据,直接输出图片 |
||||
<br/></div> |
||||
<hr># 备注 # |
||||
<br/>更多用法参考 |
||||
<a href="https://www.eee.dog/tech/rand-pic-api.html">https://www.eee.dog/tech/rand-pic-api.html</a> |
||||
<br/> |
||||
<hr># 示例 # |
||||
<br/> |
||||
<a style="color:#fd4b5c;text-decoration:none;" target="_blank">https://api.yimian.xyz/img?type=koino</a> |
||||
<br/> |
||||
<a style="color:#fd4b5c;text-decoration:none;" target="_blank">https://api.yimian.xyz/img?type=koino&display=true</a> |
||||
<br/> |
||||
<a style="color:#fd4b5c;text-decoration:none;" target="_blank">https://api.yimian.xyz/img?type=moe&size=1920x1080&display=true</a> |
||||
<br/> |
||||
<a style="color:#fd4b5c;text-decoration:none;" target="_blank">https://api.yimian.xyz/img?type=moe&size=666-888x999-2000&display=true</a> |
||||
<br/> |
||||
<a style="color:#fd4b5c;text-decoration:none;" target="_blank">https://api.yimian.xyz/img?type=moe&size=*x999-2000&display=true</a> |
||||
<br/> |
||||
<a style="color:#fd4b5c;text-decoration:none;" target="_blank">https://api.yimian.xyz/img?type=moe&id=15&display=true</a> |
||||
<br/> |
||||
<a style="color:#fd4b5c;text-decoration:none;" target="_blank">https://api.yimian.xyz/img?path=koino/img_7_849x906_96_koino_normal.jpg</a> |
||||
<br/> |
||||
<a style="color:#fd4b5c;text-decoration:none;" target="_blank">https://api.yimian.xyz/img?type=koino&R18=true&display=true</a> |
||||
<br/> |
||||
<a style="color:#fd4b5c;text-decoration:none;" target="_blank">https://api.yimian.xyz/img?type=wallpaper&display=true</a></h3> |
||||
</div> |
||||
</div> |
||||
</body> |
||||
<script src="https://cdn.yimian.xyz/ushio-js/ushio-footer.min.js"></script> |
||||
</html> |
Loading…
Reference in new issue