之前第一 个版本是命令行下交互的图床上传脚本,当初只是为了实现功能,聪聪的写完了,导致代码写得很烂,后来受到好友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即可直接上传图片,此时剪贴板中已经是一个完整的图片外链了,直接在文章中粘贴即可。