原文链接:https://zhangsan.info/2024/01/24/fully-optimize-the-typora-image-uploading-experience-introduce-chevereto-and-custom-commands/

引言

写这篇文章是因为自己经常使用Typora来编写文档,像有时候需要去托管自己的图片,如果存本地,不移动还好,如果发生文档的移动,图片也必须跟着移动,存在者各种不方便,于是我就开始了图片的云存档方案,一开始我是在网站上面进行上传操作,之后渐渐觉得略微繁琐,于是就找到了Typora的图片上传服务设置页面,发现可以使用三个插件来辅助我们上传,于是我使用了大家耳熟能详的picgo来上传图片,我使用过UI版本和命令行版本,发现UI版本在后台占用一定的内存,对于我一个电脑后台运行10几款程序的人来说,电脑内容略微吃紧,接着我使用了命令行版本,发现并不支持Chevereto图床,也许是我没有找到合适的插件,之后我就放弃了现成的插件来提供上传服务,便接着使用网站访问的方式来上传文件,我心一想,程序员岂能忍受这种折磨?干!于是我就开始了自定义命令之路。

 

阅读前你需要准备的东西和注意的东西

1、这个自定义命令可能只适用于Chevereto图床,其他图床可能不能使用

2、你需要自建Chevereto图床才可以拿到API密钥,怎么拿秘钥怎么自建Chevereto自己搜索

3、你需要有Python的环境,推荐3.10和我保持一样

 

教程开始

1、你需要打开pycharm编辑器,自己新建一个项目,项目叫什么不重要,可以写代码就可以,在项目里面新建一个文件,名称叫什么不重要。

2、复制下面的Python代码【觉得难操作的可以在文后直接拿exe文件】:

import requests
import json
import argparse


def upload_image_and_get_link(key, url, file_path):
    querystring = {"key": key, "format": "json"}
    files = {'source': open(file_path, 'rb')}  # 以二进制形式读取文件

    try:
        # 发送POST请求
        response = requests.post(url, files=files, params=querystring)

        # 关闭文件
        files['source'].close()

        # 解析响应
        if response.status_code == 200:
            response_data = json.loads(response.text)
            if response_data.get("status_code") == 200:
                # 提取图片的直链
                image_link = response_data.get("image", {}).get("url")
                return image_link
            else:
                # 返回错误信息
                return "Error: " + response_data.get("status_txt", "Unknown Error")
        else:
            return f"Error: Request failed with status code {response.status_code}"
    except Exception as e:
        return "Error: " + str(e)


if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Upload images and get their links.")
    parser.add_argument("key", help="API key for the request")
    parser.add_argument("url", help="URL to which the request is sent")
    parser.add_argument("file_paths", nargs='+', help="Paths to the image files to upload")

    args = parser.parse_args()

    for file_path in args.file_paths:
        result = upload_image_and_get_link(args.key, args.url, file_path)
        # 仅输出图片链接,或者错误信息
        print(result)

代码写于2024年1月23日,可能会存在一些问题,有问题欢迎纠正

3、代码打包

安装 pyinstaller:可以通过运行 pip install pyinstaller 在您的环境中安装它,最好在你的pycharm里面的终端安装

之后cd到你的文件下面运行:pyinstaller --onefile 代码文件的名称.py

之后就会在dist文件夹里面生成你的exe文件

4、开始使用

你生成完成exe文件之后,你需要注意,双击文件是无法打开的,你需要使用命令行来运行它

image-20240123202622128

之后会显示这样的提示词,只要显示这个命令就代表程序是完整的

现在你需要按照[path_to_your_exe] [your_api_key] [your_api_url] ${filepath}这样的规则把组装好的文本放到Typora的自定义命令里面

如果不清楚的话这里有一个参考模板:"C:\Users\admin\Desktop\01.exe" 8fc05xxxx密钥xxxxx01f27 https://你的网站/api/1/upload/ ${filepath}

需要注意的是${filepath}不需要你提供值,Typora会自己赋值到这里

把你组装的文本放入Typora里面,就像这样:

image-20240123203221991

之后我们点击验证就可以看到程序的请求结果,如果显示成功会返回一个直链。

image-20240124161720578

在实际的试用中,你只需要配合截图工具,粘贴到这里就可以完成自动的上传操作,但是前提你需要打开这个开关:

在偏好设置里面你需要选择为:【上传图片】,即可

image-20240124010734487

之后就完美了

资料获取

1、代码已经在前面显示了,就不过多赘述

2、觉得打包麻烦的可以直接下载,之后按照步骤操作就可以,注意:打包后的exe微软最新的安全中心会报毒,毕竟是自己写的一个小程序,没有加一些壳什么的,报毒也很正常,在安全中心选信用软件即可,不放心的可以自己拿代码自己造。、

文件下载请前往:https://zhangsan.info/2024/01/24/fully-optimize-the-typora-image-uploading-experience-introduce-chevereto-and-custom-commands/