Typora自定义上传图片脚本(用git公开仓库为图床) In Win/Linux
1.所需工具:⚡️
-
Git
-
一个目标仓库
-
一个其他的可执行程序(Window下)
Window:
⛵️ 由于Window下GitBash好像不是标准输出(Typora获取不到),故单是sh脚本上传和输出是无法完成的。
第一步:GitBash执行的sh
#!/bin/bash
# 设置仓库信息
USER_NAME="XXXXX"
REPO_NAME="XXXXX"
BRANCH_NAME="master"
# 获取图片路径(集合),遍历
for ITEM in "$@"
do
# 判断是否有图片路径
if [ ! -n "${ITEM}" ] ; then
echo "Usage: imgup [image path]"
exit 1
fi
#跳转到你的Git仓库下
cd D:\\2022Pros\\MyNoteImgBed
# 生成文件名
IMG_NAME=$(date +%Y%m%d%H%M%S).png
#复制图片到仓库
cp ${ITEM} D:\\2022Pros\\MyNoteImgBed
#执行另一个脚本,并关闭其输出信息(当然你也可以写在一起)
./T2.sh >/dev/null 2>&1
# 输出图片链接
#echo https://fglab.xxxxx.com/${USER_NAME}/${REPO_NAME}/blob/master/${IMG_NAME}
done
echo -e "Upload Success:"
#挂住窗口,输入任意键再退出
read -n 1
T2.sh
#!/bin/bash
cd D:\\2022Pros\\MyNoteImgBed
# 添加、提交、推送
git add .
git commit -m "script_add"
git push -u origin "master"
好了,这个脚本已经可以上传图片了,但是没有输出图片的访问路径
第二步:
既然在Window下GitBash不算标准输出环境,那么则需要可以被套一层‘壳’🏉 来执行输出,这个壳可以是一个bat或者控制台程序,
这里以控制台程序为例子:
namespace ConsoleTestApril
{
class Program
{
public static void Main(string[] args)
{
//要执行的sh脚本名
string command = "Uploadscript.sh";
//凭借执行脚本需要的图片链接的参数
string FinalArgsStr = $@"";
for(int i = 0; i < args.Length; i++)
{
FinalArgsStr += $@" {args[i]}";
}
var psiOne = new ProcessStartInfo()
{
//git-bash的路径
FileName = "C:\\Program Files\\Git\\git-bash.exe",
//在Git-Bash里执行脚本的语句
Arguments = $@"./{command}"+FinalArgsStr,
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true
};
//创建进程并执行
Process process = new Process();
process.StartInfo = psiOne;
process.Start();
//等待直到Git脚本执行完成
process.WaitForExit();
for(int i = 0; i < args.Length; i++)
{
string[] strs = args[i].Split('\\');
int length = strs.Length;
//输出上传到仓库的图片地址
Console.WriteLine($@"https://fglab.xxxxxx.com/xxxxxx/MyNoteImgBed/raw/master/{strs[length-1]}");
}
}
}
}
最后把程序发布为exe文件,和脚本一起放到Typora的安装目录下
最后到Typora了进行上传测试
Linux:
直接在脚本里输出仓库里图片的路径就可以了。