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 相关文章推荐
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
Dec 04 Python
python实现ftp客户端示例分享
Feb 17 Python
Python检测字符串中是否包含某字符集合中的字符
May 21 Python
Python中多线程的创建及基本调用方法
Jul 08 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
Apr 18 Python
python基础_文件操作实现全文或单行替换的方法
Sep 04 Python
python实现图片批量压缩程序
Jul 23 Python
python os模块简单应用示例
May 23 Python
python2.7使用scapy发送syn实例
May 05 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
Jun 24 Python
Python3爬虫中关于中文分词的详解
Jul 29 Python
用Python实现屏幕截图详解
Jan 22 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调用MySQL的存储过程的实现代码
2008/08/12 PHP
分享一个php 的异常处理程序
2014/06/22 PHP
javascript间隔定时器(延时定时器)学习 间隔调用和延时调用
2014/01/13 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
js jquery获取当前元素的兄弟级 上一个 下一个元素
2015/09/01 Javascript
小白谈谈对JS原型链的理解
2016/05/03 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
详细谈谈javascript的对象
2016/07/31 Javascript
简单实现JS上传图片预览功能
2017/04/14 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
JavaScript实现开关等效果
2017/09/08 Javascript
JavaScrip关于创建常量的知识点
2017/12/07 Javascript
关于axios不能使用Vue.use()浅析
2018/01/12 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
vue添加axios,并且指定baseurl的方法
2018/09/19 Javascript
初探Vue3.0 中的一大亮点Proxy的使用
2018/12/06 Javascript
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
2021/02/11 Vue.js
[08:47]DOTA2每周TOP10 精彩击杀集锦vol.6
2014/06/25 DOTA
使用IPython来操作Docker容器的入门指引
2015/04/08 Python
Python中random模块生成随机数详解
2016/03/10 Python
python web框架 django wsgi原理解析
2019/08/20 Python
Python算法的时间复杂度和空间复杂度(实例解析)
2019/11/19 Python
python如何通过pyqt5实现进度条
2020/01/20 Python
Python实现AI自动抠图实例解析
2020/03/05 Python
Python爬取微信小程序通用方法代码实例详解
2020/09/29 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
Expedia马来西亚旅游网站:廉价酒店,度假村和航班预订
2016/07/26 全球购物
大学班级文化建设方案
2014/05/06 职场文书
社区先进事迹材料
2014/05/19 职场文书
单位授权委托书范本
2014/09/26 职场文书
自主招生学校推荐信
2014/09/26 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
社会实践活动报告
2015/02/05 职场文书