Hexo-Butterfly 魔改 - 给文章添加随机图片

制作简单的 随机图片 api

这里以 "腾讯云"为例.
需要有 php 环境

上传图片

在存储桶中创建一个文件夹,将准备的随机图片上传到创建的这个文件夹中, 可以通过网页上传, 也可以通过工具.

创建 网站

创建 文件

在网站根目录中创建 img.txtindex.php 两个文件.

index.php 中填写随机图片脚本

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
<?php
//存有美图链接的文件名img.txt
$filename = "img.txt";
if(!file_exists($filename)){
die('文件不存在');
}

//从文本获取链接
$pics = [];
$fs = fopen($filename, "r");
while(!feof($fs)){
$line=trim(fgets($fs));
if($line!=''){
array_push($pics, $line);
}
}

//从数组随机获取链接
$pic = $pics[array_rand($pics)];

//返回指定格式
$type=$_GET['type'];
switch($type){

//JSON返回
case 'json':
header('Content-type:text/json');
die(json_encode(['pic'=>$pic]));

default:
die(header("Location: $pic"));
}

?>

img.txt 中放入图片的链接

此时,使用我们当时创建网站的网址就可以获取到随机图片了,如: https://random-img.pupper.cn

在 hexo 博客中使用

修改 js 文件

有 "+"、"-" 号的部分为修改的部分

themes/butterfly/scripts/filters/random_cover.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
/**
* Butterfly
* ramdom cover
*/

'use strict'

hexo.extend.filter.register('before_post_render', function (data) {
const { config } = this
......
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
- // return cover
} else {
num = Math.floor(Math.random() * theme.cover.default_cover.length)
cover = theme.cover.default_cover[num]
- // return cover
}
} else {
cover = theme.default_top_img || 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
- // return cover
}
+ 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
}

修改 配置文件

_config.butterfly.yml

1
2
3
4
5
6
7
8
9
10
11
# 文章封面
cover:

......

# 在链接后面加入后缀?spm={随机数} 0是不使用后缀、1是?加随机数;2是&加随机数
suffix: 1
# 当没有设置cover时,默认的封面显示(这里就是我们的随机图片地址)
default_cover:
- https://random-img.pupper.cn/api

重新编译启动

1
2
3
hexo c
hexo g
hexo s

大功告成