自建图床上传
前言
picgo 不知道为什么很慢,测试的时候感觉应该是剪贴板的问题,因为我的oss(我用的图床是将阿里云的oss作为自己的图床,没什么访问量 ,按量付费也不贵)上已经有文件了,但是迟迟写不到剪贴板中。并且这个时候通知也会卡。picgo调用通知的地方不止一处,应该不是通知的事情。
对于文件的大小也有很大的区别,如果文件很小,传的也不算慢,但是一旦图片大了,就慢了。也不能排除是picgo调用的网络的事情。
准备
因为阿里云的oss有提供命令行的程序,所以写了一个脚本来上传。
安装配置完成后可以直接调用上传文件
如果ossutil64没有设置全局,那shell 要放了同一个目录。
要安装 xclip 用以操作剪贴板
Datetime=$(date "+%Y%m%d%H%M%S")
xclip -selection clipboard -t image/jpg -o > ~/$Datetime.jpg
if test -s ~/$Datetime.jpg; then
kdialog --passivepopup $Datetime.jpg保存成功 --title 提示
./ossutil64 appendfromfile $Datetime.jpg oss://ossname/img/$Datetime.jpg
kdialog --passivepopup $Datetime.jpg上传成功 --title 提示
echo "![](http://yourhost/img/$Datetime.jpg)" | xclip -selection clipboard
kdialog --passivepopup 已拷贝到剪贴板http://yourhost/img/$Datetime.jpg --title 提示
rm ~/$Datetime.jpg
else
kdialog --passivepopup 请检查剪贴板是否存在图片 --title 错误
rm ~/$Datetime.jpg
fi
Datetime=$(date "+%Y%m%d%H%M%S")
是作为文件名如20190102123212
xclip -selection clipboard -t image/jpg -o > ~/$Datetime.jpg
导出剪贴板中的图片
if test -s ~/$Datetime.jpg; then
查看导出的文件大小是否为0,为0的话说明不是图片
kdialog
是kde用于弹出通知的,就像这个一样
./ossutil64 appendfromfile $Datetime.jpg oss://ossname/img/$Datetime.jpg
这一行是用于上传图片的
echo "![](http://yourhost/img/$Datetime.jpg)" | xclip -selection clipboard
是将链接拷贝到剪贴板,因为为将oss进行了域名绑定,所以只有后面的文件名不一样,用变量就可以。
不足
我的本意是将快捷键绑定要这个脚本上,但是,不知道为啥成功不了。
进阶
每次调用还是有点麻烦,速度上去了,但是操作多了。
用python 写了一个小的用户界面,点一下调用一次shell(最好还是想办法绑定快捷键)
代码
from PyQt5 import QtWidgets
import sys
import os
class App(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("阿里云oss上传")
self.setFixedSize(100,100) # 设置窗口固定大小
self.main_widget = QtWidgets.QWidget()
self.main_layout = QtWidgets.QVBoxLayout()
self.main_widget.setLayout(self.main_layout)
self.btn_1 = QtWidgets.QPushButton("上传")
self.main_layout.addWidget(self.btn_1)
self.btn_1.clicked.connect(self.clicks)
self.setCentralWidget(self.main_widget)
def clicks(self):
os.system("/home/yourusername/shot.sh")
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
gui = App()
gui.show()
sys.exit(app.exec_())