[Python] 抓取必應每日一圖,設定為桌面桌布
阿新 • • 發佈:2019-01-29
在Windows 10 64位系統環境下,使用 Python 3.6 進行圖片抓取和設定桌布操作。
其中,圖片連結 https://area.sinaapp.com/bingImg/ 為 Bing 每日一圖的地址,解析可以獲得圖片檔案的地址,下載即可。之後使用 ctypes 工具進行桌布設定。頗為簡單。結合 AHK (auto hot key) 可以用快捷按鍵的方式執行指令碼更新桌布。頗為方便。 :)
SetBingImgAsWallpaper.py
"""
程式功能:抓取必應每日一圖,設定為桌面桌布
"""
import urllib.request
import requests
import os.path
import ctypes
def save_img(img_url,dirname):
#儲存圖片到磁碟資料夾dirname中
try:
if not os.path.exists(dirname):
print ('資料夾',dirname,'不存在,重新建立')
#os.mkdir(dirname)
os.makedirs(dirname)
#獲得圖片檔名,包括字尾
basename = os.path.basename(img_url)
#拼接目錄與檔名,得到圖片路徑
filepath = os.path.join(dirname, basename)
#下載圖片,並儲存到資料夾中
urllib.request.urlretrieve(img_url,filepath)
except IOError as e:
print ('檔案操作失敗',e)
except Exception as e:
print ('錯誤 :',e)
print("Save", filepath, "successfully!")
return filepath
# 請求網頁,跳轉到最終 img 地址
def get_img_url(raw_img_url = "https://area.sinaapp.com/bingImg/"):
r = requests.get(raw_img_url)
img_url = r.url # 得到圖片檔案的網址
print('img_url:', img_url)
return img_url
# 設定圖片絕對路徑 filepath 所指向的圖片為桌布
def set_img_as_wallpaper(filepath):
ctypes.windll.user32.SystemParametersInfoW(20, 0, filepath, 0)
def main():
dirname = "E:\\Pictures\\bingImg" # 圖片要被儲存在的位置
img_url = get_img_url()
filepath = save_img(img_url, dirname) # 圖片檔案的的路徑
set_img_as_wallpaper(filepath)
main()
MyScript.ahk
;Ctrl + Alt + P 快捷鍵執行SetBingImgAsWallpaper.py指令碼設定桌布為Bing每日一圖(需要在聯網狀態執行)
^!P::
Run python SetBingImgAsWallpaper.py
Return