生活随笔
收集整理的這篇文章主要介紹了
python实现抓取必应图片设置桌面
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
源碼參考https://github.com/vbirds/pyWallpaper,代碼風(fēng)格不錯(cuò)
本人只是將其適配到python3.5,并消除一些bug,源代碼中桌面地址未使用絕對(duì)路徑導(dǎo)致win10 下無法成功設(shè)置桌面
#python: 3.5
#os: win10 home
#-*-coding:utf-8-*- from PIL
import Image
import win32gui
import win32con
import win32api
import os
import threading
import urllib.request
import time
import sys
import json'''
{"images":[{"startdate":"20170827","fullstartdate":"201708271600","enddate":"20170828","url":"/az/hprichbg/rb/BotallackCornwall_ZH-CN11396172846_1920x1080.jpg","urlbase":"/az/hprichbg/rb/BotallackCornwall_ZH-CN11396172846","copyright":"康沃爾郡內(nèi)的巴特萊克礦場(chǎng), 英國(guó) (? Robert Harding/Masterfile)","copyrightlink":"http://www.bing.com/search?q=botallack+manor&form=hpcapt&mkt=zh-cn","quiz":"/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20170827_BotallackCornwall%22&FORM=HPQUIZ","wp":true,"hsh":"5eb81f1029c57dfa1cc5f69ca871f4b1","drk":1,"top":1,"bot":1,"hs":[]}],"tooltips":{"loading":"正在加載...","previous":"上一個(gè)圖像","next":"下一個(gè)圖像","walle":"此圖片不能下載用作壁紙。","walls":"下載今日美圖。僅限用作桌面壁紙。"}
}
'''class Wallpaper:def __init__(self, time=60
):self.count =
0if time <=
0 :self.time = 60
self.time =
timeself.urltemplate =
'http://cn.bing.com/HPImageArchive.aspx?format=js&idx=%d&n=1&nc=1361089515117&FORM=HYLH1'self.baImageUrlList =
[]self.localFileName =
''self.localBMPFileName =
''self.imagedir =
'./images/'self.bmpdir =
'./bmpimage/'self.bmplist =
[]def start(self):self.prepareDir()self.parserImageUrl()self.download_images()self.image_convert_bmp()self.set_wall_func()def prepareDir(self):if not os.path.exists(self.imagedir):os.makedirs(self.imagedir)if not os.path.exists(self.bmpdir):os.makedirs(self.bmpdir)def parserImageUrl(self):for i
in range(0, 7, 1
):url = self.urltemplate % i
#use i replace format try:content = urllib.request.urlopen(url,None).read().decode(
"utf-8")
# 由于有中文,decode("utf-8")必須except:print(url)print(
"parse try again")decodedjson =
json.loads(content)imageurl = decodedjson[
'images'][0][
'url']self.baImageUrlList.append('https://cn.bing.com'+
imageurl)def download_images(self):for url
in self.baImageUrlList:imagename =
os.path.basename(url)imagepath = self.imagedir +
imagenameprint(imagepath)f = open(imagepath,
'wb')try:conn =
urllib.request.urlopen(url)except:print(url)print(
"download try again")f.write(conn.read())f.close()def image_convert_bmp(self):imaglist =
os.listdir(self.imagedir)for imagepath
in imaglist:file_name =
os.path.basename(imagepath)file_name_type =
os.path.splitext(file_name)file_name =
file_name_type[0]newpath = self.bmpdir + file_name +
'.bmp'imagepath =
'./images/' +
imagepathbmpImage =
Image.open(imagepath)bmpImage.save(newpath, "BMP")self.bmplist.append(sys.path[0]+
'\\bmpimage\\'+file_name +
'.bmp')def setWallpaper(self, 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拉伸適應(yīng)桌面,0桌面居中win32api.RegSetValueEx(k,
"TileWallpaper", 0, win32con.REG_SZ,
"0")print(imagepath)win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER,imagepath, 1+2)
#文件需要使用完整路徑def set_wall_func(self):list_size =
len(self.bmplist)index = self.count %
list_sizefilename =
self.bmplist[index]self.count += 1
self.setWallpaper(filename)self.set_wall_timer()def set_wall_timer(self):timer =
threading.Timer(self.time, self.set_wall_func)timer.start()if __name__ ==
'__main__':bing = Wallpaper(300
)bing.start() ?
轉(zhuǎn)載于:https://www.cnblogs.com/hixin/p/7444214.html
總結(jié)
以上是生活随笔為你收集整理的python实现抓取必应图片设置桌面的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。