JimenezLi

JimenezLi

Average Minecraft Modder
github

Windows 下自動編輯桌面壁紙

我想要寫一個程式,每天給桌面壁紙添加一張 xkcd 的漫畫。於是我做了以下一系列事情,成功實現了功能。

編寫 Python 腳本#

使用爬蟲獲取 xkcd 漫畫#

xkcd 網站的結構比較簡單,只需要在 HTML 中找出 comic 圖像連結即可。使用程式碼如下:

url = 'https://xkcd.com/'

try:
    # 使用 requests 庫獲取網頁
    r = requests.get(url)
    r.raise_for_status()
    r.encoding = r.apparent_encoding

    # 使用 bs4.BeautifulSoup 解析 HTML
    soup = BeautifulSoup(r.text, 'lxml')
    imgs = soup.find_all('img')

    # 在各個圖片連結中找到 xkcd 漫畫連結
    for i in imgs:
        src = str(i.get('src'))
        if '/comics/' in src:
            if src.startswith('//'):
                src = 'https:' + src

            # 獲取並保存漫畫圖片
            imgfile = requests.get(src)
            imgfile.raise_for_status()
            with open('./resources/xkcd.jpg', 'wb') as f:
                f.write(imgfile.content)
                f.close()
            print('獲取 xkcd 漫畫成功')
            break
    else:
        raise Exception(f'在 {url} 中未找到漫畫')

# 出現異常時保存異常信息
except Exception as e:
    print('獲取 xkcd 漫畫失敗')
    with open(f'crash.log', 'a') as f:
        # current_date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        print(f'[{current_date}]:', e, file=f)
        f.close()

使用 PIL 圖像處理庫編輯壁紙#

也可以用其他的圖像處理庫,如 OpenCV。

# 打開背景
wallpaper = Image.open('./resources/background.jpg')

# 打開 xkcd 漫畫
xkcd = Image.open('./resources/xkcd.jpg')
wallpaper_xkcd = xkcd.resize((2 * xkcd.width, 2 * xkcd.height)).convert('RGB')
# 我這裡設置將 xkcd 漫畫放到壁紙右上角
wallpaper.paste(wallpaper_xkcd, box=(wallpaper.width * 15 // 16 - wallpaper_xkcd.width, wallpaper.height // 16))

# 保存壁紙
with open('./wallpaper.jpg', 'wb') as f:
    wallpaper.save(f)
    f.close()

使用 Windows API 更換壁紙#

要找到需要的 Windows API 對我來說是一件困難的事情,我這裡求助了文心一言。也可以用 ChatGPT。

win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, os.path.join(script_path, 'wallpaper.jpg'))

預覽效果如下圖,可以看到壁紙右上角添加了一張 xkcd 漫畫。
wallpaper.jpg

將腳本添加到 Windows 任務#

程式設置完成後,要想定時執行,還需要添加到 Windows 任務。
使用 Windows 的搜索功能(快捷鍵:Windows+Q)找到 “任務計劃程序”。點擊右側 “操作” 中的 “創建任務” 進行設置。具體設置方法見參考資料中的 “windows 定時運行 exe 文件”。
任務計劃程序

設置觸發器#

一定要設置觸發器,否則任務不知道應該在什麼時間執行。我設置為每天 23:00 執行。
觸發器

設置操作時的參數#

  • 程序或腳本:如果你的系統安裝了 python,“程序或腳本” 一欄可以寫 python,也可以寫 python.exe 的路徑。
  • 添加參數:“添加參數” 只需要寫腳本的路徑。(實際上可以都寫到 “程序或腳本” 一欄,系統會自動劃分參數)
  • 起始於:一定要寫,否則程式可能不會正確執行。這個參數設置為腳本的路徑。

這樣就實現了 Windows 下自動編輯桌面壁紙。

參考資料#

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。