menu 李昊天的个人博客
自建图床上传
344 浏览 | 2019-08-19 | 分类:小工具 | 标签:图床

前言

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_())
知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

发表评论

email
web

全部评论 (暂无评论)

info 还没有任何评论,你来说两句呐!