使用Python下载Bing每日一图并设置为壁纸
简介
Bing搜索引擎每天都会展示一张精美的图片,这些图片不仅美丽,而且常常包含有趣的信息。想象一下,每天打开电脑,都能看到这样的美景,是不是很棒呢?本文将介绍如何使用Python脚本自动化下载Bing每日一图,并将其设置为我们的桌面壁纸。
环境准备
在开始之前,请确保你的计算机上安装了Python。此外,我们还需要安装requests
库,它是一个简单易用的HTTP库,用于发送HTTP请求。可以通过以下命令安装:
pip install requests
获取Bing图片信息
Bing提供了一个API端点,我们可以通过它获取每日一图的信息。请求该端点并解析返回的JSON数据,我们可以得到图片的URL。
接口地址为
https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN
返回如下
"images": [
{
"startdate": "20240707",
"fullstartdate": "202407071600",
"enddate": "20240708",
"url": "/th?id=OHR.NorwayBlueberries_ZH-CN7643097235_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp",
"urlbase": "/th?id=OHR.NorwayBlueberries_ZH-CN7643097235",
"copyright": "野生蓝莓 (© Baac3nes/Getty Images)",
"copyrightlink": "https://www.bing.com/search?q=%E8%93%9D%E8%8E%93&form=hpcapt&mkt=zh-cn",
"title": "一剂抗氧化剂",
"quiz": "/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20240707_NorwayBlueberries%22&FORM=HPQUIZ",
"wp": true,
"hsh": "e7f4b629c0f148a98c69665806ab3e12",
"drk": 1,
"top": 1,
"bot": 1,
"hs": [
]
}
],
"tooltips": {
"loading": "正在加载...",
"previous": "上一个图像",
"next": "下一个图像",
"walle": "此图片不能下载用作壁纸。",
"walls": "下载今日美图。仅限用作桌面壁纸。"
}
}
其中图片的地址就是 "url" 部分,前面要加上 域名 "https://cn.bing.com",
本例中就是
https://cn.bing.com/th?id=OHR.NorwayBlueberries_ZH-CN7643097235_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp
Python脚本编写
下面是一个简单的Python脚本,用于下载Bing每日一图并设置为壁纸。
api_url = "https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN"
response = requests.get(api_url)
data = response.json()
print(f"Bing 接口返回 : {data}")
下载图片
使用requests
库,我们可以轻松地将图片保存到本地。
# 下载图片并保存
image_url = "https://cn.bing.com" + image_json['images'][0]['url']
response = requests.get(image_url)
if response.status_code == 200:
with open(save_path, 'wb') as f:
f.write(response.content)
print(f"图片已下载到: {save_path}")
else:
print("图片下载失败,状态码:", response.status_code)
设置壁纸
在Windows上,我们可以使用ctypes
库来调用系统API设置壁纸。
# 设置壁纸
try:
ctypes.windll.user32.SystemParametersInfoW(20, 0, save_path, 3)
print("壁纸设置成功")
except Exception as e:
print("设置壁纸失败:", e)
完整代码
import os
import requests
import ctypes
def get_full_image_url():
api_url = "https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN"
response = requests.get(api_url)
data = response.json()
print(f"Bing 接口返回 : {data}")
return data
def download_and_set_wallpaper(image_json):
# 获取当前登录的用户名
username = os.getlogin()
# 构造保存路径和文件名
save_dir = "C:\\Users\\" + username + "\\Pictures\\WallPaper"
print(f"保存路径: {save_dir}")
os.makedirs(save_dir, exist_ok=True)
file_name = image_json['images'][0]['startdate'] + ".jpg"
save_path = os.path.join(save_dir, file_name)
# 下载图片并保存
image_url = "https://cn.bing.com" + image_json['images'][0]['url']
response = requests.get(image_url)
if response.status_code == 200:
with open(save_path, 'wb') as f:
f.write(response.content)
print(f"图片已下载到: {save_path}")
else:
print("图片下载失败,状态码:", response.status_code)
# 设置壁纸
try:
ctypes.windll.user32.SystemParametersInfoW(20, 0, save_path, 3)
print("壁纸设置成功")
except Exception as e:
print("设置壁纸失败:", e)
# 主程序
if __name__ == "__main__":
image_json = get_full_image_url()
download_and_set_wallpaper(image_json)
结语
通过本文的介绍,你已经学会了如何使用Python来自动化下载Bing每日一图并设置为壁纸。这是一个有趣且实用的项目,可以作为学习Python自动化脚本的一个很好的例子。
本文来自博客园,作者:方倍工作室,转载请注明原文链接:https://www.cnblogs.com/txw1958/p/18290448/bing-picture-wallpaper