前言

换到 Plumemo 已经有一年多时间了,博客的轮播图也很久没有换过了,虽然图源辗转从 jsdelivr 先后换到了某第三方(huaji)和自建图床,但是轮播图的内容却一直没有换,究其原因主要是轮播图换起来太麻烦了,所以这次打算彻底解决一下这个问题

细心的朋友可能已经注意到从 12 月 14 号开始,博客上了一批必蓝碧蓝档案的新图,就是用我新做的工具安排上的,下面就来介绍一下我写的这个小工具 —— PluJS

PluJS

简介

PluJS 的名字来源于博客系统 Plumemo 和轮播图链接地址存储和调用方式(JavaScript)二者相结合,所以叫做 PluJS 。软件的图标是碧蓝档案的白洲梓。使用 Golang 编写,GUI 使用了 fyne 库,能够生成 Plumemo 轮播图的 JavaScript 文件,实现轮播图的增删改查。软件在 GitHub 上开源,可以在 GitHub 获取源码和编译好的小工具本体,项目地址:https://github.com/luckykeeper/PluJs,顺带求 Star ~ doge

原理和需求

Plumemo 的轮播图不能在系统后台配置,而是在主题文件夹内的 main.3a574d82.chunk.js 这个文件内设置的,设置最上方的轮播图和文章的随机图的代码如下:

// 轮播图和随机图部分代码示意
{
return
{ListImg:[
{img:"链接1"},
{img:"链接2"}
],bannerList: [
{img:"链接3"},
{img:"链接4"}
]
}

如图,ListImg 是文章的轮播图,而 bannerList 是顶部的轮播图,我们只需要按需生成 {img:"链接1"} 这样的内容,并按需塞到 ListImgbannerList 之中就可以了。我们的小工具只要把这里的问题解决了,自动填写并生成该 JavaScript 文件,就能解决换图麻烦的问题,把 “解压缩 JavaScript 文件 -> 写 JavaScript 文件加/减图-> 检查花括号有没有写多(写少) -> 压缩 JavaScript 文件 -> 上传更换该 JavaScript 文件”简化成“复制粘贴填写图片链接信息 -> 一键生成 JavaScript 文件 -> 上传更换该 JavaScript 文件”。大大节省时间,同时便于管理图片。

同时,针对我们博客使用 Cloudreve 作为自建图床的特点,我们需要支持 Cloudreve 图床的批量链接格式解析,批量链接大概长这样:

11.png: https://URL1
12.png: https://URL2
13_X4.jpeg: https://URL3

为了防止不小心放入重复的图片,我们还需要校验图片的 MD5 ,不允许相同 MD5 值的图片加入,为了方便更换图床,我们还要做更换已经在库的图片链接的功能,文件列表,文件MD5,文件名称,图片对应轮播图、文章图还是两边都用,这些属性,都可以存放在本地 SQLite 存储,同时加入云端 pgsql 做跨终端数据同步

知道了原理和需求,写程序就很快了,具体实现还请移步 GitHub 阅读源码

使用说明

Tips:请严格按照使用说明操作,以下说明顺序为菜单顺序

1、欢迎界面

界面截图

没啥好说的,水梓可爱捏~

2、添加图片界面

添加界面截图

确保同目录下存在模板文件 addImage_Template.xlsx 首次使用需要点击一下按钮,然后在生成的 addImage.xlsx 文件中按照格式分类添加图片(其中共通就是指轮播和文章图都使用的图片),之后保存 Excel 文件,再次点击按钮,添加成功

3、输出及修改界面

输出及修改界面截图

左边的“给我恰!”用来输出前端 JavaScript 文件和 Excel 文件;而右边的“塞回去!”可以把修改后的数据同步回本地数据库

使用“给我恰!”功能前请先填充 frontendBefore.txtfrontendAfter.txt 文件内的内容

frontendBefore.txt 文件内存放 ListImg 前的内容(是否压缩混淆均可)

示意图片

frontendAfter.txt 文件内存放 banner 那个方括号后面的内容(是否压缩混淆均可)

示意图片

使用“塞回去!”功能需要先使用“给我恰!”功能生成 fileList.xlsx 文件后,根据该文件的指示完成删改操作,保存文件后再点击按钮

4、同步界面

同步界面截图

左边的上传可以把本地数据库的数据拉取到云端,右边的下载可以把云端的数据拉取到本地,上传时请确保本地数据为最新数据,下载时请确保云端数据是最新数据

使用这个功能前你需要

  • 配置程序同目录下的 config.ini (文件内有填写说明)
  • 搭建云端数据库(使用 postgreSQL 数据库(提示:不会用 pgsql 的可以使用宝塔管理),不需要使用 SQL 文件初始化,仅开放给外部 IP 读写即可,注意使用强密码保证数据安全)

5、退出按钮

没啥好说的,另外右键任务栏托盘上面的 logo 也可以退出