Typora 中设置图像上传到博客园中
适配入口
在 Typora 的选项栏中,文件→偏好设置→图像→上传服务设定,其中可以看到官方提供了几种不同的图片上传服务,其中最底下还预留了一个 [自定义命令],这个可以留给我们自己适配,因此很容易联想到博客园的图片上传服务能否适配?
适配教程
如何完成适配呢?可以看到下方有一个说明链接
点开后可以看到在 custom 章节中,官方文档指出:
简单理解就是可以自行写一个脚本,然后通过命令行参数接收来自 Typora 的图片本地路径即可,如果有很多张图片,可以多次调用。
此外,官方还提供了可能出现的问题及解决方法。
适配脚本
我们知道博客园开发了 vscode 插件是可以提供图片上传功能的,那么主要用到的是什么接口呢?
这里主要用的就是 MetaWeblog API ,它支持上传图片、发布文章。
在博客园后台的设置中,最底下有:
我们将 “允许 MetaWeblog 博客客户端访问” 设置为开启,于是可以得到:
- MetaWeblog登录名【USERNAME】
- MetaWeblog访问令牌【PASSWORD】
- MetaWeblog访问地址【BLOG_URL】
这些参数就是每个人独立的接口参数,于是向豆包咨询后,得到下面的代码:
#!/bin/bash set -euo pipefail # ==================== 你的配置 ==================== BLOG_URL="你的MetaWeblog" USERNAME="你的MetaWeblog登录名" PASSWORD="你的MetaWeblog访问令牌" BLOG_ID="你的博客园用户目录路径,如 https://www.cnblogs.com/gshang ,就是 gshang" # ================================================== echo "Upload Success:" for img_path in "$@"; do # 转换路径 [[ "$img_path" == [A-Za-z]:\\* ]] && img_path=$(cygpath -u "$img_path") # 基础信息 filename=$(basename "$img_path") mime=$(file -b --mime-type "$img_path") # 【关键修复】用临时文件,避免参数过长 xml_file=$(mktemp) # 写入 XML(不从命令行传,彻底解决超长) cat > "$xml_file" <<EOF <?xml version="1.0" encoding="utf-8"?> <methodCall> <methodName>metaWeblog.newMediaObject</methodName> <params> <param><value><string>${BLOG_ID}</string></value></param> <param><value><string>${USERNAME}</string></value></param> <param><value><string>${PASSWORD}</string></value></param> <param><value><struct> <member><name>name</name><value><string>${filename}</string></value></member> <member><name>type</name><value><string>${mime}</string></value></member> <member><name>bits</name><value><base64>$(base64 -w 0 "$img_path")</base64></value></member> </struct></value></param> </params> </methodCall> EOF # 【关键修复】从文件读取 XML,不拼命令行 resp=$(curl -s -X POST \ -H "Content-Type: text/xml; charset=utf-8" \ --data-binary "@$xml_file" \ "$BLOG_URL") # 提取 URL(100% 兼容 Windows) url=$(echo "$resp" | sed -n 's/.*<string>\(https[^<]*\)<\/string>.*/\1/p' | head -1) # 输出给 Typora [ -n "$url" ] && echo "$url" || echo "" # 清理临时文件 rm -f "$xml_file" done将你的信息填写后,保存为cnblogs.sh,并将其放到Typora.exe同一目录下,我的目录是:
D:\Program Files\Typora\cnblogs.sh最后,确保你已经安装了git-bash,想必作为程序员应该都装了的。我的安装目录是
D:\Program Files\Git\bin\bash.exe于是我们得到最终输入给 Typora 的命令行:
"D:\Program Files\Git\bin\bash.exe" "D:\Program Files\Typora\cnblogs.sh"点击 "验证图片上传选项" ,可以看到图片上传成功:
日常使用测试
在 Typora 中提供了两种上传图片的形式: