热门标签 | 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文档



推荐阅读
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • php7 curl_init(),php7.3curl_init获取301、302跳转后的数据
    最近在做一个蜘蛛项目,发现在抓取数据时,有时会碰到301的页面,原本写的curl_init函数php7-远程获取api接口或网页内容&#x ... [详细]
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社区 版权所有