Typora
markdown语法可谓是编写文档的利器,简单,快速,好看。
而大部分编写markdown文档的工具都是如IDEA般一半源代码一半可视化
所以如果有一款所见即所得的markdown工具那再爽不过。
我目前在使用的软件是[Typora]: https://typora.io/ ,也将它推荐给了一些朋友使用
这个软件1.0之后是收费的,如果你想先体验一番,并不想那么早付费,可以下0.x的版本,地址如下:
https://typora.io/releases/all
选择【DEV/Beta Release】页, 在页面最下面选旧版本。
当然,这并不是本篇文章的重点,重点是介绍它的上传文件功能
上传文件
在我们编写文档时,很自然的会插入一些图片,让我们的文档更加饱满。
而当我们想要将文档发表到网上时,就不得不把先这些图片换成https链接,不然网站无法读取到这些图片。
这个过程是挺痛苦的,尤其是图片多了的时候。
而Typora就有个一键上传图片的功能
在偏好设置的图像一栏中,选择上传服务
如果你是mac用户,那么可以直接使用iPic。windows我还没用过,当然还可以自定义上传,这部分在文章后面给大家介绍。
配置好并验证成功后,便可右键文档中的图片,选择上传图片。iPic将上传到微博的匿名图床中。
上传完毕后typora将自动把上传完成的图片地址替换到文档中。
不仅如此,typora还能一键将文档中的所有图片上传。
点击工具栏中的格式 --> 图像 --> 上传所有本地图片
此时已经可以满足绝大部分需求了,美中不足的时,这样上传的图片会有点糊,但还可以接受。如果你不能接受,那可以像我一样,上传到自己的图床中。
自定义上传
typora在上传服务中支持自定义上传方式。
使用该方式相当于typora在你点击上传图片是会运行你在里面写的脚本,参数为文档中图片的绝对路径。
如你在命令中编写
/usr/bin/upload.sh
文档中的图片为
/opt/a.jpg
那么此时typora就会执行
/usr/bin/upload.sh /opt/a.jpg
并期望命令执行完毕之后输出
https://xxx.com/a.jpg
如果是一键上传文档中所有图片,那么执行的命令为
/usr/bin/upload.sh /opt/a.jpg /opt/b.jpg
a.jpg 和 b.jpg是文档中的两个图片
期望输出
https://xxx.com/a.jpg
https://xxx.com/b.jpg
只要是两个链接就可以,链接的数量和上传图片的数量一定要对应。
使用七牛云图床
我自己是使用的七牛云图床上传的图片,如果你用的是别的图床也可以。我这里只是提供案例给大家参考。
你可以把typora认为是个客户端,只要你编写的脚本能够接收typora给的参数,并把这些图片传到图床上,并且输出链接,就可以了。
七牛云本身提供上传图片的脚本。
将对应平台的脚本下载下来,然后查看七牛云文档:https://developer.qiniu.com/kodo/1302/qshell,看下如何上传文件。
鉴权部分我就直接略过了。
看完之后发现七牛云的脚本只能支持上传单个文件,但是没有关系,我们可以for循环处理这个问题。
由于typora只传递文件参数,所以我们需要把这个脚本再封装一次。
首先我们需要得到文件名,比如说上传的文件为:/opt/a.jpg, 我们需要得到a.jpg作为图床的文件路径
qshell fput if-pbl a.jpg /opt/a.jpg
if-pbl为图床的bucket a.jpg为图片上传到图床的路径
为了上传的图片不会重复,我们可以在路径前缀加上日期,比如这样
qshell fput if-pbl 2022/05/29/a.jpg /opt/a.jpg
明白了这些,我们现在就开始编写脚本
上传单个图片的脚本
首先是上传单个图片的脚本
vim upload.sh
#!/bin/bash
NOW=$(date +%Y/%m/%d)
str=$1
filename=${str##*/}
KEY=$NOW/$filename
qshell fput if-plb $KEY $1 > /dev/null
echo "https://notes.xxx.cn/$KEY"
NOW=$(date +%Y/%m/%d): 获取到当天的日期:2022/05/29
$1: 获取执行脚本传入的第一个参数,也就是文件名:/opt/a.jpg
filename=${str##*/} : 截取str中最后个
/
右侧的字符串:a.jpg由于qshell脚本本身会输出一些内容,影响typora抓取结果,所以将 qshell的输出指定到/dev/null
将脚本赋权:chmod +x upload.sh
测试脚本:
upload.sh /opt/a.jpg
输出
https://notes.xxx.cn/2022/05/29/a.jpg
上传多个图片的脚本
这个就很简单了,只要for循环一遍参数就行了
vim multi_upload.sh
#!/bin/bash
for i in "$@"
do
upload.sh $i
done
$@: 获取参数列表
赋权:chmod +x multi_upload.sh
测试脚本:
multi_upload.sh /opt/a.jpg /opt/b.jpg
输出
https://notes.xxx.cn/2022/05/29/a.jpg
https://notes.xxx.cn/2022/05/29/b.jpg