Mac 下利用 Alfred 与七牛搭建 markdown 图床

date
Jan 29, 2018
slug
mac-alfred-markdown-images
status
Published
tags
自动化
summary
Alfred 与七牛搭建图床的细节
type
Post
在使用hexo与gitpage完成个人博客搭建后,在写博客时想插入图片总是需要外链,感觉很繁琐。刚好在利用alfred的workflow后觉得能不能把整套手动获取图片外链的动作变成自动化的动作,来用热键触发。搜了下相关的文章自己踩了不少坑最终还是完成了,总结出来避免大家后面踩坑。
 

前期准备

  • 可以使用workflow的alfred(能支持正版最好不过我还是准备了链接,位置在文章最后)
  • 七牛账号&七牛自动化工具qshell
  • 截图工具(这个也可以没有,可以利用电脑自带的截图功能,只要保证截图动作后的结果处于剪切板中即可)

七牛配置操作

  1. 注册成功登陆后,单击 管理控制台 -> 对象存储 -> 内容管理 找到外链默认域名,复制并保存。
  1. 返回首页,单击 服务与支持 -> 开发者中心 -> sdk与工具 -> 开发者工具 -> qshell 进入后按照提示下载并安装。
  1. 创建账户时,除了ak&sk 现在还需要输入七牛账户名;配置upload.conf文件时需要注意如果本地新增文件七牛默认不会自动检查,你需要设置 rescan_local: true ;如果你在七牛空间(web页)中手动删除某个文件,再次上传该文件的时候七牛默认该文件已经存在空间中,不会再上传该文件,你需要配置 check_exists: true 。

Alfred Workflow 配置操作

  1. 点击 + ,创建blank workflow即可,注意bundle id必填一个唯一值,能够在alfred中标示你这个workflow即可,其余选项正常填写,category默认选项即可。
notion image
  1. 创建热键hotkey,其余默认选项不变,完成后save。
notion image
  1. 创建热键触发后需要执行的脚本文件,当然run script创建的脚本是后台运行不需要先调出terminal(控制台),如果需要调出terminal(控制台),选择terminal command。
notion image
根据脚本语言对应选择language,这里提供一个actionscript版本代码:
property fileTypes : {¬
    {«class PNGf», ".png"}, ¬
    {JPEG picture, ".jpg"}}

on getType() --判断剪贴板中的数据类型,暂时只支持png和jpg,优先用png
    repeat with aType in fileTypes
        repeat with theInfo in (clipboard info)
            if (first item of theInfo) is equal to (first item of aType) then return aType
        end repeat
    end repeat
    return missing value
end getType

set theType to getType()

if theType is not missing value then
    set filePath to "/Users/xxx/Documents/screenCaptures/" --这里换成你自己放置图片的路径
    set fileName to do shell script "date \"+%Y%m%d%H%M%S\" | md5" --用当前时间的md5值做文件名
	set prefix to "i7eo_" -- 改成自己的前缀
    if fileName does not end with (second item of theType) then set fileName to (fileName & second item of theType as text)
    set markdownUrl to "![截图](http://xxx.com/i7eo_" & fileName & ")" --这里如果没有用到图床,就把前面前缀去掉,用到的话换成你自己图床的url
    set filePath to filePath & prefix & fileName

    try
        set imageFile to (open for access filePath with write permission)
        set eof imageFile to 0
        write (the clipboard as (first item of theType)) to imageFile -- as whatever
        close access imageFile
        set the clipboard to markdownUrl
        try
            tell application "System Events"
                keystroke "v" using command down
            end tell
        end try
    on error
        try
            close access imageFile
        end try
        return ""
    end try
else
    return ""
end if
<http://xxx.com/> 改为之前从七牛默认外链处复制出来的地址。
  1. 再次创建一个blank workflow,热键自己设置;再次创建一个as脚本,具体代码如下:
do shell script "/usr/local/bin/qshell qupload ~/.qshell/upload.conf"
把qupload前的路径换成自己存放七牛qshell文件的位置。
这个方法适合写博客时,把该篇博客需要的图片都存放在同一个文件下,写完后一次性上传至七牛空间。然后在把博客推至gitpage即可。

参考资料

GitHub - jiwenxing/qimage-mac: Mac 版本的 Markdown 一键贴图工具,基于 Alfred 实现,支持本地文件、截图、网络图片一键上传七牛云,使用简单方便
qimage-mac 是一个 mac 中提升 markdown 贴图体验的实用小工具,基于 Alfred 实现,可以自定义快捷键,一键上传图片或截图至七牛云,获取图片的 markdown 引用至剪贴板,并自动粘贴到当前编辑器,使用简单方便。 v1.2 - 2020.01 支持自定义图片url路径,如:在环境变量中指定环境变量prefix为img/则上传的图片url会变为 http://cdn.example.com/img/cool.jpg,而不是使用根目录http://cdn.example.com/cool.jpg。 支持先压缩图片再上传(需安装ImageOptim或者optimage,并填写compressProvider环境变量)。图片将拷贝一份再压缩,不会直接压缩原图。 v1.1 - 2017.11 - 针对 issue #4 新增支持自定义文件名称的 workflow :support user-defined file name.alfredworkflow 特点: 上传本地图片则默认使用原图片名称 上传截图或网络图片时,会弹窗提示输入自定义图片名称 详细的使用教程请参考: 使用alfred在markdown中愉快的贴图 windows版本请移步至: https://github.com/jiwenxing/qiniu-image-tool-win 支持jpg、png、bmp及gif等各种图片格式 支持截图及网络图片直接复制上传 支持各种其它格式本地文件上传,返回资源引用 上传失败或成功通知栏会有相应提示 使用简单,只需配置环境变量即可 本地图片文件上传 截图上传 其它文件上传 注:演示gif使用macdown及licecap制作 文件名中如果包含空格,图片将上传不成功 文件名没有加类似.jpg后缀,不会自动补齐。 MIT License.
GitHub - jiwenxing/qimage-mac: Mac 版本的 Markdown 一键贴图工具,基于 Alfred 实现,支持本地文件、截图、网络图片一键上传七牛云,使用简单方便

© i7eo 2017 - 2022