python设置windows桌面壁纸的实现代码
admin
2023-07-31 02:03:06
0

复制代码 代码如下:
# -*- 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(\'

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()

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python绘图库Matplo... 本文简单介绍了Python绘图库Matplotlib的安装,简介如下: matplotlib是pyt...
Prometheus+Graf... 一,Prometheus概述 1,什么是Prometheus?Prometheus是最初在Sound...