An open API service indexing awesome lists of open source software.

https://github.com/crossoverjie/blog.toolbox

博客工具箱(字数统计、图片备份、图床批量替换)
https://github.com/crossoverjie/blog.toolbox

Last synced: 9 months ago
JSON representation

博客工具箱(字数统计、图片备份、图床批量替换)

Awesome Lists containing this project

README

          

# 博客工具箱

[命令行工具版](https://github.com/crossoverJie/btb)

## 批量替换图床

### 使用

![](https://i.loli.net/2019/05/08/5cd1cc7612c25.gif)

![](https://i.loli.net/2019/05/08/5cd1cd6062d2a.png)

![](https://i.loli.net/2019/05/08/5cd1d002b6cff.jpg)

```shell
git clone https://github.com/crossoverJie/blog.toolbox
mvn -Dmaven.test.skip=true clean package
java -jar blog.toolbox-0.0.2.jar /xx/xx/path 100 --app.downLoad.path=/xx/img
```

程序会自动扫描 `/xx/xx/path` 目录下以 `.md` 为后缀的 `Markdown` 文件,将其中的图片下载到本地目录 `/xx/img` 保存;同时默认会上传到 `SM.MS` 图床并替换原有的图片链接。

- `app.downLoad.path` 是用于将下载的图片保存到本地磁盘的目录。
- `/xx/xx/path` 则是扫描 `.md` 文件的目录,会递归扫描所有出所有文件。
- 100 则是需要替换文件的数量,默认是按照文件修改时间排序。

### 自定义上传策略

内置上传到免费图床 `SM.MS` 大家也可自定义上传地址,只需要实现 `top.crossoverjie.nows.nows.service.UploadPicService`,如下所示:

```java
public class TestUploadServiceImpl implements UploadPicService{

@Override
public String upload(String path) throws Exception {
return "https://crossoverjie.top/uploads/crossoverjie.jpg";
}
}
```

返回一个上传地址即可;同时根据 `SPI` 规范替换修改对应文件即可:

[META-INF/services/top.crossoverjie.nows.nows.service.UploadPicService](https://github.com/crossoverJie/blog.toolbox/blob/master/src/main/resources/META-INF/services/top.crossoverjie.nows.nows.service.UploadPicService)

### 备份模式

该模式用于备份博客中的图片到本地,以防丢失。

```java
java -jar blog.toolbox-0.0.2.jar /xxx/path 200 --app.model=3 --app.downLoad.path=/backup/
```

## 字数统计
> 统计你所写的博客字数,仅支持 Markdown 文件。

# 使用

```shell
git clone https://github.com/crossoverJie/blog.toolbox
mvn -Dmaven.test.skip=true clean package
java -jar blog.toolbox-0.0.2.jar /xx/xx/path
```

![](https://ws2.sinaimg.cn/large/006tNbRwly1fwlc5yrsmnj31kw09vqv5.jpg)

# 扩展

采用责任链模式可自定义统计策略。

```java
@Bean("httpFilterProcess")
public FilterProcess httpFilterProcess() {
return new HttpFilterProcess();
}

@Bean("numberFilterProcess")
public FilterProcess numberFilterProcess() {
return new NumberFilterProcess();
}

@PostConstruct
public void start() {
this.addProcess(numberFilterProcess)
.addProcess(httpFilterProcess);
}
```