Alfred+Shell打造一款轻量级的图床工具

准备工作

  1. github仓库 + github_token 生成token之后备份好
  2. Alfred 软件 支持正版,盗版可耻😄
  3. Shell脚本,Mac自带的bash即可,用到curl工具

脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

filePath=$1 # /Users/mac/Desktop/1.jpg 文件路径 是通过Alfred选中事件传入进来的

fileName=`date +%Y%m%d%H%M%S`.${filePath##*.} #时间到秒+路径截取拼接文件名 防止重复

CommitMsg="Mac通过Shell脚本上传了一张图片"$fileName #提交信息可自定义

echo<<EOF
$userName github用户名
$repoName 仓库名
$path 路径名即存放图片的目录
$github_token github生成的token

EOF

#输出结果 采用jsdelivr的免费加速服务
Target_Img_URL="https://cdn.jsdelivr.net/gh/$userName/$repoName/$path/"$fileName

#文件base64编码 不换行
Base64_Content=$(base64 -b 0 $filePath)

#github开发的API接口
API_URL="https://api.github.com/repos/$userName/$repoName/contents/$path/"${fileName}

Acess_Token="token $github_token"

# 发起PUT网络请求 -X是指定方法类型 -H是header参数可以传多个 -d 是传json参数 单引号shell不能入参所以只能转义
result=$(curl \
-X PUT \
-H "Content-Type:application/json"\
-H "Authorization:$Acess_Token" \
-H "Accept:application/vnd.github.raw"\
${API_URL} \
-d "{\"message\":\"${CommitMsg}\",\"content\":\"${Base64_Content}\"}")

#因为返回结果是一堆json数据 但只有成功的时候才会返回committer字段 所以匹配一下用于判断
IsUpload=`echo $result | grep "committer"`
if [[ -n "$IsUpload" ]]; then
#将结果拷贝至剪贴板
echo $Target_Img_URL | pbcopy
#如果需要markdown模式则打开如下代码注释即可
#echo "![]($Target_Img_URL)" | pbcopy

#发起AppleScript脚本通知事件
osascript -e "display notification \"$Target_Img_URL\" with title \"通知\" subtitle \"上传成功,地址已拷贝至剪贴板\""
fi
#如此就大功告成了!

Alfred设置相关

如图新建一个空白的blank workflow然后加HotkeyRun Script,设置对应的快捷键以及脚本调用

设置快捷键如图:

设置脚本调用如图:

然后是配置变量列表(结合脚本和下图理解),导出可清空字段值勾选上不至于私密数据token之类的泄漏或者共享(这个功能很银杏化)

最后是大功告成了!

虽然我觉得PicGo+TyPora效率也很高,但是这个是自己亲手写出来的工具还是要嘚瑟嘚瑟的~ 哈嘿~

最后

成品在这 github图床工具

参考博客

Alfred Workflow 一键上传图片到github
如何制作一个手机上的Github图床捷径(workflow)
PicGo