Python下载bing每日壁纸并实现win11 壁纸自动切换

前言: 爬虫哪家强,当然是python

        我是属于啥语言都用,都懂点,不精通,实际工作中能能够顶上就可以。去年写的抓取bing每日的壁纸,保存到本地,并上传到阿里云oss,如果只是本地壁纸切换,存下来就行,一直想做个壁纸站点,但最终还是没有付诸于实际行动。


一、bing壁纸介绍:

        我们访问bing中国的网址https://cn.bing.com,可以看到背景是精选的图片,而且这张图片每天是不一样的,所以可以每天抓取这张图片,来作为壁纸的来源.

二、如何获取到Bing每日的壁纸:

        有人会想到每日访问https://cn.bing.com 站点, 解析出网页中壁纸的所在url然后再下载图片不就可以了.这确实是一个思路,但不用这么麻烦, 其实微软官方早就给我们提供了壁纸接口.可以查询到7日内每日壁纸:

        https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0%d&n=10

访问这个url返回的数据为JSON格式,如:

{
  "images": [
    {
      "startdate": "20240329",
      "fullstartdate": "202403291600",
      "enddate": "20240330",
      "url": "/th?id=OHR.SleepySloth_ZH-CN6084460583_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp",
      "urlbase": "/th?id=OHR.SleepySloth_ZH-CN6084460583",
      "copyright": "睡在号角树上的褐喉树懒,哥斯达黎加 (© Juan Carlos Vindas/Getty Images)",
      "copyrightlink": "https://www.bing.com/search?q=%E8%A4%90%E5%96%89%E6%A0%91%E6%87%92&form=hpcapt&mkt=zh-cn",
      "title": "来自“颠倒世界”的问候",
      "quiz": "/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20240329_SleepySloth%22&FORM=HPQUIZ",
      "wp": true,
      "hsh": "c56a6fc0a2750b049a409de4450daf27",
      "drk": 1,
      "top": 1,
      "bot": 1,
      "hs": [
        
      ]
    },
    {
      "startdate": "20240328",
      "fullstartdate": "202403281600",
      "enddate": "20240329",
      "url": "/th?id=OHR.SouthStackLight_ZH-CN5932471774_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp",
      "urlbase": "/th?id=OHR.SouthStackLight_ZH-CN5932471774",
      "copyright": "日落时的南斯塔克灯塔,霍利希德,威尔士,英国 (© mariotlr/Getty Images)",
      "copyrightlink": "https://www.bing.com/search?q=%E9%9C%8D%E5%88%A9%E5%B8%8C%E5%BE%B7&form=hpcapt&mkt=zh-cn",
      "title": "潮涨潮落,灯火通明",
      "quiz": "/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20240328_SouthStackLight%22&FORM=HPQUIZ",
      "wp": true,
      "hsh": "259f54d785e9ebf610729787a05fb5f2",
      "drk": 1,
      "top": 1,
      "bot": 1,
      "hs": [
        
      ]
    },
    {
      "startdate": "20240327",
      "fullstartdate": "202403271600",
      "enddate": "20240328",
      "url": "/th?id=OHR.ShanghaiBlossoms_ZH-CN5594677517_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp",
      "urlbase": "/th?id=OHR.ShanghaiBlossoms_ZH-CN5594677517",
      "copyright": "上海的樱花,中国 (© Yaorusheng/Getty Images)",
      "copyrightlink": "https://www.bing.com/search?q=%E6%A8%B1%E8%8A%B1&form=hpcapt&mkt=zh-cn",
      "title": "花香满径",
      "quiz": "/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20240327_ShanghaiBlossoms%22&FORM=HPQUIZ",
      "wp": true,
      "hsh": "0b0be2a4a80ccb847b97fad514d4974d",
      "drk": 1,
      "top": 1,
      "bot": 1,
      "hs": [
        
      ]
    },
    {
      "startdate": "20240326",
      "fullstartdate": "202403261600",
      "enddate": "20240327",
      "url": "/th?id=OHR.TeatroColon_ZH-CN5378730986_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp",
      "urlbase": "/th?id=OHR.TeatroColon_ZH-CN5378730986",
      "copyright": "布宜诺斯艾利斯哥伦布剧院,阿根廷 (© Wei Hao Ho/Alamy Stock Photo)",
      "copyrightlink": "https://www.bing.com/search?q=%E4%B8%96%E7%95%8C%E6%88%8F%E5%89%A7%E6%97%A5&form=hpcapt&mkt=zh-cn",
      "title": "戏剧成为关注的焦点",
      "quiz": "/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20240326_TeatroColon%22&FORM=HPQUIZ",
      "wp": true,
      "hsh": "e49947b0643729ced7b6066a2842b68f",
      "drk": 1,
      "top": 1,
      "bot": 1,
      "hs": [
        
      ]
    },
    {
      "startdate": "20240325",
      "fullstartdate": "202403251600",
      "enddate": "20240326",
      "url": "/th?id=OHR.HangRaiVietnam_ZH-CN1601428109_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp",
      "urlbase": "/th?id=OHR.HangRaiVietnam_ZH-CN1601428109",
      "copyright": "海水从古老的珊瑚礁上倾泻而下,杭莱,越南 (© Thang Tat Nguyen/Getty Images)",
      "copyrightlink": "https://www.bing.com/search?q=%E5%AE%81%E9%A1%BA%E6%B5%B7%E7%8D%AD%E6%B4%9E&form=hpcapt&mkt=zh-cn",
      "title": "潮汐探戈",
      "quiz": "/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20240325_HangRaiVietnam%22&FORM=HPQUIZ",
      "wp": true,
      "hsh": "fb962e1ad50ebf0fa2c5a506d99dfbfe",
      "drk": 1,
      "top": 1,
      "bot": 1,
      "hs": [
        
      ]
    },
    {
      "startdate": "20240324",
      "fullstartdate": "202403241600",
      "enddate": "20240325",
      "url": "/th?id=OHR.TulipAbbotsford_ZH-CN1401627293_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp",
      "urlbase": "/th?id=OHR.TulipAbbotsford_ZH-CN1401627293",
      "copyright": "弗雷泽河谷的郁金香田,阿伯兹福德,不列颠哥伦比亚省,加拿大 (© LeonU/Getty Images)",
      "copyrightlink": "https://www.bing.com/search?q=%E4%B8%8D%E5%88%97%E9%A2%A0%E5%93%A5%E4%BC%A6%E6%AF%94%E4%BA%9A%E7%9C%81+%E9%98%BF%E4%BC%AF%E5%85%B9%E7%A6%8F%E5%BE%B7&form=hpcapt&mkt=zh-cn",
      "title": "春意盎然",
      "quiz": "/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20240324_TulipAbbotsford%22&FORM=HPQUIZ",
      "wp": true,
      "hsh": "a1b4fe059803db763eda39cc2b48c33b",
      "drk": 1,
      "top": 1,
      "bot": 1,
      "hs": [
        
      ]
    },
    {
      "startdate": "20240323",
      "fullstartdate": "202403231600",
      "enddate": "20240324",
      "url": "/th?id=OHR.WhiteEyes_ZH-CN1130380430_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp",
      "urlbase": "/th?id=OHR.WhiteEyes_ZH-CN1130380430",
      "copyright": "樱花树枝上的灰胸绣眼鸟,韩国 (© TigerSeo/Getty Images)",
      "copyrightlink": "https://www.bing.com/search?q=%E7%81%B0%E8%83%B8%E7%BB%A3%E7%9C%BC%E9%B8%9F&form=hpcapt&mkt=zh-cn",
      "title": "你能挪过去一点吗?",
      "quiz": "/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20240323_WhiteEyes%22&FORM=HPQUIZ",
      "wp": true,
      "hsh": "006ea10e45abfa33db0e42504a10ed3e",
      "drk": 1,
      "top": 1,
      "bot": 1,
      "hs": [
        
      ]
    },
    {
      "startdate": "20240322",
      "fullstartdate": "202403221600",
      "enddate": "20240323",
      "url": "/th?id=OHR.AmazonClouds_ZH-CN0578911147_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp",
      "urlbase": "/th?id=OHR.AmazonClouds_ZH-CN0578911147",
      "copyright": "巴西亚马逊上空巨大的砧状云 (© NASA)",
      "copyrightlink": "https://www.bing.com/search?q=%E4%B8%96%E7%95%8C%E6%B0%94%E8%B1%A1%E6%97%A5&form=hpcapt&mkt=zh-cn",
      "title": "造雾",
      "quiz": "/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20240322_AmazonClouds%22&FORM=HPQUIZ",
      "wp": true,
      "hsh": "49990f5f0aecedc302513c6a05dc6e48",
      "drk": 1,
      "top": 1,
      "bot": 1,
      "hs": [
        
      ]
    }
  ],
  "tooltips": {
    "loading": "正在加载...",
    "previous": "上一个图像",
    "next": "下一个图像",
    "walle": "此图片不能下载用作壁纸。",
    "walls": "下载今日美图。仅限用作桌面壁纸。"
  }
}

        从json中解析可以得到images中urlbase就是我们需要的图片地址,  如3月30日的壁纸的url就是: https://cn.bing.com/th?id=OHR.SleepySloth_ZH-CN6084460583_1920x1080.jpg ,构造的图片url地址规律 https://cn.bing.com +  baseurl  + "_" + imagesize + ".jpg"  ,我显示器的分比率是1920*1080的,所以这个分比率就够了,如果要下载最大分辨率的那么url就应该是   "https://cn.bing.com" + baseUrl + "_UHD.jpg"

三、上传阿里云OSS:

        阿里云有完整的实例代码,在这里就不做过多的阐述. 可以自己去官方找文档, pip 安装下oss2的库,import 进去就可以使用.

四、完整的Python代码:        

import json
import logging
import os

import pymysql
import requests
import oss2
forder = "f:\\BingImage\\"  # 图片存放的目录
db = pymysql.connect(host='mysql数据库地址', user='用户名', password='密码', port=3306,
                     db='数据库')
cursor = db.cursor()
insertsql = "insert into bingimage(imgDes,imgUrl,imgSize,pubDate,getDate,ifDown,baseUrl,title,hsh,ifup) values(%s,%s,%s,%s,current_time ,1,%s,%s,%s,%s)"
checksql = "select count(*) from bingimage where baseUrl =%s"
accessKeyId = ''  //阿里云accessKeyId
accessKeySecret = ''  //阿里云accessKeySecret
auth = oss2.Auth(accessKeyId, accessKeySecret)
bucket = oss2.Bucket(auth, 'https://oss-cn-shenzhen.aliyuncs.com', 'imagefrombing')
try:
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
    }
    res = requests.get("https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0%d&n=10",headers =headers)
    data = json.loads(res.text)
    for img in data['images']:
        hsh = img['hsh']
        baseUrl = img['urlbase']
        cursor.execute(checksql,(baseUrl))
        row =  cursor.fetchone()
        if row[0] ==0 :
            pubDate = img['startdate']
            imgDes = img['copyright']
            title = img['title']
            imgSize='1920x1080'
            imgUrl = "https://cn.bing.com" +  baseUrl + "_" + imgSize + ".jpg"
            r = requests.get(imgUrl)
            imgName = baseUrl.replace("/th?id=","") + "_" + imgSize + ".jpg"
            with open(forder +pubDate + "-" +  imgName,"wb") as f :
                f.write(r.content)
                if os.path.exists(forder  +pubDate + "-" +  imgName) :

                    cursor.execute(insertsql, (imgDes, imgUrl, imgSize, pubDate, baseUrl, title, hsh,0))
                    db.commit()
                    print(hsh + "-" + imgSize + "-下载完毕")
            imgSize='UHD'
            imgUrl = "https://cn.bing.com" + baseUrl + "_" + imgSize + ".jpg"
            r = requests.get(imgUrl)
            imgName = baseUrl.replace("/th?id=", "") + "_" + imgSize + ".jpg"
            with open(forder + pubDate + "-" + imgName, "wb") as f:
                f.write(r.content)
            if os.path.exists(forder + pubDate + "-" + imgName):
                with open(forder + pubDate + "-" + imgName, "rb") as f2:
                    bucket.put_object(pubDate + "-" + imgName, f2)
                cursor.execute(insertsql, (imgDes, imgUrl, imgSize, pubDate, baseUrl, title, hsh,1))
                db.commit()
                print(hsh + "-" + imgSize + "-下载完毕")
        else :
            print(hsh + '已经存在数据库')
except Exception as e:
    logging.Logger.info(e)
db.close()

五、每日下载的实现:

        windows下做个地址任务,每天定时执行两次这个python的脚本就可以了。

六、win11设置壁纸轮换:

        在控制面板-》个性化-》背景里面设置

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第四篇:3.3 无效流量(Invalid traffic) - IAB/MRC及《增强现实广告效果测量指南1.0》

翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇广告效果测量定义和其他矩阵之- 3.1 广告印象(AD Impression)第三篇广告效果测量定义和其他矩阵之- 3.2 可见性 (Viewability)第四篇广…

火力发电必备:DeviceNET转Modbus TCP神技

在当今工业自动化领域,设备间的信息交流至关重要,其中Modbus协议由于其简单、开放和易于实施的特性,已经成为了事实上的行业标准。然而,随着技术的发展,对实时性、可靠性和数据传输速度的要求越来越高,尤其…

【C++航海王:追寻罗杰的编程之路】priority_queue(优先队列) | 容器适配器你知道哪些?

目录 1 -> priority_queue的介绍和使用 1.1 -> priority_queue的介绍 1.2 -> priority_queue的使用 1.3 -> priority_queue的模拟实现 2 -> 容器适配器 2.1 -> 什么是适配器 2.2 -> STL标准库中stack和queue的底层结构 2.3 -> deque的介绍 2.…

Error: Cannot find module ‘@rollup/rollup-win32-x64-msvc‘

1.背景 新项目需要使用vite搭建一个v3项目,之前也弄过,但项目创建后却一直无法跑起来,大聪明的我一直没有注意到这个问题 2.解决步骤 方案1:删除node_modules和package-lock.json文件重新npm install下包,部分码农通过这个步骤可解决 方案2:node版本或者npm版本不对,或者没…

android WMS服务

android WMS服务 WMS的定义 窗口的分类 WMS的启动 WindowManager Activity、Window、DecorView、ViewRootImpl 之间的关系 WindowToken WMS的定义 WMS是WindowManagerService的简称,它是android系统的核心服务之一,它在android的显示功能中扮演着…

作业9:编程练习

1.喝汽水问题 int Func(int money) {int total money;int empty money;while (empty > 1){total total empty / 2;empty empty / 2 empty % 2;}return total; } 2.打印菱形 将菱形看作三部分打印:上三角,中间,下三角 分别列出每一行…

http模块 设置资源类型(mime类型)

虽然浏览器自带websocket功能它会根据响应回来的内容自动去判断资源类型,但是我们加上了mime类型判断代码会更加规范些 一、mime类型概念: 媒体类型是一种标准,它用来表示文档。文件、字节流的性质和格式。HTTP服务可以设置响应头Content-T…

安装VS2022社区版

Visual Studio 2022 平台的使用 1.Visual Studio 的下载地址: https://visualstudio.microsoft.com/zh-hans/downloads/ 2.安装步骤简要记录 耐心等待安装完成 参考链接:Visual Studio 2022安装教程(非常详细),从零基础入门到精通&…

通过搜索引擎让大模型获取实时数据-实现类似 perplexity 的效果

文章目录 一、前言二、初衷三、实现方式四、总结 一、前言 汇报一下这周末的工作,主要是开发了一门课程:通过搜索引擎让大模型获取实时数据,第一次开发一门课程,难免会有很多不熟悉和做的不好的地方。 已经训练好的大模型有气数…

问卷调查技巧大揭秘:如何设计有效的问题?

做问卷调查技巧有:明确设计问卷的基本原则、制定清晰的研究目标、设计与选择问题、问卷实施和回收。 在实施市场研究、收集用户反馈或进行社会调查时,问卷调查是一种常用的方法。然而,设计和进行问卷调查需要一定的技巧和策略才能确保获得准…

【栈】单调栈与直方图中最大的矩形

一、单调递增栈&#xff1a; 用单调递增栈&#xff0c;当该元素可以入栈的时候&#xff0c;栈顶元素就是它左侧第一个比它小的元素。用于查找所要查找元素左侧第一个比它要小的数&#xff0c;以3 4 2 7 9为例&#xff1a; #include<iostream> #include<stack> usi…

Linux 常见性能分析方法论介绍(业务负载画像、下钻分析、USE方法论,检查清单)

写在前面 博文内容为 《BPF Performance Tools》 读书笔记整理内容涉及常用的性能调优方法论介绍&#xff1a;业务负载画像下钻分析USE方法论检查清单理解不足小伙伴帮忙指正 不必太纠结于当下&#xff0c;也不必太忧虑未来&#xff0c;当你经历过一些事情的时候&#xff0c;眼…

C++刷题篇——07检测热点字符

一、题目 二、解题思路 1、使用map&#xff0c;key为元素&#xff0c;value为出现的次数 2、由于sort不适用于map&#xff0c;因此要将map的key、value放到vector中&#xff0c;再对vector排序 3、对map排序&#xff1a;方法1&#xff1a;使用二维数组vector<vector<>…

第十三届蓝桥杯JavaA组省赛真题 - GCD

解题思路&#xff1a; 找规律 最大的最小公因数就是两数的差值 5 7 gcd2 1 3 gcd2 1 4 gcd3 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);long a scan.nextLong();long b scan.ne…

Unity类银河恶魔城学习记录11-10 p112 Items drop源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili ItemObject_Trigger.cs using System.Collections; using System.Collecti…

Django详细教程(一) - 基本操作

文章目录 前言一、安装Django二、创建项目1.终端创建项目2.Pycharm创建项目&#xff08;专业版才可以&#xff09;3.默认文件介绍 三、创建app1.app介绍2.默认文件介绍 四、快速上手1.写一个网页步骤1&#xff1a;注册app 【settings.py】步骤2&#xff1a;编写URL和视图函数对…

练习3-2 计算符号函数的值

对于任一整数n&#xff0c;符号函数sign(n)的定义如下&#xff1a; 请编写程序计算该函数对任一输入整数的值。 输入格式: 输入在一行中给出整数n。 输出格式: 在一行中按照格式“sign(n) 函数值”输出该整数n对应的函数值。 输入样例1: 10 输出样例1: sign(10) 1 输入样例…

文献阅读:通过 NeuronChat 从单细胞转录组推断神经元-神经元通信

文献介绍 「文献题目」 Inferring neuron-neuron communications from single-cell transcriptomics through NeuronChat 「研究团队」 聂青&#xff08;加利福尼亚大学欧文分校&#xff09; 「发表时间」 2023-02-28 「发表期刊」 Nature Communications 「影响因子」 16.6…

React系列之合成事件与事件处理机制

文章目录 React事件处理机制原生事件的事件机制事件代理&#xff08;事件委托&#xff09; 合成事件使用合成事件目的合成事件原生事件区别事件池 原生事件和React事件的执行顺序e.stopPropagation() React17事件机制的修改 React事件处理机制 react 事件机制基本理解&#xf…

数字经济全景解析:数据要素、资源与资产的转化与治理

无极低码 &#xff1a;https://wheart.cn 数字经济全景解析&#xff1a;数据要素、资源与资产的转化与治理—无极低码wheart数字经济全景解析&#xff1a;数据要素、资源与资产的转化与治理https://wheart.cn/so/home?mindex&id67737c2a-ef2f-11ee-8183-525400be6368 为…