python设置windows桌面壁纸的实现代码


Posted in Python onJanuary 28, 2013
# -*- coding: UTF-8 -*- 
from __future__ import unicode_literals
import Image
import datetime
import win32gui,win32con,win32api
import re
from HttpWrapper import SendRequest
StoreFolder = "c:\\dayImage"
def setWallpaperFromBMP(imagepath):
    k = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control Panel\\Desktop",0,win32con.KEY_SET_VALUE)
    win32api.RegSetValueEx(k, "WallpaperStyle", 0, win32con.REG_SZ, "2") #2拉伸适应桌面,0桌面居中
    win32api.RegSetValueEx(k, "TileWallpaper", 0, win32con.REG_SZ, "0")
    win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER,imagepath, 1+2)
def setWallPaper(imagePath):
    """
    Given a path to an image, convert it to bmp and set it as wallpaper
    """
    bmpImage = Image.open(imagePath)
    newPath = StoreFolder + '\\mywallpaper.bmp'
    bmpImage.save(newPath, "BMP")
    setWallpaperFromBMP(newPath)
def getPicture():
    url = "http://photography.nationalgeographic.com/photography/photo-of-the-day/"
    h = SendRequest(url)
    if h.GetSource():
        r = re.findall('<div class="download_link"><a href="(.*?)">Download',h.GetSource())
        if r:
            return SendRequest(r[0]).GetSource()
        else:
            print "解析图片地址出错,请检查正则表达式是否正确"
            return None

def setWallpaperOfToday():
    img = getPicture()
    if img:
        path = StoreFolder + "\\%s.jpg" % datetime.date.today()
        f = open(path,"wb")
        f.write(img)
        f.close()
        setWallPaper(path)
setWallpaperOfToday()
print 'Wallpaper set ok!'

其中的httpwrapper是我写的一个http访问的封装:
#!/usr/bin/env python 
# -*- coding: UTF-8 -*-
#-------------------------------------------------------------------------------
# Name: 对http访问的封装
#
# Author: qianlifeng
#
# Created: 10-02-2012
#-------------------------------------------------------------------------------
import base64
import urllib
import urllib2
import time
import re
import sys
class SendRequest:
  """
  网页请求增强类
  SendRequest('http://xxx.com',data=dict, type='POST', auth='base',user='xxx', password='xxx')
  """
  def __init__(self, url, data=None, method='GET', auth=None, user=None, password=None, cookie = None, **header):
    """
    url: 请求的url,不能为空
    date: 需要post的内容,必须是字典
    method: Get 或者 Post,默认为Get
    auth: 'base' 或者 'cookie'
    user: 用于base认证的用户名
    password: 用于base认证的密码
    cookie: 请求附带的cookie,一般用于登录后的认证
    其他头信息:
    e.g. referer='www.sina.com.cn'
    """
    self.url = url
    self.data = data
    self.method = method
    self.auth = auth
    self.user = user
    self.password = password
    self.cookie = cookie
    if 'referer' in header:
        self.referer = header[referer]
    else:
        self.referer = None
    if 'user-agent' in header:
        self.user_agent = header[user-agent]
    else:
## self.user_agent = 'Mozilla/5.0 (Windows NT 5.1; rv:8.0) Gecko/20100101 Firefox/8.0'
        self.user_agent = 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16'
    self.__SetupRequest()
    self.__SendRequest()
  def __SetupRequest(self):
    if self.url is None or self.url == '':
        raise 'url 不能为空!'
    #访问方式设置
    if self.method.lower() == 'post':
        self.Req = urllib2.Request(self.url, urllib.urlencode(self.data))
    elif self.method.lower() == 'get':
        if self.data == None:
            self.Req = urllib2.Request(self.url)
        else:
            self.Req = urllib2.Request(self.url + '?' + urllib.urlencode(self.data))
    #设置认证信息
    if self.auth == 'base':
        if self.user == None or self.password == None:
            raise 'The user or password was not given!'
        else:
            auth_info = base64.encodestring(self.user + ':' + self.password).replace('\n','')
            auth_info = 'Basic ' + auth_info
            self.Req.add_header("Authorization", auth_info)
    elif self.auth == 'cookie':
        if self.cookie == None:
            raise 'The cookie was not given!'
        else:
            self.Req.add_header("Cookie", self.cookie)

    if self.referer:
        self.Req.add_header('referer', self.referer)
    if self.user_agent:
        self.Req.add_header('user-agent', self.user_agent)

  def __SendRequest(self):
    try:
      self.Res = urllib2.urlopen(self.Req)
      self.source = self.Res.read()
      self.code = self.Res.getcode()
      self.head_dict = self.Res.info().dict
      self.Res.close()
    except:
      print "Error: HttpWrapper=>_SendRequest ", sys.exc_info()[1]

  def GetResponseCode(self):
    """
    得到服务器返回的状态码(200表示成功,404网页不存在)
    """
    return self.code
  def GetSource(self):
    """
    得到网页源代码,需要解码后在使用
    """
    if "source" in dir(self):
        return self.source
    return u''
  def GetHeaderInfo(self):
    """
    u'得到响应头信息'
    """
    return self.head_dict
  def GetCookie(self):
    """
    得到服务器返回的Cookie,一般用于登录后续操作
    """
    if 'set-cookie' in self.head_dict:
      return self.head_dict['set-cookie']
    else:
      return None
  def GetContentType(self):
    """
    得到返回类型
    """
    if 'content-type' in self.head_dict:
      return self.head_dict['content-type']
    else:
      return None
  def GetCharset(self):
    """
    尝试得到网页的编码
    如果得不到返回None
    """
    contentType = self.GetContentType()
    if contentType is not None:
        index = contentType.find("charset")
        if index > 0:
           return contentType[index+8:]
    return None
  def GetExpiresTime(self):
    """
    得到网页过期时间
    """
    if 'expires' in self.head_dict:
      return self.head_dict['expires']
    else:
      return None
  def GetServerName(self):
    """
    得到服务器名字
    """
    if 'server' in self.head_dict:
      return self.head_dict['server']
    else:
      return None
__all__ = [SendRequest,]
if __name__ == '__main__':
    b = SendRequest("http://www.baidu.com")
    print b.GetSource()
Python 相关文章推荐
python实现跨文件全局变量的方法
Jul 07 Python
python判断数字是否是超级素数幂
Sep 27 Python
python 堆和优先队列的使用详解
Mar 05 Python
Python数据类型之Dict字典实例详解
May 07 Python
Python collections模块使用方法详解
Aug 28 Python
pygame编写音乐播放器的实现代码示例
Nov 19 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
Mar 19 Python
解决numpy矩阵相减出现的负值自动转正值的问题
Jun 03 Python
django模型类中,null=True,blank=True用法说明
Jul 09 Python
Python执行时间的几种计算方法
Jul 31 Python
Pycharm安装第三方库失败解决方案
Nov 17 Python
如何编写python的daemon程序
Jan 07 Python
python连接sql server乱码的解决方法
Jan 28 #Python
python定时检查启动某个exe程序适合检测exe是否挂了
Jan 21 #Python
Python实现的金山快盘的签到程序
Jan 17 #Python
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
Jan 17 #Python
Python高效编程技巧
Jan 07 #Python
Python内置函数bin() oct()等实现进制转换
Dec 30 #Python
python的id()函数解密过程
Dec 25 #Python
You might like
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
yii2 数据库读写分离配置示例
2017/02/10 PHP
PHP封装的PDO数据库操作类实例
2017/06/21 PHP
jQuery lazyload 的重复加载错误以及修复方法
2010/11/19 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
JS解决移动web开发手机输入框弹出的问题
2017/03/31 Javascript
自定义vue组件发布到npm的方法
2018/05/09 Javascript
js jquery 获取某一元素到浏览器顶端的距离实现方法
2018/09/05 jQuery
vue代码分割的实现(codesplit)
2018/11/13 Javascript
js array数组对象操作方法汇总
2019/03/18 Javascript
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
webpack 如何同时输出压缩和未压缩的文件的实现步骤
2020/06/05 Javascript
JS使用setInterval计时器实现挑战10秒
2020/11/08 Javascript
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
python 字符串格式化代码
2013/03/17 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
flask使用session保存登录状态及拦截未登录请求代码
2018/01/19 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
Python插入Elasticsearch操作方法解析
2020/01/19 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
HTML5实时语音通话聊天MP3压缩传输3KB每秒
2019/08/28 HTML / CSS
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
HTML5手机端弹出遮罩菜单特效代码
2016/01/27 HTML / CSS
逼真的HTML5树叶飘落动画
2016/03/01 HTML / CSS
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
什么是接口(Interface)?
2013/02/01 面试题
初三学生个人自我评定
2014/04/06 职场文书
小学校长竞聘演讲稿
2014/05/16 职场文书
立志成才演讲稿
2014/09/04 职场文书
高校群众路线教育实践活动剖析材料
2014/10/10 职场文书
2014年小学图书室工作总结
2014/12/09 职场文书
幼儿园教师个人总结
2015/02/05 职场文书