unRAID 系统下定时运行脚本获取 bing每日壁纸

📖前言

最近 Fork 了一个使用 GitHub Action 自动抓取bing壁纸的项目

https://github.com/yfun-lab/bing-wallpaper

感觉项目的Python脚本写得十分优雅,按个人的习惯简单修改了脚本部署到自己的 GitHub 上。
同时顺手在本地 NAS 上也跑一个,供日常观赏。

🔨操作步骤

1)安装所需的运行环境

首先于 unRAID Community Applications 安装 Nerd Tools 和 User Scripts 两个插件

然后打开 Nerd Tools 安装 Python3

至此所需的运行环境就部署完成了

2)运行脚本

保存为 main.py ,同时于同目录建一个 Wallpaper 文件夹用于存放下载来的文件

在终端使用 python3 main.py 测试脚本是否正常运作

import urllib.request as req
import json
import re


url = 'http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&nc=1614319565639&pid=hp&FORM=BEHPTB&uhd=1&uhdwidth=3840&uhdheight=2160'

# try:
res = req.urlopen(url)
res = res.read().decode('utf-8')

api = json.loads(res)

api = api['images']
downloadURL = "https://bing.com" + api[0]['url']
dateTime = api[0]['enddate']
copyright = api[0]['copyright'] # 获取版权信息
rstr = r'[\/\\\:\*\?\"\<\>\|]'  # '/ \ : * ? " < > |'
new_copyright = re.sub(rstr, '_', copyright)  # 替换为下划线

req.urlretrieve(downloadURL, "./Wallpaper/{0}{1}{2}.jpg".format(dateTime, '@', new_copyright))
req.urlretrieve(url, "./Wallpaper/{}.json".format(dateTime))

# except:
#     print("Error.")

于原项目基础上修改了图片保存的目录与文件名(按 日期@版权信息 命名)
增加保存当日完整的 json 信息到本地,以供日后可能有用得上的时候

3)配置定时执行

到 User Scripts 插件内添加一个新脚本,内容按实际情况编辑

#!/bin/bash
cd /mnt/disk1/appdata/bing/ && python3 main.py

最后设置 Cron 计划任务定时运行

2 0 * * *

每日凌晨零点02分