利用python脚本实现使用typora时图片自动上传到chevereto图床

本文介绍了如何使用Python脚本来实现 Typora 中Markdown编辑时图片自动上传到Chevereto图床。通过创建脚本、获取Chevereto的API Key、配置Typora设置,可以实现图片的无缝上传。确保Typora为最新版本,配置完成后通过Typora的自定义命令验证图片上传功能。
摘要由CSDN通过智能技术生成

前言

  • 本文参考自Hcl的个人小站
  • 本文首发于我的个人博客
  • 我是用的Typora来用markdown编写文章,使用chevereto搭建了个人图床,配合Typora的自动上传功能,参考了别人的代码,来实现粘贴图片自动上传到个人图床
  • 注意:你的typora需要是最新版

python脚本

  • 创建一个python脚本,名字随意,位置自定

    cd ~/文档/
    gedit upload.py
    
  • 复制粘贴以下代码

    #!/usr/bin/env python3
    # -*- encoding: utf-8 -*-
    # author: guiu
    # data: 2020.2.28
    
    import requests
    import json
    import mimetypes
    import argparse
    import sys
    
    APP_DESC = """
    一个上传图片到chevereto图床的命令行工具
    """
    
    print(APP_DESC)
    if len(sys.argv) == 1:
        sys.argv.append('--help')
    
    parser = argparse.ArgumentParser()
    parser.add_argument('-s', '--source', type=str, nargs='+', help="", required=True)
    parser.add_argument('-c', '--config', default="./config.json", help="读取配置文件", required=True)
    args = parser.parse_args()
    
    # 从参数中获取要上传的文件列表
    img_list = args.source
    # print(img_list)
    
    def read_conf(path):
        with open(path,"r",encoding="utf-8") as f:
            confstr = f.read()
            conf = json.loads(confstr)
        return conf
    
    def up_to_chevereto(img_list):
        # 获得本地图片路径后,上传至图床并记录返回的json字段
        for img in img_list:
            # 先判断传过来的是本地路径还是远程图片地址
            if "http" == img[:4]:
                # 非本地图片的话可以考虑下载到本地再上传,但是没这个必要
                print(img)
                continue
            else:
                try:
                    res_json = upload(formatSource(img))
                    parse_response_url(res_json,img)
                except:
                    print(img+"\t上传失败")
    
    def upload(files):
        # 图床api
        # APIKey = "THERE PUT YOUR APIKEY"
        conf = read_conf(args.config)
        url = conf['url'] + "?key=" + conf['APIKEY']
        r = requests.post(url, files=files)
        return json.loads(r.text)
    
    def formatSource(filename):
        imageList = []
        mime_type = mimetypes.guess_type(filename)[0]
        imageList.append(
            ('source', (filename, open(filename, 'rb'), mime_type))
        )
        #print (imageList)
        return imageList
    
    def parse_response_url(json, img_path):
            # 从返回的json中解析字段
        if json['status_code'] != 200:
            print("{}\tweb端返回失败,可能是APIKey不对. status_code {} .".format(
                img_path, json['status_code'])
            )
        else:
            img_url = json["image"]["url"]
            print(img_url)
    
    up_to_chevereto(img_list)
    

查看你的API key

  • 到你的chevereto站点->仪表盘->设置->API

image-20200626105556755

  • 这里你可以使用默认的,也可以自定义

编写配置文件

cd ~/文档
gedit config.json
  • APIKEY:填写你的API KEY
  • url:填写你的http://你的站点域名/api/1/upload/
    • 比如我的是http://img.youwolf.cn/api/1/upload/
{
    "APIKEY": "YOUR API KEY", 
    "url": "http://your_website/api/1/upload/"
}

typora设置

  • 打开typora->文件->偏好设置->图像->上传服务设定->选择Custom Command
  • 如果需要自动上传,插入图片时选择上传图片,并勾选如图所示选项

image-20200626110731568

  • 填写以下命令,路径填你自己的

    python3 你的upload.py路径 -c 你的config.json路径 -s
    
  • 然后点击验证图片上传选项,出现以下结果表示配置正确

image-20200626110824911

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Chevereto是一套基于PHP构建,易于安装和配置使用,无需MySQL数据库支持的开源在线图片存储分享服务系统。它支持本地上传和在线获取两种图像上传方式,并集成了TinyURL网址缩短服务 Chevereto图片上传程序源码是一款非常简洁的PHP图片上传程序,可以将本地电脑上或者是网络上的图片传到服务器上。以前的Chevereto不需要MySQL数据库,现在需要了,不过这一改变只是为了提高图片的安全性。同,集成了TinyURL的短地址服务,让使用者更加方便。 主要功能: 1.本地/远程两种图片上传方式; 2.后台文件管理系统; 3.调整图片大小; 4.社交网站分享按钮; 5.TinyURL短地址服务; 6.支持自定义主题模板; 7.多张图片上传; 8.缩略图功能; 9.以及一些基本的功能(例如图片大小、数量限制、水印等等)。 所需环境: Apache mod_rewrite 启用 PHP 5.2.0或者更高 MySQL php.ini 中 file_uploads 启用 GD Library 2或者更高 cURL BC Math 程序安装: 1.打开includes/config.php,参照“配置说明”完成设置; 2.打开includes/definitions.php,将changeme修改成其他任意内容; 3.上传目录下的文件; 4.访问程序所在地址,将会自动完成数据库的安装。 配置说明: config.php中的参数内容详细介绍。 theme:模板名称,一般不需要修改 lang:语言,如果需要显示中文请修改成zh-cn auto_lang:自动识别语言,启用为true,关闭为false site_name:网站名称 doctitle:副标题 meta_description:网站描述 meta_keywords:关键词 db_host:MySQL主机地址 db_port:MySQL端口 db_name:数据库名 db_user:数据库用户 db_pass:数据库密码 maintenance:维护模式,启用为true,关闭为false google_analytics_tracking_id:Google Analytics ID minify:CSS、JS优化模式,启用为true,关闭为false private_mode:隐私模式,需要输入密码才可上传图片,启用为true,关闭为false user_password:隐私模式密码 admin_folder:后台路径 admin_password:后台密码 api_key:API密钥 api_mode:API模式 storage:储存方式,datefolders:按日期分目录储存(如:/YYYY-MM-DD/file.jpg);direct:直接储存(如:/image/file.jpg) file_naming:图片命名,original:保持原名,如果重复则添加随机字符;random:图片名随机;mixed:在原名中添加随机字符 folder_images:图片储存目录 folder_thumbs:缩略图储存目录 virtual_folder_image:虚拟图片目录,即展示图片页的虚拟路径 virtual_folder_uploaded:多图片上传显示上传进程的虚拟路径 max_filesize:最大大小 thumb_width:缩略图宽,单位:像素 thumb_height:缩略图高,单位:像素 min_resize_size:最小调整大小,单位:像素 max_resize_size:最大调整大小,单位:像素 multiupload:多图片上传,启用为true,关闭为false multiupload_limit:多图片上传最大张数 over_resize:扩大图片,即在调整图片候将小图片调整为大图片,启用为true,关闭为false flood_protection:洪水攻击保护,启用为true,关闭为false flood_report_email:洪水攻击报告邮箱,如果发生洪水攻击则向该邮箱发送邮件报告 max_uploads_per_minute:每分钟最多上传 max_uploads_per_hour:每小最多上传 max_uploads_per_day:每天最多上传 max_uploads_per_week:每周最多上传 max_uploads_per_month:每月最多上传 error_reporting:DeBug模式,报告错误,启用为true,关闭为false short_url:短地址功能,启用为true,关闭为false short_url_service:短地址服务商,可用:tinyurl、google、isgd、bitly、custom(自定义) custom_short_url_api:自定义短地址服务商API地址 custom_short_url_service:自定义短地址服务商名称 short_url_user:短地址服务商用户名 short_url_keypass:短地址服务商密码 short_url_image:缩短图片类型 facebook_app_id:FaceBook应用ID facebook_comments:FaceBook评论应用 watermark_enable:水印功能,启用为true,关闭为false watermark_image:水印所在路径 watermark_position:水印位置,用英语方位名词描述 watermark_margin:水印位置,从图片底部算起 watermark_opacity:水印不透明度 root_dir:程序根路径 relative_dir:相对路径
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值