实现Hexo新建博文时自带随机默认封面

实现Hexo新建博文时自带随机默认封面

前提是选择的主题在Front-matter中支持cover和thumbnail,主题之间对于这两个属性的定义可能并不用,如果不适用,只需要根据逻辑修改脚本即可。

1. Hexo模版

scaffolds文件夹下,有三个md文件即模版文件,平时我们hexo new post "title"的时候就是基于post.md生成的。

1
2
3
4
scaffolds
draft.md
page.md
post.md

将其修改为如下内容,补充属性,并添加2个特殊的字符串COVER_PLACEHOLDERTHUMBNAIL_PLACEHOLDER,作为占位符,方便替换。

1
2
3
4
5
6
7
8
9
10
11
12
---
title: {{ title }}
date: {{ date }}
comments: true
cover: COVER_PLACEHOLDER
thumbnail: THUMBNAIL_PLACEHOLDER
tags:
- 未分类
categories:
- 未分类
description:
---

2. 准备封面和缩略图

在source文件夹下新建gallery文件夹,并放入5张封面图和5张缩略图,封面建议1920*1080,缩略图建议200*200 。封面和缩略图是一一对应的。

1
2
3
4
5
6
7
8
9
10
11
source\gallery
defaultCover1.png
defaultCover2.png
defaultCover3.png
defaultCover4.png
defaultCover5.png
defaultThumbnail1.png
defaultThumbnail2.png
defaultThumbnail3.png
defaultThumbnail4.png
defaultThumbnail5.png

3. 新建博文脚本

我们不再手动hexo new post来创建博文,而是使用脚本,可以在前后多一些自定义事件。

windows

windows系统可以使用以下powershell脚本来创建新博文MD,这会随机使用某一套封面和缩略图。

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
# 获取当前时间戳
$timestamp = Get-Date -Format "yyyy-MM-dd-HH-mm-ss"

# 创建带有时间戳的 Markdown 文件
hexo new post $timestamp

# 替换新创建文件中的标题
$file = "source/_posts/$timestamp.md"

# 随机选择封面和缩略图
$randomIndex = Get-Random -Minimum 1 -Maximum 6
$cover = "/gallery/defaultCover$randomIndex.png"
$thumbnail = "/gallery/defaultThumbnail$randomIndex.png"

# 读取文件内容,指定编码方式
$mdContent = Get-Content $file -Raw -Encoding utf8

# 替换标题和封面占位符
$mdContent = $mdContent -replace 'cover: COVER_PLACEHOLDER', "cover: $cover"
$mdContent = $mdContent -replace 'thumbnail: THUMBNAIL_PLACEHOLDER', "thumbnail: $thumbnail"

# 将更新后的内容写回文件,指定编码方式
Set-Content -Path $file -Value $mdContent -Encoding utf8

Write-Output "Post created: $file"
Write-Output "Cover image: $cover"
Write-Output "Thumbnail image: $thumbnail"

Linux

Liunx系统可以使用这个脚本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash

# 获取当前时间戳
timestamp=$(date +%Y-%m-%d-%H-%M-%S)

# 创建带有时间戳的 Markdown 文件
hexo new post "$timestamp"

# 替换新创建文件中的标题
file="source/_posts/$timestamp.md"

# 随机选择封面和缩略图
randomIndex=$(( (RANDOM % 5) + 1 ))
cover="/gallery/defaultCover${randomIndex}.png"
thumbnail="/gallery/defaultThumbnail${randomIndex}.png"

# 替换封面和缩略图占位符
sed -i "s|cover: COVER_PLACEHOLDER|cover: $cover|" "$file"
sed -i "s|thumbnail: THUMBNAIL_PLACEHOLDER|thumbnail: $thumbnail|" "$file"

echo "Post created: $file"
echo "Cover image: $cover"
echo "Thumbnail image: $thumbnail"

4. 效果展示

实现Hexo新建博文时自带随机默认封面

https://xiamu-ssr.github.io/Hexo/2024/06/20/2024-H1/2024-06-20-15-46-45/

作者

Xiamu

发布于

2024-06-20

更新于

2024-08-11

许可协议

评论