本文编写于 195 天前,最后修改于 81 天前,其中某些信息可能已经过时。

我的博客每一个文章都有一张图片,这些图片其实就是Bing的每日壁纸,之前一直通过手动的方式收集备用,觉得甚是麻烦,就想写个脚本自动帮我收集每天的壁纸,留作文章题图。

实现方式很简单,分为三部分:

Bing每日壁纸的API

API地址:https://api.berryapi.net/bing/image?800/480/0

参数含义:

  • 800 图片宽度800px
  • 480 图片高度480px
  • 0 图片的历史日(0代表今天)

可选值:

  • 几种常用分辨率:1920/1200;1920/1080;800/480
  • 日期:0 ~ -7,对应过去7天的历史图片

用于下载壁纸的Shell脚本

  • 在任意目录下新建文件 bing.sh,使用vi编辑器打开文件
[root@hostname ~] touch getBings.sh
[root@hostname ~] vi getBings.sh
  • 输入以下内容:
# 下载图片并以当前日期作为文件名保存
wget https://api.berryapi.net/bing/image?800/480/0 -O /home/pan/bing-images/800x480/$(date +%Y-%m-%d_800x480.jpg)

wget https://api.berryapi.net/bing/image?1920/1080/0 -O /home/pan/bing-images/1920x1080/$(date +%Y-%m-%d_1920x1080.jpg)

wget https://api.berryapi.net/bing/image?1920/1200/0 -O /home/pan/bing-images/1920x1200/$(date +%Y-%m-%d_1920x1200.jpg)
~
~
-- INSERT --
  • 创建相关目录存储下载的图片
[root@hostname ~] cd /home/pan/
[root@hostname pan] mkdir bing-images
[root@hostname pan] cd bing-images
[root@hostname bing-images] mkdir 800x480
[root@hostname bing-images] mkdir 1920x1200
[root@hostname bing-images] mkdir 1920x1080
这个VPS是我的FTP服务器,同时使用了DirectoryLister做了目录索引,pan是站点的根目录,这样可以方便地通过FTP或者网页访问这些图片。

用于定时运行脚本的工具

crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

可以简单使用crontab -e命令来编辑定时任务

[root@hostname ~] crontab -e
# 输入内容如下
0 5 * * * ~/getBings.sh
# 含义是每天5点执行getBings.sh脚本文件
~
~
-- INSERT --
更多crontab相关命令请参考:Linux定时任务Crontab命令详解

成果展示