Typora+Cursor 自定义命令行上传图片到楼兰图床

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

Typora配置

Related Posts

使用腾讯云和 mac 搭建个人博客

一直以来想自己做个博客,慢慢的做一些自媒体的东西,但是一直也没有下决心,除了自身懒惰之外,很多也是觉得自己能力不够,但事情总得开始

Read More
大模型Token 要点

大模型中的 token 是将文本拆分成的最小处理单位,可以是单词、子词或字符,是模型理解和生成语言的基础

Read More