Python實用案例,Python指令碼,Python實現每日更換“必應圖片”為“桌面桌布”
往期回顧
前言:
今天我們就利用python指令碼實現每日更換“必應圖片”為“桌面桌布”。直接開整~
效果展示
思路整理
1、通過網頁,獲取圖片地址
2、儲存圖片到絕對路徑
3、設定該絕對路徑所指向的圖片為桌布
4、批處理桌布自動切換
需要用到的模組如下:
import urllib.request
import requests
import os.path
import ctypes
第一、獲取圖片地址
這個函式主要通過requests模組,根據必應的網頁地址,獲取到當日圖片的最終img地址。
# 請求網頁,跳轉到最終 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
第二、儲存圖片到本地
這個函式的作用就是把圖片儲存到你自己設定的一個目錄下,並返回當前目錄的絕對地址。
def save_img(img_url, dirname): # 儲存圖片到磁碟資料夾dirname中 try: if not os.path.exists(dirname): print('資料夾', dirname, '不存在,重新建立') # os.mkdir(dirname) os.makedirs(dirname) # 獲得圖片檔名,包括字尾 basename = "bing.jpg" # 拼接目錄與檔名,得到圖片路徑 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
第三、設定該絕對路徑所指向的圖片為桌布
通過之前獲得的圖片所在的絕對路徑,把該圖片設定為桌面桌布。
def set_img_as_wallpaper(filepath):
ctypes.windll.user32.SystemParametersInfoW(20, 0, filepath, 0)
第四、執行程式碼的main函式
def main(): dirname = "D:\\bingImg" # 圖片要被儲存在的位置 img_url = get_img_url() filepath = save_img(img_url, dirname) # 圖片檔案的路徑 set_img_as_wallpaper(filepath)
執行效果(此時,可以回看一下文章首圖中的左上角那張圖片)
第五、批處理自動更換桌布
此時,可以在python指令碼的同一目錄下建立名為py_bingying.bat的批處理檔案,批處理內容如下:
@echo off
del g:\bingImg\*.jpg
python SetBingImgAsWallpaper.py
第二行在執行python指令碼前先刪除前一天下載的必應圖片,這樣就實現了舊桌布的每日清理,最大限度節省了儲存空間。第三行為執行上面的python指令碼。
如何實現桌布的自動切換呢,這裡採用開機執行上面的批處理程式的方法。
複製上面建立的批處理檔案,到下方目錄下,右鍵-貼上為快捷方式。這樣就實現了開機啟動批處理程式,自動清除和更新桌布。
C:\User\yourname\AppData\Roaming\Microsoft\Windows\開始選單\程式\啟動每次開機都執行一遍更換桌布的操作還不夠完美的話,可以用Windows任務計劃程式來新增任務,設定每天指定時間點執行批處理程式。
文章到這裡就結束了,感謝你的觀看,Python實用腳本系列,下篇文章分享Python 批量加水印
為了感謝讀者們,我想把我最近收藏的一些程式設計乾貨分享給大家,回饋每一個讀者,希望能幫到你們。
乾貨主要有:
① 2000多本Python電子書(主流和經典的書籍應該都有了)
② Python標準庫資料(最全中文版)
③ 專案原始碼(四五十個有趣且經典的練手專案及原始碼)
④ Python基礎入門、爬蟲、web開發、大資料分析方面的視訊(適合小白學習)
⑤ Python學習路線圖(告別不入流的學習)
⑥ 兩天的Python爬蟲訓練營直播許可權
All done~詳見個人簡介或者私信獲取完整原始碼。。