最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Python編寫(xiě)一個(gè)在Linux下實(shí)現(xiàn)截圖分享的腳本的教程

 更新時(shí)間:2015年04月24日 10:19:23   作者:C Wong  
這篇文章主要介紹了使用Python編寫(xiě)一個(gè)在Linux下實(shí)現(xiàn)截圖分享的腳本的教程,利用到了scrot和urllib2庫(kù),需要的朋友可以參考下

引子

Linux下不支持QQ等功能豐富的IM,雖然可以通過(guò)wine運(yùn)行QQ2012,但是還是喜歡在gtalk群中聊天,gtalk群不支持圖片方式,這就要靠我們大家自己來(lái)解決了,eleven開(kāi)放了一個(gè)Image上傳和顯示接口,提供了使用curl來(lái)解決,但是我們公司的網(wǎng)絡(luò)使用squid禁止了curl的訪問(wèn),所以整天看他們這么爽的分享圖片我也不甘心阿,所以就使用Python寫(xiě)了一個(gè)分享圖片的腳本
實(shí)現(xiàn)

使用scrot截圖,然后使用urllib2庫(kù)上傳圖片,如果存在PyQt4庫(kù)則會(huì)將結(jié)果放到剪貼板上,如果不存在則輸出,自行復(fù)制
代碼

#!/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, json
import mimetools
import mimetypes
import 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 content

if __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

安裝

將上面代碼保存一個(gè)文件,放在PATH路徑里,賦予執(zhí)行權(quán)限即可
使用

默認(rèn)的不跟圖片地址則會(huì)截圖,截圖完畢后自動(dòng)分享,如安裝了PyQt4庫(kù)則會(huì)將結(jié)果放到剪貼板,如沒(méi)有則輸出結(jié)果.如果腳本給了圖片路徑參數(shù)則上傳給定路徑的圖片

相關(guān)文章

  • pip?install如何指定包的安裝路徑

    pip?install如何指定包的安裝路徑

    最近學(xué)習(xí)python需要用pip下載一些包,但是發(fā)現(xiàn)下載后在pycharm中根本導(dǎo)入不了,下面這篇文章主要給大家介紹了關(guān)于pip?install如何指定包的安裝路徑的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • python實(shí)現(xiàn)遍歷文件夾圖片并重命名

    python實(shí)現(xiàn)遍歷文件夾圖片并重命名

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)遍歷文件夾圖片并重命名,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Python3實(shí)現(xiàn)購(gòu)物車(chē)功能

    Python3實(shí)現(xiàn)購(gòu)物車(chē)功能

    這篇文章主要為大家詳細(xì)介紹了Python3實(shí)現(xiàn)購(gòu)物車(chē)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python Paramiko創(chuàng)建文件目錄并上傳文件詳解

    Python Paramiko創(chuàng)建文件目錄并上傳文件詳解

    Paramiko是一個(gè)用于進(jìn)行SSH2會(huì)話的Python庫(kù),它支持加密、認(rèn)證和文件傳輸?shù)裙δ?本文旨在詳細(xì)指導(dǎo)新手朋友如何使用Python的Paramiko庫(kù)來(lái)創(chuàng)建遠(yuǎn)程文件目錄并上傳文件,希望對(duì)大家有所幫助
    2024-10-10
  • Python實(shí)現(xiàn)的序列化和反序列化二叉樹(shù)算法示例

    Python實(shí)現(xiàn)的序列化和反序列化二叉樹(shù)算法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的序列化和反序列化二叉樹(shù)算法,結(jié)合實(shí)例形式分析了Python二叉樹(shù)的構(gòu)造、遍歷、序列化、反序列化等相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • Python通用唯一標(biāo)識(shí)符uuid模塊使用案例

    Python通用唯一標(biāo)識(shí)符uuid模塊使用案例

    這篇文章主要介紹了Python通用唯一標(biāo)識(shí)符uuid模塊使用案例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 解決Python requests 報(bào)錯(cuò)方法集錦

    解決Python requests 報(bào)錯(cuò)方法集錦

    這篇文章主要介紹了解決Python requests 報(bào)錯(cuò)方法集錦的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Python內(nèi)置函數(shù)詳談

    Python內(nèi)置函數(shù)詳談

    本篇文章主要介紹了Python內(nèi)置函數(shù)的使用方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-10-10
  • Python中scatter函數(shù)參數(shù)及用法詳解

    Python中scatter函數(shù)參數(shù)及用法詳解

    這篇文章主要介紹了Python中scatter函數(shù)參數(shù)及用法詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • Python 從相對(duì)路徑下import的方法

    Python 從相對(duì)路徑下import的方法

    今天小編就為大家分享一篇Python 從相對(duì)路徑下import的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12

最新評(píng)論

临潭县| 崇州市| 油尖旺区| 霸州市| 福安市| 肥乡县| 南汇区| 凯里市| 张北县| 平阳县| 黄陵县| 纳雍县| 静宁县| 西畴县| 明溪县| 舒兰市| 贵南县| 蒙城县| 扬州市| 威信县| 新安县| 舒城县| 达孜县| 桓台县| 赣州市| 遂宁市| 大埔县| 信丰县| 新巴尔虎左旗| 莱西市| 南汇区| 常德市| 金坛市| 镇宁| 阳新县| 辰溪县| 莎车县| 临漳县| 读书| 吉安县| 大邑县|