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

2024-06-20 19:52

本文主要是介绍实现Hexo新建博文时自带随机默认封面,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. Hexo模版
  • 2. 准备封面和缩略图
  • 3. 新建博文脚本
    • windows
    • Linux
  • 4. 效果展示
  • 1. Hexo模版
  • 2. 准备封面和缩略图
  • 3. 新建博文脚本
    • windows
    • Linux
  • 4. 效果展示

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

1. Hexo模版

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

scaffoldsdraft.mdpage.mdpost.md

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

---
title: {{ title }}
date: {{ date }}
comments: true
cover: COVER_PLACEHOLDER
thumbnail: THUMBANAIL_PLACEHOLDER
tags:- 未分类
categories:- 未分类
description:
---

2. 准备封面和缩略图

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

source\gallerydefaultCover1.pngdefaultCover2.pngdefaultCover3.pngdefaultCover4.pngdefaultCover5.pngdefaultThumbnail1.pngdefaultThumbnail2.pngdefaultThumbnail3.pngdefaultThumbnail4.pngdefaultThumbnail5.png

3. 新建博文脚本

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

windows

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

# 获取当前时间戳
$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: THUMBANAIL_PLACEHOLDER', "thumbnail: $thumbnail"# 将更新后的内容写回文件,指定编码方式
Set-Content -Path $file -Value $mdContent -Encoding utf8Write-Output "Post created: $file"
Write-Output "Cover image: $cover"
Write-Output "Thumbnail image: $thumbnail"

Linux

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

#!/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: THUMBANAIL_PLACEHOLDER|thumbnail: $thumbnail|" "$file"echo "Post created: $file"
echo "Cover image: $cover"
echo "Thumbnail image: $thumbnail"

4. 效果展示


title: 实现Hexo新建博文时自带随机默认封面
comments: true
cover: /gallery/defaultCover3.png
thumbnail: /gallery/defaultThumbnail3.png
tags:

  • 个人博客
  • 网站
  • Hexo
    categories:
  • 未分类
    date: 2024-06-20 15:46:46
    description:

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

1. Hexo模版

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

scaffoldsdraft.mdpage.mdpost.md

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

---
title: {{ title }}
date: {{ date }}
comments: true
cover: COVER_PLACEHOLDER
thumbnail: THUMBANAIL_PLACEHOLDER
tags:- 未分类
categories:- 未分类
description:
---

2. 准备封面和缩略图

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

source\gallerydefaultCover1.pngdefaultCover2.pngdefaultCover3.pngdefaultCover4.pngdefaultCover5.pngdefaultThumbnail1.pngdefaultThumbnail2.pngdefaultThumbnail3.pngdefaultThumbnail4.pngdefaultThumbnail5.png

3. 新建博文脚本

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

windows

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

# 获取当前时间戳
$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: THUMBANAIL_PLACEHOLDER', "thumbnail: $thumbnail"# 将更新后的内容写回文件,指定编码方式
Set-Content -Path $file -Value $mdContent -Encoding utf8Write-Output "Post created: $file"
Write-Output "Cover image: $cover"
Write-Output "Thumbnail image: $thumbnail"

Linux

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

#!/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: THUMBANAIL_PLACEHOLDER|thumbnail: $thumbnail|" "$file"echo "Post created: $file"
echo "Cover image: $cover"
echo "Thumbnail image: $thumbnail"

4. 效果展示

在这里插入图片描述

这篇关于实现Hexo新建博文时自带随机默认封面的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1079100

相关文章

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

Python实现批量提取BLF文件时间戳

《Python实现批量提取BLF文件时间戳》BLF(BinaryLoggingFormat)作为Vector公司推出的CAN总线数据记录格式,被广泛用于存储车辆通信数据,本文将使用Python轻松提取... 目录一、为什么需要批量处理 BLF 文件二、核心代码解析:从文件遍历到数据导出1. 环境准备与依赖库

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到

Go语言并发之通知退出机制的实现

《Go语言并发之通知退出机制的实现》本文主要介绍了Go语言并发之通知退出机制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、通知退出机制1.1 进程/main函数退出1.2 通过channel退出1.3 通过cont

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使