用python每日更换“必应图片”为“桌面壁纸”

使用python脚本每天更换必应图片为桌面壁纸,这对于许多学生来说是一个非常实用的功能。必应每天都会推出新的壁纸,这些壁纸不仅美丽,而且有时还会根据不同地区的特色进行定制。

那么,如何让你的电脑每天自动更新必应的每日图片作为桌面背景呢?

以下是使用Python脚本获取必应每日图片并实现桌面壁纸自动切换的方法。

思路整理:

  1. 从网页中获取图片地址
  2. 将图片保存到指定的绝对路径
  3. 将该路径的图片设置为桌面壁纸
  4. 使用批处理实现壁纸的自动切换

需要用到的Python模块如下:

立即学习“Python免费学习笔记(深入)”;

import urllib.request
import requests
import os.path
import ctypes

第一步:获取图片地址

此函数主要通过requests模块,从必应的网页地址获取当日图片的最终URL。

# 请求网页,获取最终图片URL
def get_img_url(raw_img_url="https://area.sinaapp.com/bingImg/"):
    r = requests.get(raw_img_url)
    img_url = r.url  # 获取图片文件的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.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("保存", filepath, "成功!")
    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任务计划程序,设置每天在特定时间运行批处理程序。

获取完整源码,链接如下:

必应壁纸自动更新:

链接:https://pan.baidu.com/s/16GsSbfyLICRvX3o2OnkjkA

提取码:7x48

-END-