代碼如下:
# -*- 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 + "http://%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')
新聞熱點
疑難解答