目的:在使用markdown来记录文档时,不必每次都将截图存到文档中,只需将图片链接存放到文档中,此时就想到了需要使用云服务器和自动上传文件的功能
OS: Ubuntu 15.10
version 0.1:
工具:截图工具shutter, 剪切板操作工具: xsel
源代码:
1 #!/usr/bin/python 2 import time ##时间模块,使用时间戳生成唯一的文件名 3 import commands ##python中的执行shell命令的模块 4 import os ##同上 5 from qiniu import Auth, put_data ##引入七牛提供的python sdk 6 access_key='xxx' ##密钥 7 secret_key='xxx' 8 bucket_name='xxx' ##空间名 9 10 dirName = '/home/stefan/Pictures/' ##截图存放的目录 11 fileName = commands.getoutput('ls -t '+ dirName +' | head -1'); ##获取最新修改的文件名,即最新截图的文件名, ls -t 是以修改时间排序查看文件, head -1是显示第一条记录 12 filePath = dirName+fileName ##需要上传的文件的路径 13
##上传文件代码参考网上 14 def upload_data(data): ##上传文件操作 15 q = Auth(access_key, secret_key) 16 key = str(int(time.time()*1000)) 17 token = q.upload_token(bucket_name, key); 18 restData, respInfo = put_data(token, key, data) 19 20 return "http://xxx.clouddn.com/"+key ##七牛提供的外部链接的域名,key是文件保存到七牛云服务器上的文件名 21 with open(filePath, 'rb') as f: ##读取文件并上传 22 url = upload_data(f.read()) ##url是外部访问文件链接 23 print(url) 24 os.system('echo '+url+' | xsel -b') ##将链接拷贝到剪切板
linux下在终端操作剪切板会用到 xsel 工具
上述功能有几个局限性:
1. 必须保证每次的截图会保存成文件
2. 必须保证每次的截图都存放到同一个目录下
3. 每次在截完图后,需要手动去执行此脚本才可以上传文件
需完善的地方:
1. 直接从剪切板读取文件内容直接上传
2. 截完图后自动执行脚本
version 0.2:
工具:截图工具shutter, 剪切板操作工具: xsel
源代码:
1 #!/usr/bin/python
2 import time
3 import commands
4 import os
5 from qiniu import Auth, put_data
6 access_key='xxx'
7 secret_key='xxx'
8 bucket_name='xxx'
9
10 filePath = commands.getoutput('xsel -o -b'); ##此处做了修改,取剪切板的内容
11
12 def upload_data(data):
13 q = Auth(access_key, secret_key)
14 key = str(int(time.time()*1000))
15 token = q.upload_token(bucket_name, key);
16 restData, respInfo = put_data(token, key, data)
17
18 return "http://xxx.clouddn.com/"+key
19 with open(filePath, 'rb') as f:
20 url = upload_data(f.read())
21 print(url)
22 os.system('echo '+url+' | xsel -b')
改善地方: 首先设置了截图工具shutter的首选项,将保存截图到剪切板改为保存截图的文件名到剪切板, 则每次截图的路径就会保存到剪切板上,在python中直接去取剪切板的内容就能拿到文件路径,而不用查找最新文件,也没有了同一目录的限制
局限性:
1. 如果想将截图发给其他人,此时只能取剪切板的路径下去拿到截图文件,而不能直接通过剪切板来复制粘贴图片
2. 每次在截完图后,需要手动去执行此脚本才可以上传文件