Python实现设置windows桌面壁纸代码分享
每天换一个壁纸,每天好心情。
#-*-coding:UTF-8-*-
from__future__importunicode_literals
importImage
importdatetime
importwin32gui,win32con,win32api
importre
fromHttpWrapperimportSendRequest
StoreFolder="c:\\dayImage"
defsetWallpaperFromBMP(imagepath):
k=win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"ControlPanel\\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)
defsetWallPaper(imagePath):
"""
Givenapathtoanimage,convertittobmpandsetitaswallpaper
"""
bmpImage=Image.open(imagePath)
newPath=StoreFolder+'\\mywallpaper.bmp'
bmpImage.save(newPath,"BMP")
setWallpaperFromBMP(newPath)
defgetPicture():
url="http://photography.nationalgeographic.com/photography/photo-of-the-day/"
h=SendRequest(url)
ifh.GetSource():
r=re.findall('<divclass="download_link"><ahref="(.*?)">Download',h.GetSource())
ifr:
returnSendRequest(r[0]).GetSource()
else:
print"解析图片地址出错,请检查正则表达式是否正确"
returnNone
defsetWallpaperOfToday():
img=getPicture()
ifimg:
path=StoreFolder+"\\%s.jpg"%datetime.date.today()
f=open(path,"wb")
f.write(img)
f.close()
setWallPaper(path)
setWallpaperOfToday()
print'Wallpapersetok!'
其中的httpwrapper是我写的一个http访问的封装:
#!/usr/bin/envpython
#-*-coding:UTF-8-*-
#-------------------------------------------------------------------------------
#Name:对http访问的封装
#
#Author:qianlifeng
#
#Created:10-02-2012
#-------------------------------------------------------------------------------
importbase64
importurllib
importurllib2
importtime
importre
importsys
classSendRequest:
"""
网页请求增强类
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'inheader:
self.referer=header[referer]
else:
self.referer=None
if'user-agent'inheader:
self.user_agent=header[user-agent]
else:
##self.user_agent='Mozilla/5.0(WindowsNT5.1;rv:8.0)Gecko/20100101Firefox/8.0'
self.user_agent='Mozilla/5.0(iPhone;U;CPUiPhoneOS3_0likeMacOSX;en-us)AppleWebKit/528.18(KHTML,likeGecko)Version/4.0Mobile/7A341Safari/528.16'
self.__SetupRequest()
self.__SendRequest()
def__SetupRequest(self):
ifself.urlisNoneorself.url=='':
raise'url不能为空!'
#访问方式设置
ifself.method.lower()=='post':
self.Req=urllib2.Request(self.url,urllib.urlencode(self.data))
elifself.method.lower()=='get':
ifself.data==None:
self.Req=urllib2.Request(self.url)
else:
self.Req=urllib2.Request(self.url+'?'+urllib.urlencode(self.data))
#设置认证信息
ifself.auth=='base':
ifself.user==Noneorself.password==None:
raise'Theuserorpasswordwasnotgiven!'
else:
auth_info=base64.encodestring(self.user+':'+self.password).replace('\n','')
auth_info='Basic'+auth_info
self.Req.add_header("Authorization",auth_info)
elifself.auth=='cookie':
ifself.cookie==None:
raise'Thecookiewasnotgiven!'
else:
self.Req.add_header("Cookie",self.cookie)
ifself.referer:
self.Req.add_header('referer',self.referer)
ifself.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]
defGetResponseCode(self):
"""
得到服务器返回的状态码(200表示成功,404网页不存在)
"""
returnself.code
defGetSource(self):
"""
得到网页源代码,需要解码后在使用
"""
if"source"indir(self):
returnself.source
returnu''
defGetHeaderInfo(self):
"""
u'得到响应头信息'
"""
returnself.head_dict
defGetCookie(self):
"""
得到服务器返回的Cookie,一般用于登录后续操作
"""
if'set-cookie'inself.head_dict:
returnself.head_dict['set-cookie']
else:
returnNone
defGetContentType(self):
"""
得到返回类型
"""
if'content-type'inself.head_dict:
returnself.head_dict['content-type']
else:
returnNone
defGetCharset(self):
"""
尝试得到网页的编码
如果得不到返回None
"""
contentType=self.GetContentType()
ifcontentTypeisnotNone:
index=contentType.find("charset")
ifindex>0:
returncontentType[index+8:]
returnNone
defGetExpiresTime(self):
"""
得到网页过期时间
"""
if'expires'inself.head_dict:
returnself.head_dict['expires']
else:
returnNone
defGetServerName(self):
"""
得到服务器名字
"""
if'server'inself.head_dict:
returnself.head_dict['server']
else:
returnNone
__all__=[SendRequest,]
if__name__=='__main__':
b=SendRequest("http://www.baidu.com")
printb.GetSource()