使用python实现将截图上传到七牛服务器,并将七牛生成的外部链接添加的剪切板的功能

目的:在使用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=‘1bDBi2aCkA3_RYYabZExqBE1Rw7CwifGAyo87-QU‘
 7 secret_key=‘PpRybbLN79RlDRsvGCC4LX_bMLl5t4ErvVPdMf1d‘
 8 bucket_name=‘dailyrecordphotos‘
 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://7xpc60.com1.z0.glb.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. 每次在截完图后,需要手动去执行此脚本才可以上传文件

时间: 2024-08-06 05:48:31

使用python实现将截图上传到七牛服务器,并将七牛生成的外部链接添加的剪切板的功能的相关文章

自动数据库抽取想要的查询结果,自动生成txt(utf-8)文件,然后自动ftp上传到外网服务器

需求:无人值守的把数据库中的数据,生成txt文本,自动上传到ftp服务器,与外部客户进行数据对接: =============================================== 步骤:1  写存储过程     2  数据库中建立计划任务     3  写转换txt编码格式的插件     4  windows任务计划     5  flashfxp定时上传数据到ftp服务器 ============================================== 详细信息:

python之实现ftp上传下载代码(含错误处理)

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之实现ftp上传下载代码(含错误处理) #http://www.cnblogs.com/kaituorensheng/p/4480512.html#_label2 import ftplib import socket import os def ftpconnect(ftp_info): try: ftp = ftplib.FTP(ftp_info[0]) except (socket.er

JS打开摄像头并截图上传

直入正题,JS打开摄像头并截图上传至后端的一个完整步骤 1. 打开摄像头主要用到getUserMedia方法,然后将获取到的媒体流置入video标签 2. 截取图片主要用到canvas绘图,使用drawImage方法将video的内容绘至canvas中 3. 将截取的内容上传至服务器,将canvas中的内容转为base64格式上传,后端(PHP)通过file_put_contents将其转为图片 要注意的是,在chrome以外的浏览器中,使用摄像头或多或少会出现一些问题,可能也是老问题了,所以以

七牛云存储Python SDK使用教程 - 上传策略详解

文 七牛云存储Python SDK使用教程 - 上传策略详解 七牛云存储 python-sdk 七牛云存储教程 jemygraw 2015年01月04日发布 推荐 1 推荐 收藏 2 收藏,2.7k 浏览 本教程旨在介绍如何使用七牛的Python SDK来快速地进行文件上传,下载,处理,管理等工作. 前言 我们在上面的两节中了解到,客户端上传文件时,需要从业务服务器申请一个上传凭证(Upload Token),而这个上传凭证是业务服务器根据上传策略(PutPolicy)来生成的,而这个生成过程中

python模块paramiko的上传下载和远程执行命令

#!/usr/bin/python # -*- coding: utf-8 -*- import paramiko,os,datetime server_ip = '192.168.1.123' server_user = 'root' server_passwd = '10241010' server_port = 22 #local_dir='C:\Python27' #remote_dir='/soft2/nba/' def ssh_connect(): ssh = paramiko.SS

python Django之文件上传

python Django之文件上传 使用Django框架进行文件上传共分为俩种方式 一.方式一 通过form表单进行文件上传 #=========================================FORM表单上传文件======================================== def f1(request): #定义f1上传函数 if request.method=='GET': #如果是以GET请求 return render(request,'f1.htm

python将不同的文件名上传到不同的服务器

#!/usr/bin/python   #-*- coding: utf-8 -*-   import paramiko   import datetime   import os,tab,sys from multiprocessing import Process, Pool host_list = ( ('192.168.1.127','root','123456'), ('192.168.1.143','root','123456'), ('192.168.1.141','root','

Python模拟HTTP Post上传文件

使用urllib2模块构造http post数据结构,提交有文件的表单(multipart/form-data),本示例提交的post表单带有两个参数及一张图片,代码如下: #buld post body data boundary = '----------%s' % hex(int(time.time() * 1000)) data = [] data.append('--%s' % boundary) data.append('Content-Disposition: form-data;

头像截图上传三种方式之一(一个简单易用的flash插件)(asp.net版本)

flash中有版权声明,不适合商业开发.这是官网地址:http://www.hdfu.net/ 本文参考了http://blog.csdn.net/yafei450225664/article/details/12855915     并且加入了自己的解析,以供之后的参考. 官网提供的demo包,包含了php,jsp,asp,aspx的demo. 1.Demo中,avatar.swf是执行上传的flash文件:default.jpg是默认显示的图片:demo.html是demo,可以直接复制里面