前言

以前写博客都是使用网站的在线编辑器,这种开着网页写东西的感觉,真是。。反正我更喜欢在自己的PC上写好Markdown,然后直接在网站上导入。现在基本大一些的技术网站都可以支持从本地导入Markdown。但是Markdown的插入图片有点麻烦,有些网站比如简书的在线Markdown编辑器支持良好,而如CSDN,如果我使用本地图片位置链接,虽然本地可以插入图片,但是在线导入后显然不能直接获取我的本地资源,因此贴本地链接无效。所以我们一般采取的做法是:

  • 1.找到需要插入的图片,修改文件名以区分
  • 2.上传图片到某个图床,我用的是七牛云
  • 3.复制图床上的图片的链接;然后用markdown格式插入图片

操作不复杂,但是如果次次这么干,每次都得网页登陆七牛云。然后进空间,再上传,找到该图片所在位置。一旦插入的图片多了,就感觉很烦。

解决

好,现在借鉴了一个童鞋的方法,稍微对其脚本做了修改,先贴上人家的github源地址:
https://github.com/wuchangfeng/markdown-helper

因为Python语言作为脚本使用非常强大,因此该段源代码以Python写成,首先你的本地需要先安装Python。Python是不向下兼容的,而且Python2和Python3有语法、模块等的一些区别。该脚本借助了七牛云官方提供的管理空间文件的SDK,目前亲测同时兼容Python2.x和3.x没有问题。同时对原脚本进行了完善和升级。因为之前发现如果简单的将图片以数字命名并且上传的话,会出现同名文件覆盖的问题。为了能最大程度的区分图片,并且达到见名知意的效果。将要上传的图片和Markdown文档放到同一目录下,当图片上传的时候,获取Markdown文档名称与图片文件名称拼接得到新的文件名。这样通过查看自己的七牛云空间时,就可以知道每张图片所应用的场景,并且降低了图片外链覆盖的问题。

#! /usr/bin/python
#-*- coding: utf-8 -*-from qiniu import Auth, put_file, etag, urlsafe_base64_encode
import qiniu.config
from qiniu import BucketManager
import sys,time
import os
import msvcrt
import subprocess
from datetime import datetime# you will get md_url in this file
result_file = "ss.txt"  if os.path.exists(result_file):os.remove(result_file)
os.chdir(sys.path[0])# you need get yours msg here
access_key = ""
secret_key =  ""
bucket_name =  ""    # 填入你的七牛空间名称
bucket_url =  ""   # 填入你的域名地址,主要是为了记录图片上传后的地址
md_url_result = "md_url.txt"img_suffix = ["jpg", "jpeg", "png", "bmp", "gif"]def upload_img(bucket_name,file_name,file_path):# generate tokentoken = q.upload_token(bucket_name, file_name, 3600)info = put_file(token, file_name, file_path)# delete local imgFile# os.remove(file_path)returndef get_img_url(bucket_url,file_name):# date=datetime.now().strftime('%Y%m%d_%H%M%S')# file_names = file_name+'?'+dateimg_url = 'http://%s/%s' % (bucket_url,file_name)# generate md_urlmd_url = "![%s](%s)\n" % (file_name, img_url)return md_urldef save_to_txt(bucket_url,file_name):url_before_save = get_img_url(bucket_url,file_name)# save to clipBoardaddToClipBoard(url_before_save)# save md_url to txtwith open(md_url_result, "a") as f:f.write(url_before_save)return# save to clipboard
def addToClipBoard(text):command = 'echo ' + text.strip() + '| clip'os.system(command)# get filename of .md in current index
def getMarkName(paths):f_list=os.listdir(paths)for i in f_list:name=os.path.splitext(i)[0]end=os.path.splitext(i)[1]if end=='.md':return name+'_'return 'markdown'if __name__ == '__main__':q = Auth(access_key, secret_key)bucket = BucketManager(q)imgs = sys.argv[1:]for img in imgs:# name for img with local time up_filename = getMarkName(os.getcwd().replace('\\','/')) + os.path.split(img)[1]upload_img(bucket_name,up_filename,img)
save_to_txt(bucket_url,up_filename)


首次安装Python时,在安装选项时将上图图所示选项勾选上,这样安装完毕后会自动为我们添加环境变量,在任意目录都可以使用dos命令运行python指令了:

因为是引入了七牛云的SDK,第一次使用时要将sdk集成进来,打开cmd命令行窗口,直接运行以下命令:

>>> pip install qiniu

注意!

这是我在使用该脚本时发现的问题。之前一直运行正常,上个月再次上传的时候突然显示"SSL ERROR",图片上传失败。反复调试文件路径,方法调用,access-key,secret-key都找不到原因。最后索性将qiniu卸载后重新安装。结果同样报出以上错误,想来是网络问题。于是电脑重启并且清除了DNS缓存后,成功!想来想去,可能是前段时间公司经历过一次断电事故,服务器重新部署过。而我本次上传文件的时候系统仍然是从本地的DNS缓存中读取,取到的地址可能是错误的。清除缓存后让其向DNS服务器请求一个DNS查询,这时候返回的该域名对应的IP应该就是正确的。如果因为网络问题造成脚本无法正常运行,可以试试我的解决办法。

在原先的脚本基础上做了修改(可见注释的代码,以及新增的)。图片上传并复制链接完毕后不在当前位置删除,而是保留。每次上传的图片名以原有文件名加上操作时的时间字符串加以区分。图片上传到七牛云后生成的七牛云存储的链接,既存在了剪贴板里,可以直接ctrl+v到Markdown文档上,同时在当前目录下创建一个"md_url.txt"并将每次生成的链接存储在其中。

使用方法

将要获取链接的本地图片拖拽到脚本文件.py上,命令行窗口一闪而过,具体消失的时间依图片上传的速度而定。这时候图片已经成功上传到七牛云空间并获取链接,如下动图所示:


谢谢前人的代码和思路。该脚本同时支持[“jpg”, “jpeg”, “png”, “bmp”, “gif”]格式文件的上传。上面的gif链接就是使用该脚本生成的。这样可以大大加快我们在诸如CSDN等技术网站上写博客的速度,是不是很方便呢?

补充!!

在win7以及升级激活后的win10系统中,默认情况下有可能我们无法拖放一个文件给python脚本让其去处理这个文件的,这是因为windows认为python脚本不是一个合法的可拖放的目的对象(drop target)。网上已经有人给出了解决办法,我们只需在注册表中配置一下即可,具体做法如下

新建.reg文件,文件名随意,内容为:

Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\Python.File\shellex\DropHandler]
@="{60254CA5-953B-11CF-8C96-00AA00B8708C}"

保存后执行该注册表文件即可

使用Python在Markdown插入图片并自动获取链接相关推荐

  1. markdown插入图片、音频视频

    1.markdown 简介 Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档. Markdown 编写的文档后缀为 .md, .markdown 简单易学容易上手,十 ...

  2. Markdown插入图片操作

    文章目录 1.图片位置(通用) 2.缩放 (1)指定大小(csdn专用) (2)按比例缩放(csdn专用) (3)?x-oss-process=image/resize只能缩小(通用) 3.鼠标放上后 ...

  3. python关于excel插入图片

    python关于excel插入图片功能实现,利用openpyxl进行插入 功能很简单,废话不多说直接上代码: from openpyxl import load_workbook,Workbook f ...

  4. markdown插入图片的几个办法

    CSDN-markdown语法之如何插入图片 目录 图片上传方式 插入在线图片 插入本地图片 图片链接方式 行内式图片链接 参考式图片链接 几个问题探讨 问题1:图片上传和图片链接两种方式的区别 问题 ...

  5. Markdown插入图片的方法

    Markdown插入图片的方法 Markdown插入图片的语法: \!\[alt 属性文本](图片地址) \!\[alt 属性文本](图片地址 "可选标题") 说明: 以感叹号开头 ...

  6. 有道云笔记MarkDown插入图片

    有道云笔记MarkDown插入图片 </h1><div class="clear"></div><div class="post ...

  7. Markdown插入图片 详细例子(本地图片,网络图片,base64) Windows

    网上一番搜索,领略到基本所有回答,都是一样的,简简单单的介绍. 而且,TMD,插入图片答案的本地路径,都是回答的是Linux或Mac OS系统的路径,诸如:/user/desktop/doge.png ...

  8. Python 操作 excel 插入图片、表格、设置单元格颜色、字体(三)

    Python 操作 excel 插入图片.表格.设置单元格颜色.字体 python 操作 excel 插入图片.表格.设置单元格颜色.字体 提示:以下是本篇文章正文内容,下面案例可供参考 一.open ...

  9. 【Markdown】Markdown插入图片的完美解决方法

    原文:https://www.jianshu.com/p/8c0d00fca9b3 "markdown一时爽, 分享火葬场", markdown的简便性和美观性一直受到诸多码农偏爱 ...

最新文章

  1. 今日 Paper | 虚拟试穿网络;人群计数基准;联邦元学习;目标检测等
  2. [YTU]_2417 C语言习题 字符串长度
  3. 整人之bat重启文件
  4. Office SharePoint Server 2007 规划和体系结构2
  5. VScode 常用快捷键
  6. 关于在Win10系统将标注软件labelme打包生成.exe可执行文件
  7. 如何清除web 服务器的缓存
  8. utf-8与unicode是什么关系
  9. C#DataGridView中的常用技巧
  10. java刷票小程序,小程序投票系统刷票
  11. python MAC地址查询
  12. 还没来得及买,就已经被淘汰的东西
  13. 【晶体管电路设计】一、晶体管设计概述与共射极放大电路
  14. PHP叫号系统,排队叫号系统
  15. python两行代码实现转换视频格式,以flv转换mp4为例
  16. 46.把数字翻译成字符串
  17. Please restart Word to load MathType addin properly;运行时错误53,文件未找到MathPage.WLL
  18. 洛谷P1548 [NOIP1997 普及组] 棋盘问题
  19. php 七牛云获得上传token,客户端生成七牛上传token
  20. 树莓派自己加内存条_拔掉MacBookPro,用8GB树莓派4工作一天,体验原来是这样的...

热门文章

  1. SecondaryNameNode工作原理
  2. 珍爱生命,举手之劳__如何优雅的叫优步专车
  3. 人人皆可做的抖音108个赚钱项目:抖音美妆行业赚钱术(10)
  4. 《算法图解》学习笔记(十一):十种经典的算法与数据结构
  5. TDengine在吉科软车辆监管中的应用实践
  6. Ambari添加快速链接Quick Links
  7. Day629.思考题解答① -Java业务开发常见错误
  8. Symantec Backup Exec恢复数据库
  9. c++ 复合类型 读书笔记(二)
  10. 新闻深度解析:爱立信在伊拉克到底怎么了?