
Typora+Cursor 自定义命令行上传图片到楼兰图床
Table of Contents
本来一直用 Typora 写点东西,但是有一个痛点,就是图片的存储,存在本地,在想发布到网上时,还需要手动修改图片的链接地址,容易遗漏,造成重复工作。
我本身一直用 nas 存储我的一些资料,通过动态域名解析来实现外网直接访问。后来试了试通过 nas 配置楼兰图床,客户端通过 picgo 配置实现图片上传到图床,然后在 Typora 中进行引用。但是 picgo 在使用时, 如果本地有科学上网代理,会造成 picgo 无法上传图片。虽然可以通过修改代理地址的方式实现,但是也挺麻烦。
最近试了试 Cursor,结果很满意,几句话就帮我用 shell 写出了一个命令行工具,轻松实现在 Typora 写东西的时候,图片自动上传到 nas 楼兰图床。
Cursor生成的代码
其中LSKY_URL
填写你的 API 地址,TOKEN
填写你的 TOKEN
,具体如何找 TOKEN
,网上有很多介绍,在这里就不多说。
复制下面的代码,保存为 sh 文件即可。
#!/bin/bash upload_to_lsky.sh
# 配置信息
LSKY_URL="https://yourdomain:port/api/v1/upload" # 兰空图床API地址
TOKEN="yourtoken" # API token
# 检查是否传入了图片参数
if [ $# -eq 0 ]; then
echo "Error: No image file specified"
exit 1
fi
# 处理上传结果的函数
handle_upload() {
local image_path="$1"
# 检查文件是否存在
if [ ! -f "$image_path" ]; then
echo "Error: File not found - $image_path"
return 1
fi
# 使用 curl 上传图片
response=$(curl -s -X POST \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json" \
-F "file=@$image_path" \
"$LSKY_URL")
# 检查是否上传成功
if echo "$response" | grep -q '"status":true'; then
# 从响应中提取图片URL并去除转义字符
image_url=$(echo "$response" | grep -o '"url":"[^"]*"' | cut -d'"' -f4 | sed 's/\\\//\//g')
echo "$image_url"
return 0
else
echo "Error: Upload failed - $response"
return 1
fi
}
# 存储上传成功的URL
success_urls=()
# 存储失败的文件
failed_files=()
# 处理所有传入的图片
for image in "$@"; do
result=$(handle_upload "$image")
if [ $? -eq 0 ]; then
success_urls+=("$result")
else
failed_files+=("$image")
fi
done
# 输出结果(Typora要求的格式)
if [ ${#success_urls[@]} -gt 0 ]; then
echo "Upload Success:"
printf "%s\n" "${success_urls[@]}"
fi
# 如果有失败的文件,输出错误信息
if [ ${#failed_files[@]} -gt 0 ]; then
echo "Upload Failed:"
printf "%s\n" "${failed_files[@]}"
exit 1
fi
修改sh文件权限
chmod +x upload_to_lsky.sh