目的

实现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背景的同步相关推荐

  1. python设置windows桌面壁纸

    每天换一个壁纸,每天好心情. # -*- coding: UTF-8 -*- from __future__ import unicode_literals import Image import d ...

  2. python代码壁纸-python设置windows桌面壁纸的实现代码

    代码如下: # -*- coding: UTF-8 -*- from __future__ import unicode_literals import Image import datetime i ...

  3. python代码桌面壁纸_Python实现设置windows桌面壁纸代码

    Python实现设置windows桌面壁纸代码 发布于 2015-04-07 16:59:42 | 122 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向对 ...

  4. python修改桌面壁纸_利用Python对windows桌面自动更换壁纸

    根据时间星期几判断用哪张壁纸 # !/usr/bin/env python3 # -*- coding:utf-8 -*- import requests # import pywintypes im ...

  5. 使用Python开发windows桌面程序

    使用Python开发windows桌面程序 一.开发前期准备 1. boa-constructor-0.6.1.bin.setup.exe #一个wxWidges的集成开发环境,简单如Delphi,可 ...

  6. 显示计算机名在桌面壁纸,Windows桌面壁纸自动显示计算机详细信息小工具–BgInfo...

    Windows桌面壁纸自动显示计算机详细信息小工具–BgInfo 这个东西是微软官方出的,他会读取系统信息,然后更改现在正在使用的桌面图片,写入图片后自动退出程序.所以说基本没有占用. 本站备份程序下 ...

  7. Python 获取windows桌面路径的5种方法小结

    今天小编就为大家分享一篇Python 获取windows桌面路径的5种方法小结,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 这里介绍了5中python获取window桌面路径的方法 ...

  8. python开发windows桌面程序,python开发windows桌面应用

    为什么用Python开发桌面应用程序 1)wxWidgets是一个比MFC优雅的库,TortoiseCVS用wxWidges而不用MFC,就是因为wxWidgets好用,而不是为了可以移植. 2)Py ...

  9. linux自动刷新桌面,Ubuntu下实现用Python开机自动更新壁纸为bing壁纸

    因为用的Windows Phone的手机,里面有一个手机锁屏每天自动更新为bing的壁纸,用着挺好的,遂想在Ubuntu下实现这个功能,断断续续折腾了一两个星期,惭愧.不过好在最终还是将所有的功能实现 ...

最新文章

  1. python多项式回归_Python 多项式回归 - 树懒学堂
  2. 网络营销外包——网络营销外包专员是怎样提升网站收录概率的?
  3. Linux协议栈(7)——网络层实现
  4. 微信支付开发(2) 微信支付账号体系
  5. Windows8.1系统下让VS2012编译运行IIS Express 64位 调试器
  6. rpm部署mysql_使用rpm快速安装部署MySQL5.6以及主从设置
  7. Nginx配置之基于域名的虚拟主机
  8. 【传智播客】JavaWeb程序设计任务教程 第一章练习答案
  9. RuntimeError: inconsistent AsyncHTTPClient cache
  10. SAP Spartacus routing parameter mapping介绍
  11. 使用report PRC_SHOW_PRICING_DOCUMENT查看SAP CRM订单的pricing数据
  12. leetcode49. 字母异位词分组
  13. oracle standby审计,监控oracle standby
  14. 分类数据转换为树形结构
  15. 文达仓库管理软件 v5.32 网络版 怎么用
  16. win10系统无法登录ftp服务器失败,Win10系统下ftp连接失败提示“连接已超时”如何解决?...
  17. 如何在电脑上将PDF文件转换成word?
  18. CMake中使用get_target_property判断Target是否存在
  19. python 描边,吊打Pyecharts,这个新Python绘图库也可以这么漂亮!
  20. 记录安卓,IOS安装kali的办法

热门文章

  1. LLVM学习入门(3):生成 LLVM 中间代码 IR
  2. 达内 python 是一种更纯粹的面向对象_python 面向对象(进阶篇)-转发自武SIR
  3. Python实现识别图片内容的方法分析
  4. java比较三个数大小_java算法--三个数字比较大小
  5. DB技能数据库里把技能伤害调整
  6. 对北京PM2.5进行数据可视化分析(数据来源于爱数科)
  7. Windows窗口中的F10快捷键
  8. 图的关键路径--最早开始时间和最晚开始时间
  9. 2012淘宝校园招聘笔试
  10. 短波红外应用领域大揭秘-军事领域