分享一个自动更新bing桌面壁纸的Python脚本

编程入门 行业动态 更新时间:2024-10-13 00:30:42

分享一个<a href=https://www.elefans.com/category/jswz/34/1766929.html style=自动更新bing桌面壁纸的Python脚本"/>

分享一个自动更新bing桌面壁纸的Python脚本

功能说明

该脚本会自动获取当天的bing壁纸并保存到本地的文件夹,然后定时切换桌面壁纸。

可将该脚本添加到系统计划任务中,每天定时启动,享受每天最新的桌面壁纸,参考启动命令:

pythonw auto_change_desktop_image.py

完整代码

# coding: utf-8
import requests
import time
import os
import random# 添加请求头
g_headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ''(KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
}def get_bing_image_urls(num):"""从cn.bing下载每日的桌面壁纸:param num: 最多获取壁纸数:return: 返回获取的壁纸地址列表"""# start_url = '.aspx?format=js&idx={}&n=1&nc=1622612516247&pid=hp'start_url = '.aspx?format=js&idx={}&n=1'imgs = []page = 1while len(imgs) < num and page < num*2:page += 1page_url = start_url.format(page)try:r = requests.get(page_url, headers=g_headers).json()img = '' + r['images'][0]['url']if imgs.count(img) <= 0:imgs.append(img)else:breakexcept:passreturn imgsdef download_image(url, savepath):"""根据图片地址下载图片至指定路径:param url: 图片url地址:param savepath: 图片保存路径:return: 下载是否成功"""try:r = requests.get(url, headers=g_headers, stream=True)if r.status_code != 200:return Falseopen(savepath, 'wb').write(r.content)return Trueexcept:return Falsedef get_image_id(url):"""从URL地址获取图片的参数id信息:param url: bing图片url地址:return: 图片id"""try:paras = url[url.find('?')+1:].split('&')for p in paras:kv = p.split('=')if kv[0] == 'id':return kv[1].strip()except:passreturn urldef set_desktop_image(img):"""将图片设置为桌面壁纸:param img: 图片:return:"""import win32guiimport win32conimport win32apikey = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control Panel\\Desktop", 0, win32con.KEY_SET_VALUE)win32api.RegSetValueEx(key, "WallpaperStyle", 0, win32con.REG_SZ, "2")# 2拉伸适应桌面,0桌面居中win32api.RegSetValueEx(key, "TileWallpaper", 0, win32con.REG_SZ, "0")win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, os.path.abspath(img), 1 + 2)def auto_change_desktop_image(img_dir, seconds=300, order='rand'):"""根据指定的壁纸目录,定时更新桌面壁纸,当前日期变化后会退出:param img_dir: 壁纸目录:param seconds: 自动更新时间间隔,单位为秒:param order: 图片更新顺序,默认为顺序,rand为随机:return:"""files = os.listdir(img_dir)images = []for file in files:temp = os.path.join(img_dir, file)if os.path.isfile(temp):images.append(temp)start_date = time.strftime('%Y%m%d',time.localtime(time.time()))index = -1while True:# 日期变了退出,重新获取cur_date = time.strftime('%Y%m%d', time.localtime(time.time()))if cur_date != start_date:breakindex += 1if order == 'rand':index = random.randint(0, len(images) - 1)index = index % len(images)set_desktop_image(images[index])print(time.time(), ' 已设置桌面壁纸为:', images[index])time.sleep(seconds)if __name__ == '__main__':while True:# 获取每日壁纸urls = get_bing_image_urls(20)save_dir = './' + time.strftime('%Y%m%d', time.localtime(time.time()))if not os.path.exists(save_dir):os.makedirs(save_dir)for url in urls:name = get_image_id(url)save_path = save_dir + '/' + nameprint('下载', url, '成功' if download_image(url, save_path) else '失败')# 自动更新壁纸auto_change_desktop_image(save_dir, 600)

更多推荐

分享一个自动更新bing桌面壁纸的Python脚本

本文发布于:2024-03-13 19:12:49,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1734629.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:自动更新   脚本   桌面壁纸   bing   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!