自定义Typora图片上传命令

62 阅读3分钟

在日常的写作过程中,我们经常需要插入一些图片来丰富我们的内容。然而,图片的上传和管理往往会成为一个麻烦的问题。特别是当我们使用Markdown编辑器如Typora时,虽然它内置了一些图片上传服务,但这些服务的稳定性和便利性并不总是能满足我们的需求。因此,我们可能需要寻找一种更可靠的解决方案。

在本文中,我们将介绍如何使用阿里云的OSS服务来自定义Typora的图片上传命令。阿里云OSS是一种稳定、安全、高效的在线存储服务,可以帮助我们更好地管理我们的图片资源。

为什么选择阿里云OSS

阿里云OSS提供了丰富的功能和优秀的性能,包括:

  • 高可用性:数据持久性达到99.999999999%,服务可用性达到99.995%。
  • 高性能:提供毫秒级的数据访问性能。
  • 安全可靠:提供多种安全机制,包括ACL、Bucket Policy、STS、Signed URL等。
  • 数据处理:提供图片处理、视频截图、媒体转码等丰富的数据处理功能。

因此,使用阿里云OSS作为我们的图片存储和管理服务是一个很好的选择。

如何使用阿里云OSS

首先,我们需要在阿里云OSS创建一个Bucket,然后获取到Bucket的名称、Endpoint、Access Key ID和Access Key Secret。

然后,我们可以编写一个Python脚本,使用阿里云的Python SDK来上传我们的图片。以下是一个简单的脚本示例:

import oss2
import sys

def upload_image(img_path):
    """
    Upload an image to Alibaba Cloud OSS.

    Args:
    img_path: The path of the image file to upload.

    Returns:
    The URL of the uploaded image, or None if the upload failed.
    """
    # Replace 'your_access_key_id', 'your_access_key_secret', 'your_bucket_name', and 'your_endpoint'
    # with your actual Alibaba Cloud access key ID, access key secret, bucket name, and endpoint

    bucket_name = 'aisdapp'
    endpoint = 'http://oss-cn-beijing.aliyuncs.com'  # something like 'http://oss-cn-hangzhou.aliyuncs.com'

    domain_prefix = 'http://aisdapp.aihe.space'

    object_name = img_path.replace('/', '-').replace('\\', '-')
    # Create a bucket object
    bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)

    # Upload the image
    with open(img_path, 'rb') as img_file:
        result = bucket.put_object(object_name, img_file)

    if result.status == 200:
        return f"{domain_prefix}/{object_name}"
    else:
        print(f"Upload failed with status code {result.status}")
        return None

if __name__ == "__main__":
    img_paths = sys.argv[1:]
    for img_path in img_paths:
        print(upload_image(img_path))

这个脚本将为每个输入的文件路径打印一个上传后的图片URL。

在Typora中使用自定义图片上传命令

在Typora中,我们可以通过设置自定义命令来使用我们的Python脚本。我们只需要在Typora的设置中,找到图片设置部分,然后在“自定义命令”中输入我们的Python脚本的路径和参数即可。

例如,我们的Python脚本的路径是/path/to/upload.py,那么我们可以在“自定义命令”中输入/path/to/python /path/to/upload.py

我的脚本:

/Users/aihe/.pyenv/shims/python /Users/aihe/scripts/upload_typra.py

image.png

image.png

这样,当我们在Typora中插入图片时,Typora就会自动调用我们的Python脚本来上传图片,并将图片的URL插入到我们的文档中。

结论

通过使用阿里云OSS和自定义的Python脚本,我们可以轻松地实现在Typora中的图片上传和管理。这不仅可以提高我们的写作效率,也可以让我们的图片管理变得更加方便和高效。