简介

如果你仔细观察,你就会发现本站的所有图片都是随机的

这实际上是我简单写的一个程序

目前是被挂在了 SELV.ES 这个站点上

本api面向四个方向设计,且均来源于p站 AI生成的一些千篇一律的图全部没有收集

当然,api中也是按角色分类的,目前有绪山真寻,和泉纱雾,伊雷娜,后藤一里(波奇),中野三玖,中野五月,樱岛麻衣,血小板(工作细胞),希丝缇娜(小魔禁),土间埋,珈百璃的堕落(系列女主),国家队(Darling in Franxx) 系列女主,事实上都是我看过的番剧中最喜欢的一些角色

程序实现

这里不提供完整代码,提供部分代码,如随机目录名,在目录中随机文件名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// 获取指定目录下面的某个随机文件名
function getRandomFileName($directory)
{
$mydir = dir($directory);
$files = array();
while($file = $mydir->read())
{
if(is_dir("$directory/$file")) continue;
if($file == ".") continue;
if($file == "..") continue;

array_push($files, $file);
}
$mydir->close();

srand((float) microtime() * 10000000);
$index = array_rand($files);
return $files[$index];
}
function getRandomDir($directory)
{
$dir = scandir($directory);
array_shift($dir);
array_shift($dir); //二者进行两次操作 删除. 与 .. 不可合并
$key=array_rand($dir,1);
$rand_dir=$directory.'/'.$dir[$key];
return $rand_dir;
}

具体思路就是通过这两个函数,再header输出图片

分类使用

1.正常的明信片图,长图。适合做手机壁纸 点我查看

https://selv.es/random/index.php?param=long

随机生成的长图

2.背景大图,可作电脑壁纸 点我查看

https://selv.es/random/index.php?param=back

随机生成的大图

注(2024.2.15加入):形如https://selv.es/random/index.php?param=back&long 等加入long参数代表生成背景图(且有二分之一的概率分别得到大图和长图,这是适用于hexo自动裁剪的背景)

3.头像小图,顾名思义 点我查看

https://selv.es/random/index.php?param=avatar

随机生成的头像小图

不过隔壁tsinbei cdn中有种类更多的头像(毕竟这里角色有局限性),详情请见 文档 直接显示请直接访问下列网址

1
https://api.tsinbei.com/v2/image/acg/?display=1

cdn的头像

4.获取横图(用于文章封面等),基本都由我从长图裁剪下来【PS:任何参数或没有参数都行】 点我查看

https://selv.es/random/index.php

随机生成的横图

问题

如果你引用了api发现图片基本相同,重复率高,请按照以下操作进行

转载自 https://blog.mitsumune.top/2023/02/13/hexo_butterfly主题添加对随机图片api的支持/ 在这里致谢

1.打开hexo根目录\themes\butterfly\scripts新建一个random_img.js文件

2.将以下代码复制进random_img.js并保存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/**
* Butterfly
* ramdom cover
*/

'use strict'

hexo.extend.filter.register('before_post_render', function (data) {
const { config } = this
if (config.post_asset_folder) {
const imgTestReg = /\.(png|jpe?g|gif|svg|webp)(\?.*)?$/
const topImg = data.top_img
const cover = data.cover
if (topImg && topImg.indexOf('/') === -1 && imgTestReg.test(topImg)) data.top_img = data.path + topImg
if (cover && cover.indexOf('/') === -1) data.cover = data.path + cover
}

if (data.cover === false) {
data.randomcover = randomCover()
return data
}

data.cover = data.cover || randomCover()
return data
},0)

function randomCover () {
const theme = hexo.theme.config
let cover
let num

if (theme.cover && theme.cover.default_cover) {
if (!Array.isArray(theme.cover.default_cover)) {
cover = theme.cover.default_cover
} else {
num = Math.floor(Math.random() * theme.cover.default_cover.length)
cover = theme.cover.default_cover[num]
}
} else {
cover = theme.default_top_img || 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
}
if(theme.cover.suffix){
if(theme.cover.suffix == 1)
cover = cover + ("?" + Math.ceil(Math.random()*10000))
else if(theme.cover.suffix == 2)
cover = cover + ("&" + Math.ceil(Math.random()*10000))
}
return cover
}

3.打开butterfly主题配置文件:在cover:插入suffix: 1并保存(目的是在链接后面加入后缀?spm={随机数} 0是不使用后缀、1是?加随机数;2是&加随机数),然后hexo素质三连

4.本思路就是通过get标签得到不同url进行多次请求,避免由于缓存产生的重复图片问题

致谢

在这里感谢清北cdn提供加速服务,清北cdn

也一并感谢p站画师

Todo

本项目从2024/2/13 日晚开始 且短期内不会停止(坚持收集)

1.完成上传页面(无需后台上传)
2.开放用户社区,允许用户通过sckur相关服务上传并提供审核
3.更多的选项
4.更快的速度与更高的性能
5.公开展示大量图片,形成图床社区