用一个小脚本在win/*nix上一键下载bing每日壁纸

昨天在逛zhiyb的github(http://zhiyb.github.io/)的时候。。。点到了他的OneDrive里看了看,结果发现了一个好像很有用的小脚本:

bing.sh

#!/bin/bash -e
url="http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=10"
data="$(curl -so - "$url")"
num="$(echo "$data" | jq -r ".images | length")"
mkdir -p images
cd images
for ((i = 0; i < $num; i++)); do
imgdata="$(echo "$data" | jq -r ".images[$i]")"
url="$(echo "$imgdata" | jq -r ".url")"
[ "${url:0:4}" != "http" ] && url="http://www.bing.com/$url"
echo "$url"
base="$(basename "$url")"
base="${base%%_*}.${base##*.}"
[ -s "$base" ] && continue
curl -o "$base" "$url"
mkdir -p json
echo "$imgdata" > json/"$base.json"
done

然而跑了跑好像少了什么组件,没跑成。。

所以我用powershell改写了一个(毕竟咱用的是windows

花了一点时间就写好了。(才发现powershell简直神器啊

bing.ps1

#by chenxublog.com
mkdir images
cd images
mkdir jsons
cd jsons
$url = "http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=10"
$time = Get-Date
$data = Invoke-WebRequest $url
$data.Content | Out-File $time.DayOfYear
$decode = ConvertFrom-Json($data)
cd ..
$range = 1..8
$count = $range.Count
for($i=0; $i -lt $count; $i++)
{
    $temp = $decode.images.Get($i)
    Invoke-WebRequest $temp.url -OutFile ($temp.hsh + ".jpg")
}

把上面的文件保存为bing.ps1就好啦→_→ 

右击,运行!

啪!

啪啪啪!

这样每天就可以收到八张好看的壁纸啦~~

2017.3.5补充:

必应json改规则了,代码更新~~~

#by chenxublog.com
$x = Split-Path -Parent $MyInvocation.MyCommand.Definition
cd $x
mkdir images
cd images
mkdir jsons
cd jsons
$url = "http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=10"
$time = Get-Date
$data = Invoke-WebRequest $url
$data.Content | Out-File $time.DayOfYear
$decode = ConvertFrom-Json($data)
cd ..
$range = 1..8
$count = $range.Count
for($i=0; $i -lt $count; $i++)
{
    $temp = $decode.images.Get($i)
    $urlsplit = -Join("http://www.bing.com",$temp.url)
    echo $urlsplit
    Invoke-WebRequest $urlsplit -OutFile ($temp.hsh + ".jpg")
}
echo ok!
pause

应该正常了吧。。