Python 编写一个免费简单的图床上传工具二


之前第一 个版本是命令行下交互的图床上传脚本,当初只是为了实现功能,聪聪的写完了,导致代码写得很烂,后来受到好友hyhmnn的启发,增加了按键监听功能,在实际的写作过程中可以更高的提高markdown的写作效率了。

前言

第一个版本是在Ubuntu下写出来的,一个命令行下的脚本,使用的是xclip来操作Ubuntu下的剪贴板。最近因为工作环境又迁移到了Mac下面,原来的Ubuntu下的脚本不能直接使用了,受到好友hyhmnn的按键监听的编程思维影响,决定来重新完善一下以前的脚本。
第二版的项目地址是:
Github:imageMD

欢迎界面改进

欢迎界面是脚本执行后的界面,可以在欢迎界面加一些操作说明,方便用户快速上手。

第一版

只是用print一个个调整输出来的表格,可以说是非常的烂了。

第二版

使用了prettytable第三方模块来输出表格信息,实现起来很简洁。

保存截图

用户调用系统命令来将截图保存到本地,用于后面上传文件的操作。

第一版

Ubuntu下使用xclip来操作系统剪贴板,使用os.system来操作系统命令,将剪贴板中的图片保存到本地,默认保存到tmp临时文件目录下。

第二版

Mac下使用pngpaste来操作系统剪贴板,使用subprocess.Popen来操作系统命令,此外还增加了异常捕捉代码。

判断剪贴板中是否是图片

剪贴板中不一定都是图片,还有可能是字符串,如果是字符串的话则没法进行上传操作,得提示出异常信息。

第一版

首先不管剪贴板中的内容是什么,都将剪贴板内容保存到本地为sqlsec.png,然后判断这个文件的大小,如果这个文件的大小为0,说明剪贴板中不是图片格式。

第二版

保存图片调用subprocess.Popen来执行系统命令,将命令执行后的状态p.returncode返回,状态0代表命令执行没有异常,直接将图片上传;状态不为0,代表命令执行失败,说明剪贴板中没有图片数据。

提取url信息

FreeBuf的上传图片的返回信息格式如下:

{'url':'images/20180618/15292843342543.png!small','title':'','original':'carbon.png','state':'SUCCESS'}

现在要从这一串返回信息中提取出url字段的值。

第一版

当时写这个脚本正则也忘记的一干二净了,所以在字符串提取的时候直接使用了str(r.text[8:42])这样僵硬的写法来提取字符串8-42位的字符串值 =,= 哇~ 好烂的代码。

第二版

使用正则的findall来对字符串进行匹配,匹配的规则是:images(.*?).png,匹配images.png之间的字符串,最后用这串值拼接出完整的url出来。

将图片外链拷贝到剪贴板

最后脚本生成的![](...)这种Markdown格式的外链时候,将其直接拷贝到剪贴板上方便写作的时候直接粘贴。

第一版

先将完整的外链信息写入到/tmp/sqlsec.txt中,然后调用xclip工具从这个txt文件中拷贝字符串信息。

第二版

借助pyperclip可以方便地操作系统剪贴板,直接调用.copy方法即可将要操作的字符串拷贝到剪贴板中。

新功能-按键监听

这里受到hyhmnn的多进程编程思想的影响,这里我直接copy了他的按键检测进程代码,首先定义一个q = Queue(2)的执行条件,当按下ctrl按键的时候q.put(1)1,按下shift按键的时候q.put(2),满足了q=Queue(2)的条件执行Get_imgurl函数的操作。 主函数中调用了listener来建议按键的按下与释放。

功能演示

运行后脚本输出了一些相关信息方便用户的上手操作。

然后直接截图 使用Ctrl+Shift即可直接上传图片,此时剪贴板中已经是一个完整的图片外链了,直接在文章中粘贴即可。


取个什么名字好呢
欢迎您扫一扫上面的二维码,加入我们的小队!
 上一篇
我有一个flag,立还是不立? 我有一个flag,立还是不立?
从现在开始我要好好学习了-手机真好玩;这个星期绝对不再玩守望先锋-亿枪一个;今天要写500行代码-B站真有意思…你是否对以上场景很熟悉呢?是否也在苦恼自己无法坚持做某一件事情呢?我想绝大多数人都有过相似的经历吧,幸运的是你看到了这篇文章,国
2018-06-21
下一篇 
Termux 高级终端安装使用配置教程 Termux 高级终端安装使用配置教程
Termux 高级终端安装使用配置教程,这篇文章拖了有小半年.因为网上相关的文章相对来说还是比较少的,恰好今天又刷了机,所以就特意来总结一下,希望本文可以帮助到其他的小伙伴.发挥Android平台更大的DIY空间. 简介Termux是一个A
2018-05-03
  目录