准备工作
- github仓库 +
github_token
生成token之后备份好 Alfred
软件 支持正版,盗版可耻😄Shell
脚本,Mac自带的bash即可,用到curl
工具
脚本如下:
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
然后加Hotkey
和Run Script
,设置对应的快捷键以及脚本调用
设置快捷键如图:
设置脚本调用如图:
然后是配置变量列表(结合脚本和下图理解),导出可清空字段值勾选上不至于私密数据token之类的泄漏或者共享(这个功能很银杏化)
最后是大功告成了!
虽然我觉得PicGo
+TyPora
效率也很高,但是这个是自己亲手写出来的工具还是要嘚瑟嘚瑟的~ 哈嘿~
最后
成品在这 github图床工具
参考博客
Alfred Workflow 一键上传图片到github
如何制作一个手机上的Github图床捷径(workflow)
PicGo