使用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 ctypesdef 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 datadef 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自动化脚本的一个很好的例子。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/740676.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

powerquery刷新后固定列宽度

依次打开“表格工具”->“设计”->“属性”->“调整列宽”, 取消“调整列宽”选项

camunda快速入门(三):设计表单和审批流程

在本节中,您将学习如何使用camunda表单设计器设计一个在线表单,用流程建模工具设计一个审批流, 即BPMN 2.0 用户任务让人类参与到您的流程中。三、设计一个人工任务流程并配置表单 在本节中,您将学习如何使用 BPMN 2.0 用户任务让人类参与到您的流程中。 1、添加用户任务活…

微信电脑版v3.9.11.17防撤回插件

下载链接:https://download.csdn.net/download/hello_hlqk/89525196?spm=1001.2101.3001.9500 通过该插件,可以看到对方撤回的消息。 修改原理,如下图:使用说明: 解压后,双击start.bat来运行软件

大厂面试高频题——二分查找

35. 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 思考 二分模板题 class Solution:def searchInsert(self, nums: List[int], target…

如何解决网页打开加载缓慢问题

以我为例 今天打开B站发现很多视频打开之后一直是加载状态,加载半天也打不开,还有知乎跳转到csdn也无法正常打自己捣鼓的许久发现可以通过修改DNS来解决 首先打开此电脑→找到网络→右键点击属性→左上角更改适配器设置→选择你的网络双击→点击属性→找到Internet 协议版本4…

服务器开发——setsockopt函数

setsockopt() setsockopt() 是一个用于设置套接字选项的 Unix 系统调用。它允许程序员修改套接字的行为,以适应不同的网络环境和应用程序需求。 1. 函数介绍 函数原型: #include <sys/socket.h> /*** level:选项所在的协议层。例如,SOL_SOCKET 表示套接字层,IPPRO…

Python OpenCv对规则物体进行实时检测

很多情况需要对物体进行检测,常规的方法也有很多种。但是检测出来的边缘一般都是非常多,结果也是非常杂乱的,显然这种结果不是我们想要的。如果颜色相较于背景非常鲜艳的可以调节hsv阈值再进行检测,如果是一直在运动的物体可以通过帧差法进行物体检测,还有很多高深的算法也…

学习canvas(一些常用api)

当然,以下是这些常用Canvas API的总结,按照Markdown格式编写: 常用Canvas API总结 1. 获取绘图上下文 const canvas = document.getElementById(myCanvas); const ctx = canvas.getContext(2d); // 或 webgl2. 绘制矩形 ctx.fillStyle = blue; ctx.fillRect(10, 10, 150, 10…

uniapp 解决本地跨域问题

让每一滴智慧绘制成一条不归路!

UniVAE:基于Transformer的单模型、多尺度的VAE模型

大家都知道,Transformer的$\mathscr{O}(n^2)$复杂度是它的“硬伤”之一。不过凡事有弊亦有利,$\mathscr{O}(n^2)$的复杂度也为Transformer带来很大的折腾空间,我们可以灵活地定制不同的attention mask,来设计出不同用途的Transformer模型来,比如UniLM、K-BERT等。 本文介绍…

从变分编码、信息瓶颈到正态分布:论遗忘的重要性

这是一篇“散文”,我们来谈一下有着千丝万缕联系的三个东西:变分自编码器、信息瓶颈、正态分布。 众所周知,变分自编码器是一个很经典的生成模型,但实际上它有着超越生成模型的含义;而对于信息瓶颈,大家也许相对陌生一些,然而事实上信息瓶颈在去年也热闹了一阵子;至于正…

应用升级

本文是在你已经安装三个软件的基础上进行优化 一、卸载NFG Multi Crack软件(没有就不用管) 二、进入Lsposed软件 点击模块,可以看到已安装的两个模块1. 点击FL-Xposed,勾选以下应用,然后返回2. 点击HookVip,勾选Fakelocation,然后返回三、进入隐藏应用列表软件 1. 点击模…