600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Python——实现Windows桌面壁纸和bing背景的同步

Python——实现Windows桌面壁纸和bing背景的同步

时间:2018-12-03 08:46:42

相关推荐

Python——实现Windows桌面壁纸和bing背景的同步

目的

实现Windows桌面壁纸和bing背景的同步

如何实现

requests(获取url)

json(解析对象)

os.path(设置图片保存路径以及日志信息)

ctypes(设置Windows壁纸)

具体过程

API:/mryt/

{"code": 1,"msg": "获取成功!","data": [{"title": "冬日里的科赫尔湖,德国巴伐利亚州 (© Reinhard Schmid/eStock Photo)","imgurl": "/th?id=OHR.LakeKochelsee_ZH-CN0004970986_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp","time": "2026"},{"title": "树干上的扁嘴山巨嘴鸟,厄瓜多尔 (© Tui De Roy/Minden Pictures)","imgurl": "/th?id=OHR.MountainToucan_ZH-CN9939482570_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp","time": "2025"},{"title": "安沙波利哥沙漠州立公园,美国加利福尼亚州 (© Tom Hogan/plainpicture)","imgurl": "/th?id=OHR.BorregoBadlands_ZH-CN9913349081_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp","time": "2024"},{"title": "汉密尔顿山顶的利克天文台,美国加利福尼亚州 (© Jeffrey Lewis/Tandem Stills + Motion)","imgurl": "/th?id=OHR.LickObservatory_ZH-CN9676762110_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp","time": ""},{"title": "雪后的布拉格,捷克共和国 (© benkrut/Getty Images)","imgurl": "/th?id=OHR.SnowyPrague_ZH-CN9794475183_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp","time": ""},{"title": "睡在海滩上的竖琴海豹,纽约长岛 (© Vicki Jauron, Babylon and Beyond Photography/Getty Images)","imgurl": "/th?id=OHR.JonesBeachHarpSeal_ZH-CN9584238333_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp","time": ""},{"title": "跨年夜的篝火晚会,冰岛雷克雅未克 (© Ragnar Th Sigurdsson/Alamy)","imgurl": "/th?id=OHR.IcelandBonfire_ZH-CN9270966209_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp","time": "1231"},{"title": "星空下的灯塔,德国Westerhever镇 (© Sandra Bartocha/Minden Pictures)","imgurl": "/th?id=OHR.WesterheverLight_ZH-CN6827035695_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp","time": "1230"}]}

使用requests调用该接口进行imgurl下载

def http_api():api = "/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("© 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 ctypesimport jsonimport os.pathimport timeimport requestsdef http_api():api = "/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("© 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')

ModeLastWriteTime Length Name----------------- ------ ----d----- /10/1618:50res-a---- /10/1618:47 1309 bing.py-a---- /10/1618:50 3 log.txt-a---- /10/1618:51 0 readme.txt该程序实现了Windows桌面壁纸和/背景的同步,并保存了其壁纸资源文件结构如上,res存放资源图片,bing.py进行图片下载和设置,log.txt记录日志,请不要更改文件结构使用者只需双击bing.py即可(需要有python requests库~~~)

效果图

源码地址:/i3LtEyfr4ej

注意事项

该程序使用相对路径作为壁纸的存储目录,耦合度低。并对壁纸下载操作进行了日志记录,日志包括存储时间和壁纸详情。但有一丢丢小问题——未优化下载的过程(其实是为了测试一次下载多张图片,懒得每天测试一次获取图片)。该程序只实现了代码设置壁纸同步,对于想Windows下自动同步的小伙伴们参考其他资料使用Windows定时任务来实现。

-01-06 10:44:51--2026--冬日里的科赫尔湖,德国巴伐利亚州 (© Reinhard Schmid/eStock Photo)-01-06 10:44:52--2025--树干上的扁嘴山巨嘴鸟,厄瓜多尔 (© Tui De Roy/Minden Pictures)-01-06 10:44:52--2024--安沙波利哥沙漠州立公园,美国加利福尼亚州 (© Tom Hogan/plainpicture)-01-06 10:44:52----汉密尔顿山顶的利克天文台,美国加利福尼亚州 (© Jeffrey Lewis/Tandem Stills + Motion)-01-06 10:44:53----雪后的布拉格,捷克共和国 (© benkrut/Getty Images)-01-06 10:44:53----睡在海滩上的竖琴海豹,纽约长岛 (© Vicki Jauron, Babylon and Beyond Photography/Getty Images)-01-06 10:44:54--1231--跨年夜的篝火晚会,冰岛雷克雅未克 (© Ragnar Th Sigurdsson/Alamy)-01-06 10:44:54--1230--星空下的灯塔,德国Westerhever镇 (© Sandra Bartocha/Minden Pictures)---------------------------------------------------------------------------------------------------贴一个我的文件结构 O(∩_∩)O---------------------------------------------------------------------------------------------------ModeLastWriteTime Length Name----------------- ------ ----d----- /10/1618:50res-a---- /10/1618:47 1309 bing.py-a---- /10/1618:50 3 log.txt-a---- /10/1618:51 0 readme.txt

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。