热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Typora中自定义命令上传图片

Typora是我经常用的一款Markdown编辑器,简洁的风格、实用的功能,口碑真的很赞。最近发现Typora支持自定义上传图片的功能,原先上传图片需要使用第三方应用,比如iPic

Typora是我经常用的一款Markdown编辑器,简洁的风格、实用的功能,口碑真的很赞。最近发现Typora支持自定义上传图片的功能,原先上传图片需要使用第三方应用,比如iPicuPic等,现在有了自定义功能就能上传图片到任意图床了。功能如下图:

于是就打算自己写一个上传脚本,先看下Typora的文档说明:

重点红色框中已经标出来了,上传后的返回结果需要这种格式,Typora才能识别是否上传成功。这与图床,我使用了SM.MS,用了很久了,不担心跑路。看接口:

如果Authorization不传,就是匿名的。

好了,现在上代码:

#!/bin/bash
# Author: bilberry
# Date: 2021-05-04
# 公众号:正义的程序猿
arr=()
for img_path in "$@"
do
res=$(curl -s --location --request POST 'https://sm.ms/api/v2/upload' \
--header 'Content-Type: multipart/form-data' \
--form 'smfile=@'"${img_path}")
success=`echo $res | python3 -c "import sys, json; r=json.load(sys.stdin)['success']; print(r);"`
if [ "$success" == 'True' -o "$usccess" == 'true' ]
then
r=`echo $res | python3 -c "import sys, json; r=json.load(sys.stdin)['data']['url']; print(r);"`
arr[${#arr[@]}]=$r
fi
done
if [ ${#arr[@]} -eq $# -a $# -gt 0 ]
then
echo 'Upload Success:'
for a in "${arr[@]}"
do
echo $a
done
else
echo 'Upload Failed'
fi

代码就是这样,shell脚本是我现学的,不是很复杂,当然也有一些特殊情况没有考虑,比如SM.MS上传了重复的图片,会返回如下内容:

{
"success": false,
"code": "image_repeated",
"message": "Image upload repeated limit, this image exists at: https://i.loli.net/2021/05/04/qbrdwglp5k7cKDZMjv.png",
"images": "https://i.loli.net/2021/05/04/qbrdwglp5k7cKDZMjv.png",
"RequestId": "2FDCAB12-972E-4871-AFC8-921552C02AF5"
}

接口返回的是JSON格式,shell处理JSON还比较麻烦,这里我直接调用了python处理,当然还有其他方法:比如:



  • 使用awksed

  • 第三方库jq

  • 调用其他脚本解析器,如pythonnodephp

最后剩下Typora上的配置,看上面的第一张图,Command里面是shell脚本的文件位置,然后可以测试了:

如果看到Validation Succeed就说明上传成功了,现在当我们Command+V复制一张图片进来时,会自动将图片上传到SM.MS,真的方便了很多,写作本来就应该这么简单嘛!

至此,上面就是我今天要讲的如何使用Typora的自定义功能上传图片到sm.ms,稍微修改shell代码还能将图片上传到七牛云、阿里云、又拍云等。

文章首发:个人博客

公众号:正义的程序猿

本文系原创,转载请注明出处。



参考:



  • shell教程

  • 使用 Shell 脚本来处理 JSON

  • SM.MS上传图片文档

  • Typora文档



推荐阅读
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了如何使用vue-awesome-swiper组件,包括在main.js中引入和使用swiper和swiperSlide组件,以及设置options和ref属性。同时还介绍了如何在模板中使用swiper和swiperSlide组件,并展示了如何通过循环渲染swipes数组中的数据,并使用picUrl属性显示图片。最后还介绍了如何添加分页器。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • 其实之前也有下载过完整的android源码,但是从来没有对这个做过一些总结,在加上最近需要经常去看,索性就在从新下载,编译一下,其实这些东西官网上面都有。http:sou ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
author-avatar
双子青春狠别致
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有