markdown中本地和线上图片自动传图床并替换链接

我根据网上现有的两个Python脚本(《markdown文件中图片到图床的转换》hxzqlh/qiniu-markdown-pics)以及七牛官方的Python SDK,优化改编了一个新的Python 3脚本,能够自动将markdown中的本地和线上图片(如微信公众号中的图片)批量上传到图床七牛的Bucket,并自动替换markdown文件中的链接。

写作作用流程

在markdown软件(如Typora)中专心进行写作,随意插入本地及网络图片,不需要中断下来传个图。

本地图片可以是电脑中任意位置的文件(使用绝对路径),也可以MD同名文件夹下的图片(使用相对路径)。插入的网络图片也不用担心出现“此图片来自微信公众平台,未经允许不可引用”之类问题,因为脚本处理之后会直接转到到个人的七牛空间。插入网络图片如果是自己的七牛空间里面的图片,脚本会自动忽略,避免重复上传。

插完图之后也可以随时修改,不用担心图片管理混乱的问题(上传的图床的图片不方便管理)。

写作完成,浏览修改,运行

python 脚本路径 MD文件路径 [是否图片压缩]
  • 0 - 不需要压缩
  • 1 - 需要压缩,注意tiniPNGkey

上传之后的七牛中的图片名称为上传日期-MD文件名/image序号.png or jpg方便后期管理和备份

发表markdown文件到网络,删除备份的MD.bak和清理本地图片。

mark

需要用到的工具

环境

这是一个Python 3 脚本,在Microsoft Windows 10 (Home Insider Preview China 10.0.17025)、Anaconda 4.3.27、python 3.6.2、PyCharm 2017.2.4 环境调试完成。

运行条件:

import re
import os
import sys
import time
import math
import imghdr
import shutil
import random
import string
import tinify
import urllib
import sqlite3
import operator
from hashlib import md5
from qiniu import Auth, put_file, etag, BucketManager
from datetime import date
import validators

只看了入门书《A Byte of Python》中文版,就能使用上述工具,遇到问题直接Google,中文检索结果就能解决问题。

实现

代码上传到GitHub,此处应该有个流程图。代码中都有详细的注释。

流程图

点击看大图

脚本配置

存储

网上都说七牛图床好,目录是10G空间+10G流量,图片大小适当控制应该够我用了。等到我不够用的时候,也许我有经济实力购买更多空间和流量了。

注册七牛个人账号,获取AccessKey/SecretKey、空间名称(bucket name)和域名(domain)

填入python 脚本中

ak = ' '
sk = ' '
domain = ' ' # 上传域名
bucket = '' # 空间名称

图片压缩

调用tinypng来压缩,压缩配置直接照搬《markdown文件中图片到图床的转换》的。七牛的SDK也能提供压缩,后期有空再研究一个两个官方文档,改进一下脚本。

tinify.key = '' # 设置tinipng的key

在非Windows系统运行,还要把脚本中对应的路径的/改为\,已在脚本对应位置注释。

编程感想

由于只看了《A Byte of Python》,只能算是一个初步的Python User。而且不具备系统的Python基础知识,利用google搜索来慢慢调试是非常浪费时间的。这个脚本的编写和调试就用了几个晚上的时间。还花费了一些时间来搜索有没有现有的轮子。

《markdown文件中图片到图床的转换》的脚本修改了一下就能运行,但是这个脚本比较激进,没有备份MD文件就直接覆盖了。hxzqlh/qiniu-markdown-pics的是python 2 脚本,而且我调试时总是出现os.remove无法运行,不知道是在哪里被占用了,只能把os.remove给注释掉,最后再手动删除Temp下面的缓存文件。另外,它是把网络图片下载下来,用的是tempfile.mkstemp方法,这个文件也是要手动删除的。在阅读七牛官方SDK文档时发现它可以直接获取url,不用下载,于是决定还是自己写一个上传函数。

本来想直接有命令行中运行的,但发现安装了Anaconda之后就没办法把模块安装到原版的Python 中,pip install之后的模块都安装在conda中,不过这样也好,在conda中还能自动更新。

markdown图床现有轮子集锦

markdown传图的各种姿势

轮子 描述(教程链接) 批量处理 上传本地图片 转存网络图片 多人维护 安全性
CodeFalling/hexo-asset-image hexo g之后html中图像链接变为绝对路径,插件有时有bug。与hexo qiniu插件合用时需要修改后者 push到GitHub之后MD中的图片链接仍可预览 × 用的人还算多
微信公众号图床 管理方便,微信压缩和CDN 去除了照片信息,更安全。但数据在腾讯手上
新浪图床上传脚本 不需要发布微博,图片只要上传就会存在于图床中 × × × 图床不稳定,链接没保障
hexo-qiniu-sync qiniu官方传图插件,需要学习一下如何配置。教程2 ×
批量替换网络图片的py2脚本 os.remove运行出错。需要手动删除缓存文件。本文已改进 × ×
qiniu-image-tool AutoHotkey和qshell实现,一键上传图片或截图至七牛云,获取图片的markdown引用至剪贴板,并自动粘贴到当前编辑器。经常出错 × ×
MWeb for Mac
批量替换本地图片的py3脚本 如正文所述 ×
laobie/WriteMarkdownLazilypy2 自动化替换 Markdown 中的本地图片引用,使用LeadCloud × ×
上传简书图片到七牛的py2脚本 × ×
markdown图片实用工具 利用Python和AutoHotKey实现 × ×
极简图床 全球CDN加速, 支持外链、不限流量的免费图床 × ×
MPic-图床神器 完成度非常高的插图小软件,支持压缩 × × 软件未开源
GitHub上的更多开源工具

原文发表于:

markdown中本地和线上图片自动传图床并替换链接

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容