每天换一个壁纸,每天好心情。
# -*- 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()
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com