Python定时获取必应首页壁纸,并进行高斯模糊

喜欢Bing壁纸,考虑把它设置到自己一个插件的背景,但想从一个固定的地址获取图片。
就打算用写一个脚本定时获取Bing首页图片,写到自己网站目录下的固定地址。
后来发现图片用作背景时加上虚化有时候会好一点,就又添加了虚化部分。
以下为记录。

代码用到的第三方模块为Pillow-5.1.0 + requests-2.18.4,在Python 2.7 + CentOS 7.2Python 3.6 + Win10环境下均正确工作。

流程:

  1. 写脚本获取Bing首页图片并保存到本地
    1. 获取Bing首页图片网址
    2. 下载图片,保存原图
    3. 处理图片,做高斯模糊后保存虚化版本
  2. 服务器定时执行脚本
    1. 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 &

另外,一些命令

  1. pip使用清华源,(~/.pip/pip.conf文件,没有自己创建即可
    [global]
    index-url = https://pypi.tuna.tsinghua.edu.cn/simple
    
    [install]
    trusted-host=pypi.tuna.tsinghua.edu.cn
    

你可能感兴趣的:(Python定时获取必应首页壁纸,并进行高斯模糊)