香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

使用Python编写一个在Linux下实现截图分享的脚本的教程


时间:2021-11-29 16:22 作者:admin


引子

Linux下不支持QQ等功能丰富的IM,虽然可以通过wine运行QQ2012,但是还是喜欢在gtalk群中聊天,gtalk群不支持图片方式,这就要靠我们大家自己来解决了,eleven开放了一个Image上传和显示接口,提供了使用curl来解决,但是我们公司的网络使用squid禁止了curl的访问,所以整天看他们这么爽的分享图片我也不甘心阿,所以就使用python/' target='_blank'>python写了一个分享图片的脚本
实现

使用scrot截图,然后使用urllib2库上传图片,如果存在PyQt4库则会将结果放到剪贴板上,如果不存在则输出,自行复制
代码

#!/usr/bin/env Python# -*- coding:utf-8 -*-## Author : cold# E-mail : wh_linux@126.com# Date : 13/01/21 09:54:39# Desc : 贴代码和图片#import urllib2, jsonimport mimetoolsimport mimetypesimport itertools__host__ = "http://eleveni386.7axu.com"class Form(object): def __init__(self):  self.form_fields = []  self.files = []  self.boundary = mimetools.choose_boundary()  self.content_type = "application/x-www-form-urlencoded"  return def get_content_type(self):  return self.content_type def add_field(self, name, value):  self.form_fields.append((name, value))  return def add_file(self, fieldname, filename, fileHandle, mimetype=None):  body = fileHandle.read()  if mimetype is None:   mimetype = ( mimetypes.guess_type(filename)[0]       or       'applicatioin/octet-stream')  self.files.append((fieldname, filename, mimetype, body))  self.content_type = 'multipart/form-data; boundary=%s' % self.boundary  return def __str__(self):  parts = []  part_boundary = '--' + self.boundary  parts.extend(   [ part_boundary,    'Content-Disposition: form-data; name="%s"' % name,    '',    value,    ]   for name, value in self.form_fields)  if self.files:   parts.extend([    part_boundary,    'Content-Disposition: form-data; name="%s"; filename="%s"' %\    (field_name, filename),    'Content-Type: %s' % content_type,    '',    body,   ] for field_name, filename, content_type, body in self.files)  flattened = list(itertools.chain(*parts))  flattened.append('--' + self.boundary + '--')  flattened.append('')  return '\r\n'.join(flattened)class HttpHelper(object): def __init__(self, url = None, form = None, method = 'GET'):  self._url = url  self._form = form  self._body = str(form)  self._method = method  self._dst_url = None  if url:   self.make_request() def make_request(self):  url = self._url  if not self._url.startswith('http://'):   url = 'http://' + self._url  self.request = urllib2.Request(url)  if self._form:   self.add_header("Content-Type", self._form.get_content_type())   self.add_header("Content-Length", len(self._body))   self.request.add_data(self._body) def add_header(self, key, val):  self.request.add_header(key, val) def change(self, url, params = {}, method = 'GET'):  self._url = url  self._params = params  self._method = method  self.make_request() def open(self):  response = urllib2.urlopen(self.request)  content = response.read()  self._dst_url = response.geturl()  try:   return json.loads(content)  except:   return contentif __name__ == "__main__": import argparse import os parser = argparse.ArgumentParser() parser.add_argument(dest="path", nargs="?") args = parser.parse_args() if args.path:  path = args.path else:  path = r"/tmp/tmpscrot.png"  os.system("scrot -s {0}".format(path)) form = Form() filename = os.path.split(path)[-1] form.add_file(fieldname='mypic', filename=filename,     fileHandle=open(path)) http = HttpHelper( __host__ + '/Image/', form) url = http.open() try:  from PyQt4.QtGui import QApplication  app = QApplication([])  cb = QApplication.clipboard()  cb.setText(url) except:  print url

安装

将上面代码保存一个文件,放在PATH路径里,赋予执行权限即可
使用

默认的不跟图片地址则会截图,截图完毕后自动分享,如安装了PyQt4库则会将结果放到剪贴板,如没有则输出结果.如果脚本给了图片路径参数则上传给定路径的图片

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)