每日设置Bing首页图片为壁纸

  看腻了每日一成不变的壁纸,希望每天都能有个未知的壁纸可以期待。

      所以我打算做一个小工具来实现此目的。

  于是乎便有了本文。

  本文大代码是从几个地方搜索,然后组合的。

  我所做的工作就是:

    1. 将网上的Python3的代码修改成Python2的;

    2. 改变下载的Bing首页图片的命名规则,防止图片大量重复和日后查找;

    3. 将下载壁纸和设置壁纸的代码组合在一起

    4. 用Py2exe打包成可执行文件

    5. 将可执行文件的快捷方式设置为开机启动

  结果:每一次开机,程序都会自动将Bing首页的图片下载下来并设置为壁纸。

  推广:可以自己建立一个图片文件夹存放收藏的图片,定时更换图片文件夹中的图片为壁纸。

  

  其中设置开机自动运行是将程序的快捷键方式放到  “开始” 目录下的 ”启动“文件夹内。

  一台windows往往不止有一个这也的 “启动文件夹”,因很多电脑不止有一个用户。

  ...AppDataRoamingMicrosoftWindowsStart MenuProgramsStartup

  或者

  C:ProgramDataMicrosoftWindowsStart MenuProgramsStartUp

  在设置壁纸部分,用到了Image模块。这是它的下载地址,

  http://www.pythonware.com/products/pil/

  下载好后只需要点击exe即可安装Image。

  完整代码:

  

# -*- coding: utf-8 -*-

import urllib
import os  
import time

url = 'http://cn.bing.com'  
urlFile = urllib.urlopen(url)  
data = urlFile.read()  
urlFile.close()  
data = data.decode('utf-8',errors='ignore')  
  
pre = u'g_img={url: "'  
urlstart = data.find(pre) + len(pre)  
urlend = data.find(u'",id:', urlstart)  
imgUrl = data[urlstart : urlend]  
  
preImg = u'<a id="sh_cp" class="sc_light" title="'  
imgnameStart = data.find(preImg) + len(preImg)  
imgnameend = data.find('" alt="', imgnameStart)  
#print("start:"+str(imgnameStart))  
#print("end:"+str(imgnameend))  
imgName = data[imgnameStart : imgnameend] 
#imgName=imgName.replace("©".encode("utf-8"),"")  
imgName=imgName.replace("/"," ")  

now_time = [ i for i in time.localtime()] # 获取时间
# 以下载时间为文件名
tmp_name = str(now_time[0]) + str(now_time[1]) + str(now_time[2])
imgName="F:\BingImageForWallpaper\" + tmp_name  +u'.jpg' 

print("imgUrl: " + imgUrl)  
print("imgName: " + imgName )  


print('Download image......')  
urllib.urlretrieve(imgUrl, imgName)  
print('Download complete')  
#os.startfile(imgName)  


################################################################
##      以上为下载Bing首页图片部分,以下为设置壁纸部分        ##
################################################################
  
import Image  
import win32api,win32con,win32gui  
import re,os  
  
def set_wallpaper_from_bmp(bmp_path):  
    #打开指定注册表路径  
    reg_key = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control Panel\Desktop",0,win32con.KEY_SET_VALUE)  
    #最后的参数:2拉伸,0居中,6适应,10填充,0平铺  
    win32api.RegSetValueEx(reg_key, "WallpaperStyle", 0, win32con.REG_SZ, "2")  
    #最后的参数:1表示平铺,拉伸居中等都是0  
    win32api.RegSetValueEx(reg_key, "TileWallpaper", 0, win32con.REG_SZ, "0")  
    #刷新桌面  
    win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER,bmp_path, win32con.SPIF_SENDWININICHANGE)  
  
def set_wallpaper(img_path):  
    #把图片格式统一转换成bmp格式,并放在源图片的同一目录  
    img_dir = os.path.dirname(img_path)  
    bmpImage = Image.open(img_path)  
    new_bmp_path = os.path.join(img_dir,'wallpaper.bmp')  
    bmpImage.save(new_bmp_path, "BMP")  
    set_wallpaper_from_bmp(new_bmp_path)  
  
if __name__ == '__main__':  
    set_wallpaper(imgName)  
    import sys
    sys.exit()

  2016-11-30

  

原文地址:https://www.cnblogs.com/zhangte/p/6119197.html