osx 每天自动获取 bing 壁纸-kb88凯时官网登录

时间:2018-07-26
阅读:

自从换了 mac 之后,直观的感觉是桌面变的更空旷了(本来我就不喜欢在桌面放东西)。所以,壁纸成了装点桌面的唯一工具。正好 bing 的背景图片每天都会换一张,并且几乎每张图片都让人感觉非常大气,所以就萌生了用 bing 图片做壁纸的想法(话说让我知道 bing 每天都会换背景图,还是因为之前做 kratos 的时候有小伙伴提出网页的背景图能不能调用 bing 的接口)。我先看了一下 apple store 里面有没有这种 app,果不其然还真有,但是这价格的话,emmmmm 算了还是自己整吧。

利弊分析

bing 的图片有 4 种像素,分别是 1920x1200、1920x1080、800x480、400x240,而 mac 可以支持到 2880 x 1800,所以在视觉上看着壁纸不是非常的清晰的(系统自带的壁纸是 5120 × 3684)。

这里制作的自动化脚本是每次开机启动的,如果一天开机好几次的话,脚本会自带检测是否已经下载过图片,从而不会重复下载。

战前准备

mac 中自带的 automator

脚本

充满智慧的大脑

战斗开始

1、首先我们知道 bing 图片是有一个接口的,也就是 https://cn.bing.com/hpimagearchive.aspx?format=js&n=1 ,他的主要内容如下,这里我们需要的是第 7 行 url,也就是图片的地址,所以在脚本中只要拉这个 url 地址即可实现需求。

{
	images: [
		{
			startdate: "20180315",
			fullstartdate: "201803151600",
			enddate: "20180316",
			url: "/az/hprichbg/rb/wolongpanda_zh-cn10957042976_1920x1080.jpg",
			urlbase: "/az/hprichbg/rb/wolongpanda_zh-cn10957042976",
			d88尊龙官网手机app copyright: "卧龙国家级自然保护区的大熊猫,中国四川 (© lynn m. stone/minden pictures)",
			d88尊龙官网手机app copyrightlink: "http://www.bing.com/search?q=大熊猫&form=hpcapt&mkt=zh-cn",
			quiz: "/search?q=bing homepage quiz&filters=wqoskey:"hpquiz_20180315_wolongpanda"&form=hpquiz",
			wp: false,
			hsh: "6fa3921773323a6e7f0f45447e548f91",
			drk: 1,
			top: 1,
			bot: 1,
			hs: [ ]
		}
	],
	tooltips: {
		loading: "正在加载...",
		previous: "上一个图像",
		next: "下一个图像",
		walle: "此图片不能下载用作壁纸。",
		walls: "下载今日美图。仅限用作桌面壁纸。"
	}
}

2、bing-wallpaper 是一个可以从 bing 下载当天最新图片并将其保存到目录的脚本。

#!/usr/bin/env bash
# shellcheck disable=sc1117
 
readonly script=$(basename "$0")
readonly version='0.4.0'
readonly resolutions=(1920x1200 1920x1080 800x480 400x240)
 
usage() {
cat <      the name of the downloaded picture. defaults to
                                 the upstream name.
  -p --picturedir   the full path to the picture download dir.
                                 will be created if it does not exist.
                                 [default: $home/pictures/bing-wallpapers/]
  -r --resolution    the resolution of the image to retrieve.
                                 supported resolutions: ${resolutions[*]}
  -w --set-wallpaper             set downloaded picture as wallpaper (only mac support for now).
  -h --help                      show this screen.
  --version                      show version.
eof
}
 
print_message() {
    if [ ! "$quiet" ]; then
        printf "%sn" "${1}"
    fi
}
 
# defaults
picture_dir="$home/pictures/bing-wallpapers/"
resolution="1920x1080"
 
# option parsing
while [[ $# -gt 0 ]]; do
    key="$1"
 
    case $key in
        -r|--resolution)
            resolution="$2"
            shift
            ;;
        -p|--picturedir)
            picture_dir="$2"
            shift
            ;;
        -n|--filename)
            filename="$2"
            shift
            ;;
        -f|--force)
            force=true
            ;;
        -s|--ssl)
            ssl=true
            ;;
        -q|--quiet)
            quiet=true
            ;;
        -h|--help)
            usage
            exit 0
            ;;
        -w|--set-wallpaper)
            set_wallpaper=true
            ;;
        --version)
            printf "%sn" $version
            exit 0
            ;;
        *)
            (>&2 printf "unknown parameter: %sn" "$1")
            usage
            exit 1
            ;;
    esac
    shift
done
 
# set options
[ $quiet ] && curl_quiet='-s'
[ $ssl ]   && proto='https'   || proto='http'
 
# create picture directory if it doesn't already exist
mkdir -p "${picture_dir}"
 
# parse bing.com and acquire picture 
read -ra urls < <(curl -sl $proto://www.bing.com | 
    grep -eo "url:'.*?'" | 
    sed -e "s/url:'([^']*)'.*/$proto://bing.com1/" | 
    sed -e "s/\//g" | 
    sed -e "s/([[:digit:]]*x[[:digit:]]*)/$resolution/")
 
for p in "${urls[@]}"; do
    if [ -z "$filename" ]; then
        filename=$(echo "$p"|sed -e "s/.*/(.*)/1/")
    else
        filename="$filename"
    fi
    if [ $force ] || [ ! -f "$picture_dir/$filename" ]; then
        print_message "downloading: $filename..."
        curl $curl_quiet -lo "$picture_dir/$filename" "$p"
    else
        print_message "skipping: $filename..."
    fi
done
 
if [ $set_wallpaper ]; then
    /usr/bin/osascript<

3、在脚本的第 39-40 行,是设置图片的保存位置以及图片的像素。这里默认的是最高像素,保存的位置为 /pictures/bing-wallpapers/ 这个文件夹中,下图是这段时间我电脑里拉到的一些图片。

5aef1c704a5fb.png

4、将修改好的脚本添加到 automator 的工作流程中,左边选择“运行 shell 脚本”

5aef1c70a8b1f.png

5、将保存好的工作流程添加到“登录项”中,从而实现开机自动运行

5aef1c70e8a26.png

6、最后,我们设置桌面背景,添加壁纸所在的文件夹,然后再勾选更改图片的频率为每天

5aef1c712b4ec.png

返回顶部
顶部
网站地图