您的位置:首页 > 编程语言 > Python开发

[Python] 抓取必应每日一图,设置为桌面壁纸

2017-12-25 11:11 716 查看
在Windows 10 64位系统环境下,使用 Python 3.6 进行图片抓取和设置壁纸操作。

其中,图片链接 https://area.sinaapp.com/bingImg/ 为 Bing 每日一图的地址,解析可以获得图片文件的地址,下载即可。之后使用 ctypes 工具进行壁纸设置。颇为简单。结合 AHK (auto hot key) 可以用快捷按键的方式运行脚本更新壁纸。颇为方便。 :)

SetBingImgAsWallpaper.py

"""
程序功能:抓取必应每日一图,设置为桌面壁纸
"""

import urllib.request
import requests
import os.path
import ctypes

def save_img(img_url,dirname):
#保存图片到磁盘文件夹dirname中
try:
if not os.path.exists(dirname):
print ('文件夹',dirname,'不存在,重新建立')
#os.mkdir(dirname)
os.makedirs(dirname)
#获得图片文件名,包括后缀
basename = os.path.basename(img_url)
#拼接目录与文件名,得到图片路径
filepath = os.path.join(dirname, basename)
#下载图片,并保存到文件夹中
urllib.request.urlretrieve(img_url,filepath)
except IOError as e:
print ('文件操作失败',e)
except Exception as e:
print ('错误 :',e)
print("Save", filepath, "successfully!")

return filepath

# 请求网页,跳转到最终 img 地址
def get_img_url(raw_img_url = "https://area.sinaapp.com/bingImg/"):
r = requests.get(raw_img_url)
img_url = r.url # 得到图片文件的网址
print('img_url:', img_url)
return img_url

# 设置图片绝对路径 filepath 所指向的图片为壁纸
def set_img_as_wallpaper(filepath):
ctypes.windll.user32.SystemParametersInfoW(20, 0, filepath, 0)

def main():
dirname = "E:\\Pictures\\bingImg"       # 图片要被保存在的位置
img_url = get_img_url()
filepath = save_img(img_url, dirname)   # 图片文件的的路径
set_img_as_wallpaper(filepath)

main()


MyScript.ahk

;Ctrl + Alt + P 快捷键运行SetBingImgAsWallpaper.py脚本设置壁纸为Bing每日一图(需要在联网状态运行)
^!P::
Run python SetBingImgAsWallpaper.py
Return


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: