概述
為什麼會突然寫這樣的一個腳本呢?因為今天同僚突然說到:宇宙這麼大,我們人這麼渺小,那麼在别人眼裡我們的地球是什麼樣子的?問到這個話題我想很多人都會想起地球儀或者一系列的電視劇!藍白相間是吧!是以今天實時擷取地球衛星圖,設定為咱們的電腦桌面,這樣就可以無時無刻看到它的變化!廢話不多說,讓我們愉快地開始吧~
開搞
開發工具
Python版本:3.6.4
相關子產品:
requests子產品;
pywin32子產品;
安裝這些子產品就不用多說了吧!直接pip就可以了!每次怕新手不會,是以多說一些哈!
原理
首先,我們需要爬取目前的地球衛星圖,然後再把爬取到的地球衛星圖設為桌面背景,最後實作每隔一段時間重複以上兩個步驟。
OK,理清思路就可以開始幹了~
這裡,我們選擇從日本himawari-8氣象衛星官網爬取地球衛星圖:
http://himawari8.nict.go.jp/
簡單抓包可以發現某時刻的地球衛星圖網頁連結如下圖所示:
即構成規則為:
http://himawari8-dl.nict.go.jp/himawari8/img/D531106/1d/550/ + GMT時間_0_0.png
注意,某時刻的地球衛星圖更新到該網站上是有時延的(約一小時),且每隔十分鐘更新一張新拍到的地球衛星圖,是以我們的爬蟲代碼實作如下:
'''爬取桌面'''
def crawlWallpaper(cache_dir='download'):
checkDir(cache_dir)
url_base = 'http://himawari8-dl.nict.go.jp/himawari8/img/D531106/1d/550/'
date = datetime.datetime.utcnow().strftime('%Y/%m/%d/')
# 衛星圖更新到網站上是有時延的
hour = str(int(datetime.datetime.utcnow().strftime('%H')) - 1).zfill(2)
minute = str(datetime.datetime.utcnow().strftime('%M'))[0] + '0'
second = '00'
ext = '_0_0.png'
picture_url = url_base + date + hour + minute + second + ext
res = requests.get(picture_url)
with open(os.path.join(cache_dir, 'cache_wallpaper.png'), 'wb') as f:
f.write(res.content)
OK,現在我們已經爬取到了算是“最新”的地球衛星圖了,接下來就是調用pywin32子產品實作自動換電腦桌面功能了。具體而言,代碼實作如下:
'''換桌面'''
def setWallPaper(imagepath='download/cache_wallpaper.png'):
keyex = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER, "Control Panel\\Desktop", 0, win32con.KEY_SET_VALUE)
win32api.RegSetValueEx(keyex, "WallpaperStyle", 0, win32con.REG_SZ, "0")
win32api.RegSetValueEx(keyex, "TileWallpaper", 0, win32con.REG_SZ, "0")
win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, imagepath, win32con.SPIF_SENDWININICHANGE)
最後,如何讓電腦每隔十分鐘就運作一次上面的程式呢?
寫個死循環?那好像有點蠢?
其實我們隻需要在windows上設定個定時任務就可以啦~下面以win10為例說明設定方式:
① 打開任務計劃程式
注:win+R鍵,然後輸入taskschd.msc回車運作就行了~
② 建立任務
③ 建立觸發器
④ 建立操作
最後點選确定就OK啦~
注:把寫好.py檔案字尾改成.pyw就得到earchWallpaper.pyw檔案了
效果
是真的很美,希望能有機會能親眼看一下這樣的地球,就像宇航員那樣!說不定上去一趟還能治好我的脫發問題!
需要完整代碼,教程的
①兼職交流,行業咨詢、大佬線上專業解答
②Python開發環境安裝教程
③Python400集自學視訊
④軟體開發常用詞彙
⑤Python學習路線圖
⑥3000多本Python電子書
如果你用得到的話可以直接拿走,點選領取。不友善點連結的加群:948351247