Python 编写一个免费简单的图床上传工具二
之前第一 个版本是命令行下交互的图床上传脚本,当初只是为了实现功能,聪聪的写完了,导致代码写得很烂,后来受到好友hyhmnn 的启发,增加了按键监听功能,在实际的写作过程中可以更高的提高 markdown 的写作效率了。
前言
第一个版本是在 Ubuntu下写出来的,一个命令行下的脚本,使用的是xclip
来操作Ubuntu
下的剪贴板。最近因为工作环境又迁移到了macOS
下面,原来的Ubuntu
下的脚本不能直接使用了,受到好友hyhmnn
的按键监听的编程思维影响,决定来重新完善一下以前的脚本。
欢迎界面改进
欢迎界面是脚本执行后的界面,可以在欢迎界面加一些操作说明,方便用户快速上手。
第一版
只是用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
方法即可将要操作的字符串拷贝到剪贴板中。
新功能-按键监听
这里受到 Buzz2d0 的多进程编程思想的影响,这里我直接copy
了他的按键检测进程代码,首先定义一个q = Queue(2)
的执行条件,当按下ctrl
按键的时候q.put(1)
加1
,按下shift
按键的时候q.put(2)
,满足了q=Queue(2)
的条件执行Get_imgurl
函数的操作。 主函数中调用了listener
来建议按键的按下与释放。
功能演示
运行后脚本输出了一些相关信息方便用户的上手操作。
然后直接截图 使用Ctrl+Shift即可直接上传图片,此时剪贴板中已经是一个完整的图片外链了,直接在文章中粘贴即可。
点评
2021 年了,Typora 是我目前主力的 Markdown 编辑器,目前 Typora 很方便定制自己的图床上传脚本,时代变了,这个文章仅当做纪念使用,比较当初图床的概念还不是很火,有这个思路还是很不错的哈。
本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)
微信
|
支付宝
|
没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面 用以感谢 支持我的朋友,详情请看 打赏列表 | 国光