Python 定時獲取衛星圖像做為桌面背景
簡介
這兩天看新聞的時候,突然發現最近有個臺風產生,并且在不斷的增強中。幸運的是從中央氣象臺預報的路徑來看,不會登陸我國。也正是通過這則新聞,我發現了一個不錯的衛星云圖網站。(ps:這篇文章我去年寫的)
向日葵-8號實時網頁:http://himawari8.nict.go.jp/
簡單的介紹一下,向日葵-8號是日本氣象廳的一顆氣象衛星,于2014年10月7日發射。設計壽命15年以上,主要用于檢測暴雨云團、臺風動向和火山活動等防災領域。
因為是日本的網站,所以訪問的速度可能會比較慢。網頁截圖如下:向日葵-8號實時網頁
下面我將簡單的介紹一下如何將這個網站上定時更新的衛星云圖爬取下來,設置為自己的電腦桌面。這樣每時每刻你都可以關注到太平洋上空的動態了。哈哈哈哈~
實現思路
1. 獲取衛星云圖
由于這個是日本的網站,所以訪問的速度可能會有點慢。但是只要能夠正常訪問就都不是問題。首先對這個網站進行分析,可以打開firebug分析一下。通過分析可知,只要獲取圖片的鏈接,用get方法就能夠直接下載到本地了。因此要獲取這個網站的圖片是非常的簡單的,如果會一點python爬蟲知識,很容易就能夠將這張圖片爬取下來。選擇就是具體的分析一下圖片的鏈接是這么組成的呢?
例如鏈接:http://himawari8-dl.nict.go.jp/himawari8/img/D531106/thumbnail/550/2018/09/26/063000_0_0.png
鏈接分析表
好了,通過上面的分析,我們其實只要修改**衛星圖像日期**和**衛星圖像時間**就可以獲取你想要的時間段的衛星圖像圖片了。但是要注意的是,你不可能獲取未來的圖片。
接下來貼上程序:
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
#
# @Version : 1.0
# @Time????: 2018/9/25
# @Author??: 圈圈烴
# @File????: NICT_download
# @Description: http://himawari8.nict.go.jp/ 向日葵8號衛星實時圖片下載
#
#
from PIL import Image
import requests
import re
import datetime
def download_img(url, img_save_path):
img = requests.get(url)
with open(img_save_path, "wb") as fwi:
fwi.write(img.content)
print(img_save_path + "圖片下載成功")
def fill_img(img, img_save_path):
width, height = 1920, 1080??????# 電腦屏幕大小
new_img = Image.new(img.mode, (width, height), color='black')
new_img.paste(img, (int(width/2 - 250), int(height/2 - 250)))
new_img.save(img_save_path)
print(img_save_path + "圖片合成成功")
def dl_main():
# 獲取當前系統時間
utc_today = datetime.datetime.utcnow() - datetime.timedelta(minutes=30)??# 獲取GMT時間并減去30分鐘
delat_utc_today = utc_today.strftime("%Y/%m/%d/%H%M")??# 時間格式化
# 分鐘向下取整
delat_utc_today_list = list(delat_utc_today)
delat_utc_today_list[-1] = "0"
delat_utc_today = "".join(delat_utc_today_list)
# 整合為鏈接 格式為:http://himawari8-dl.nict.go.jp/himawari8/img/D531106/1d/550/2018/09/25/065000_0_0.png
img_url = "http://himawari8-dl.nict.go.jp/himawari8/img/D531106/1d/550/" + delat_utc_today + "00_0_0.png"
name = delat_utc_today.replace("/", "_") + "00_0_0.png"??# 獲取圖片名字
# 圖片保存路徑
img_save_path = "Download_Picture/" + name
new_img_save_path = "Wallpaper/new_" + name
# 下載圖片
download_img(img_url, img_save_path)
# 合成圖片
img = Image.open(img_save_path)
fill_img(img, new_img_save_path)
return new_img_save_path
if __name__ == '__main__':
dl_main()
2. 設置桌面背景
成功獲取圖片之后就是將獲取的圖片設置為左面的壁紙了,我的系統是win10,親測可用。
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
#
# @Version : 1.0
# @Time????: 2018/9/25
# @Author??: 圈圈烴
# @File????: Auto_Wallpaper
# @Description: 自動設置桌面壁紙
#
#
import win32api, win32con, win32gui
import NICT_Download
def set_desktop_windows(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)
if __name__ == '__main__':
print("正在下載圖片")
try:
new_img_save_path = NICT_Download.dl_main()
except Exception as e:
print(e)
# 這里的路徑必須為絕對路徑
wallpaper_path = "D:\\Users\\Administrator\\Documents\\Python Files\\Auto_Background\\" + new_img_save_path
set_desktop_windows(wallpaper_path)
3. 開啟定時更新
為了實現能夠定時更新桌面的衛星圖像,我們需要設置定時任務。通過分析可知,[向日葵-8號實時網頁](http://himawari8.nict.go.jp/)每隔10分鐘會更新圖片,所以我們也設置為10分鐘更新一次。
詳見我的視頻:
“
【我教你系列】想要實時的地球圖像作為桌面?我教你
”