喜欢Bing壁纸,考虑把它设置到自己一个插件的背景,但想从一个固定的地址获取图片。
就打算用写一个脚本定时获取Bing首页图片,写到自己网站目录下的固定地址。
后来发现图片用作背景时加上虚化有时候会好一点,就又添加了虚化部分。
以下为记录。
代码用到的第三方模块为
Pillow-5.1.0
+requests-2.18.4
,在Python 2.7 + CentOS 7.2
与Python 3.6 + Win10
环境下均正确工作。
流程:
- 写脚本获取Bing首页图片并保存到本地
- 获取Bing首页图片网址
- 下载图片,保存原图
- 处理图片,做高斯模糊后保存虚化版本
- 服务器定时执行脚本
-
crontab
定时任务
-
正文
脚本部分
import requests
import re
from PIL import Image, ImageFilter
def fetch_today_image_url():
"""
获取每日图片的地址
"""
response = requests.get(
"https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1").text # 请求官方接口
# 匹配出/az......jpg,既图片网址
partial_url = re.match(r'.*(/az.*\.jpg)', response).group(1)
return "https://cn.bing.com" + partial_url
def download_image(url, path):
"""
通过requests库将图片下载到本地
"""
ir = requests.get(url)
if (ir.status_code == 200):
open(path, "wb").write(ir.content)
def create_blur_image(path, redius=20):
"""
将图片进行高斯模糊后修改后缀另行保存
"""
origin = Image.open(path)
treated = origin.filter(ImageFilter.GaussianBlur(redius))
img_path_blur = path.replace(".jpg", "_blur.jpg")
treated.save(img_path_blur)
if (__name__ == "__main__"):
img_url = fetch_today_image_url()
img_path = r"C:/users/kwokg/Desktop/bing.jpg" # 设置图片保存路径
download_image(img_url, img_path)
create_blur_image(img_path)
服务器执行部分
使用crontab -e
编辑定时任务配置文件,在末尾添加下边的内容(每小时执行一次指定路径下的脚本):
* */1 * * * python /opt/script/bing_today.py &
另外,一些命令
- pip使用清华源,(
~/.pip/pip.conf
文件,没有自己创建即可)[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple [install] trusted-host=pypi.tuna.tsinghua.edu.cn