晨旭的博客
你想干什么!
晨旭的博客~
用一个小脚本在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就好啦→_→ 

右击,运行!

啪!

https://source.papapoi.com/wp-content/plugins/new-ueditor/ueditor/php/upload/25111488700411.png?imageView2/2/w/800|watermark/1/image/aHR0cDovL3NvdXJjZS5wYXBhcG9pLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNi8wOC9sb2dvcGljLnBuZw==/dissolve/100/gravity/SouthEast/dx/10/dy/10

啪啪啪!

https://source.papapoi.com/wp-content/plugins/new-ueditor/ueditor/php/upload/48971488700411.png?imageView2/2/w/800|watermark/1/image/aHR0cDovL3NvdXJjZS5wYXBhcG9pLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNi8wOC9sb2dvcGljLnBuZw==/dissolve/100/gravity/SouthEast/dx/10/dy/10

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

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

应该正常了吧。。

赞赏
如非特殊说明,本站所有文章均采用知识共享 署名-非商业性使用-相同方式共享4.0国际许可协议(CC BY-NC-SA 4.0)进行许可。

发表评论

textsms
account_circle
email

  • https://secure.gravatar.com/avatar/0fee0e7f4f205b8a22bde1d6ecf63747?s=80&d=mm&r=x
    Google Chrome 50.0.2661.102 Google Chrome 50.0.2661.102 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36

    图片分辨率呢?

    2年前回复

晨旭的博客~

用一个小脚本在win/*nix上一键下载bing每日壁纸
昨天在逛zhiyb的github(http://zhiyb.github.io/)的时候。。。点到了他的OneDrive里看了看,结果发现了一个好像很有用的小脚本:bing.sh#!/bin/bash -e url="http://www.bin…
扫描二维码继续阅读
2016-09-29