Python——实现Windows桌面壁纸和bing背景的同步
目的
实现Windows桌面壁纸和bing背景的同步
如何实现
requests(获取url)
json(解析对象)
os.path(设置图片保存路径以及日志信息)
ctypes(设置Windows壁纸)
具体过程
API:https://api.iyk0.com/mryt/
{"code": 1,"msg": "获取成功!","data": [{"title": "冬日里的科赫尔湖,德国巴伐利亚州 (© Reinhard Schmid/eStock Photo)","imgurl": "https://cn.bing.com/th?id=OHR.LakeKochelsee_ZH-CN0004970986_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp","time": "20220106"},{"title": "树干上的扁嘴山巨嘴鸟,厄瓜多尔 (© Tui De Roy/Minden Pictures)","imgurl": "https://cn.bing.com/th?id=OHR.MountainToucan_ZH-CN9939482570_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp","time": "20220105"},{"title": "安沙波利哥沙漠州立公园,美国加利福尼亚州 (© Tom Hogan/plainpicture)","imgurl": "https://cn.bing.com/th?id=OHR.BorregoBadlands_ZH-CN9913349081_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp","time": "20220104"},{"title": "汉密尔顿山顶的利克天文台,美国加利福尼亚州 (© Jeffrey Lewis/Tandem Stills + Motion)","imgurl": "https://cn.bing.com/th?id=OHR.LickObservatory_ZH-CN9676762110_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp","time": "20220103"},{"title": "雪后的布拉格,捷克共和国 (© benkrut/Getty Images)","imgurl": "https://cn.bing.com/th?id=OHR.SnowyPrague_ZH-CN9794475183_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp","time": "20220102"},{"title": "睡在海滩上的竖琴海豹,纽约长岛 (© Vicki Jauron, Babylon and Beyond Photography/Getty Images)","imgurl": "https://cn.bing.com/th?id=OHR.JonesBeachHarpSeal_ZH-CN9584238333_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp","time": "20220101"},{"title": "跨年夜的篝火晚会,冰岛雷克雅未克 (© Ragnar Th Sigurdsson/Alamy)","imgurl": "https://cn.bing.com/th?id=OHR.IcelandBonfire_ZH-CN9270966209_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp","time": "20211231"},{"title": "星空下的灯塔,德国Westerhever镇 (© Sandra Bartocha/Minden Pictures)","imgurl": "https://cn.bing.com/th?id=OHR.WesterheverLight_ZH-CN6827035695_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp","time": "20211230"}]
}
使用requests调用该接口进行imgurl下载
def http_api():api = "https://api.iyk0.com/mryt/"res = requests.get(api).textreturn json.loads(res)['data']
创建bing壁纸类
class BingImg:def __init__(self, img_dir):self.title = img_dir["title"]self.img_url = img_dir["imgurl"]self.time = img_dir["time"]
下载壁纸到指定路径
def download_img(BingImg):res = requests.get(BingImg.img_url)if res.status_code == 200:open('.\\res\\' + BingImg.time + '.png', 'wb').write(res.content)open('.\\log.txt', 'a', encoding='utf-8').write(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())+ '--' + str(BingImg.time) + '--' + str(BingImg.title) + '\n')
汇总imgurl
def get_img():arr = http_api()img_res = []for img_dir in arr:img_res.append(BingImg(img_dir))for i in img_res:print(i.title)return img_res
设置Windows壁纸
def set_img_as_wallpaper(filepath):ctypes.windll.user32.SystemParametersInfoW(20, 0, filepath, 0)
主函数
if __name__ == '__main__':print("©2021 LIN ")img = get_img()for img_i in img:download_img(img_i)set_img_as_wallpaper(os.path.abspath('./res') + '\\' + time.strftime('%Y%m%d', time.localtime()) + '.png')
源程序及相关注意事项
import ctypes
import json
import os.path
import time
import requestsdef http_api():api = "https://api.iyk0.com/mryt/"res = requests.get(api).textreturn json.loads(res)['data']class BingImg:def __init__(self, img_dir):self.title = img_dir["title"]self.img_url = img_dir["imgurl"]self.time = img_dir["time"]def download_img(BingImg):res = requests.get(BingImg.img_url)if res.status_code == 200:open('.\\res\\' + BingImg.time + '.png', 'wb').write(res.content)open('.\\log.txt', 'a', encoding='utf-8').write(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())+ '--' + str(BingImg.time) + '--' + str(BingImg.title) + '\n')def get_img():arr = http_api()img_res = []for img_dir in arr:img_res.append(BingImg(img_dir))for i in img_res:print(i.title)return img_resdef set_img_as_wallpaper(filepath):ctypes.windll.user32.SystemParametersInfoW(20, 0, filepath, 0)if __name__ == '__main__':print("©2021 LIN ")img = get_img()for img_i in img:download_img(img_i)set_img_as_wallpaper(os.path.abspath('./res') + '\\' + time.strftime('%Y%m%d', time.localtime()) + '.png')
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2021/10/16 18:50 res
-a---- 2021/10/16 18:47 1309 bing.py
-a---- 2021/10/16 18:50 3 log.txt
-a---- 2021/10/16 18:51 0 readme.txt该程序实现了Windows桌面壁纸和https://cn.bing.com/背景的同步,并保存了其壁纸资源文件结构如上,res存放资源图片,bing.py进行图片下载和设置,log.txt记录日志,请不要更改文件结构使用者只需双击bing.py即可(需要有python requests库~~~)
效果图
源码地址:https://wwi.lanzouy.com/i3LtEyfr4ej
注意事项
该程序使用相对路径作为壁纸的存储目录,耦合度低。并对壁纸下载操作进行了日志记录,日志包括存储时间和壁纸详情。但有一丢丢小问题——未优化下载的过程(其实是为了测试一次下载多张图片,懒得每天测试一次获取图片)。该程序只实现了代码设置壁纸同步,对于想Windows下自动同步的小伙伴们参考其他资料使用Windows定时任务来实现。
2022-01-06 10:44:51--20220106--冬日里的科赫尔湖,德国巴伐利亚州 (© Reinhard Schmid/eStock Photo)
2022-01-06 10:44:52--20220105--树干上的扁嘴山巨嘴鸟,厄瓜多尔 (© Tui De Roy/Minden Pictures)
2022-01-06 10:44:52--20220104--安沙波利哥沙漠州立公园,美国加利福尼亚州 (© Tom Hogan/plainpicture)
2022-01-06 10:44:52--20220103--汉密尔顿山顶的利克天文台,美国加利福尼亚州 (© Jeffrey Lewis/Tandem Stills + Motion)
2022-01-06 10:44:53--20220102--雪后的布拉格,捷克共和国 (© benkrut/Getty Images)
2022-01-06 10:44:53--20220101--睡在海滩上的竖琴海豹,纽约长岛 (© Vicki Jauron, Babylon and Beyond Photography/Getty Images)
2022-01-06 10:44:54--20211231--跨年夜的篝火晚会,冰岛雷克雅未克 (© Ragnar Th Sigurdsson/Alamy)
2022-01-06 10:44:54--20211230--星空下的灯塔,德国Westerhever镇 (© Sandra Bartocha/Minden Pictures)---------------------------------------------------------------------------------------------------
贴一个我的文件结构 O(∩_∩)O
---------------------------------------------------------------------------------------------------
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2021/10/16 18:50 res
-a---- 2021/10/16 18:47 1309 bing.py
-a---- 2021/10/16 18:50 3 log.txt
-a---- 2021/10/16 18:51 0 readme.txt
Python——实现Windows桌面壁纸和bing背景的同步相关推荐
- python设置windows桌面壁纸
每天换一个壁纸,每天好心情. # -*- coding: UTF-8 -*- from __future__ import unicode_literals import Image import d ...
- python代码壁纸-python设置windows桌面壁纸的实现代码
代码如下: # -*- coding: UTF-8 -*- from __future__ import unicode_literals import Image import datetime i ...
- python代码桌面壁纸_Python实现设置windows桌面壁纸代码
Python实现设置windows桌面壁纸代码 发布于 2015-04-07 16:59:42 | 122 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向对 ...
- python修改桌面壁纸_利用Python对windows桌面自动更换壁纸
根据时间星期几判断用哪张壁纸 # !/usr/bin/env python3 # -*- coding:utf-8 -*- import requests # import pywintypes im ...
- 使用Python开发windows桌面程序
使用Python开发windows桌面程序 一.开发前期准备 1. boa-constructor-0.6.1.bin.setup.exe #一个wxWidges的集成开发环境,简单如Delphi,可 ...
- 显示计算机名在桌面壁纸,Windows桌面壁纸自动显示计算机详细信息小工具–BgInfo...
Windows桌面壁纸自动显示计算机详细信息小工具–BgInfo 这个东西是微软官方出的,他会读取系统信息,然后更改现在正在使用的桌面图片,写入图片后自动退出程序.所以说基本没有占用. 本站备份程序下 ...
- Python 获取windows桌面路径的5种方法小结
今天小编就为大家分享一篇Python 获取windows桌面路径的5种方法小结,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 这里介绍了5中python获取window桌面路径的方法 ...
- python开发windows桌面程序,python开发windows桌面应用
为什么用Python开发桌面应用程序 1)wxWidgets是一个比MFC优雅的库,TortoiseCVS用wxWidges而不用MFC,就是因为wxWidgets好用,而不是为了可以移植. 2)Py ...
- linux自动刷新桌面,Ubuntu下实现用Python开机自动更新壁纸为bing壁纸
因为用的Windows Phone的手机,里面有一个手机锁屏每天自动更新为bing的壁纸,用着挺好的,遂想在Ubuntu下实现这个功能,断断续续折腾了一两个星期,惭愧.不过好在最终还是将所有的功能实现 ...
最新文章
- python多项式回归_Python 多项式回归 - 树懒学堂
- 网络营销外包——网络营销外包专员是怎样提升网站收录概率的?
- Linux协议栈(7)——网络层实现
- 微信支付开发(2) 微信支付账号体系
- Windows8.1系统下让VS2012编译运行IIS Express 64位 调试器
- rpm部署mysql_使用rpm快速安装部署MySQL5.6以及主从设置
- Nginx配置之基于域名的虚拟主机
- 【传智播客】JavaWeb程序设计任务教程 第一章练习答案
- RuntimeError: inconsistent AsyncHTTPClient cache
- SAP Spartacus routing parameter mapping介绍
- 使用report PRC_SHOW_PRICING_DOCUMENT查看SAP CRM订单的pricing数据
- leetcode49. 字母异位词分组
- oracle standby审计,监控oracle standby
- 分类数据转换为树形结构
- 文达仓库管理软件 v5.32 网络版 怎么用
- win10系统无法登录ftp服务器失败,Win10系统下ftp连接失败提示“连接已超时”如何解决?...
- 如何在电脑上将PDF文件转换成word?
- CMake中使用get_target_property判断Target是否存在
- python 描边,吊打Pyecharts,这个新Python绘图库也可以这么漂亮!
- 记录安卓,IOS安装kali的办法