获取bing每日壁纸作为桌面壁纸

发布于:2018-11-07 11:31

逛论坛突然发现有人晒桌面壁纸,然后有人分享打包的bing壁纸,好几百M,确实蛮好看的。打开bing,f12看了一下图片链接,想,写个爬虫,把壁纸全部down下来。嗯。。。[思考]

再转念一想,我down下来干嘛呢,每天设置一下嘛?没意思,要每天我开电脑搬砖的时候,自动给我设置好才是正确姿势嘛。于是搜了一下,我bing还真有接口,良心了!

-------------------这个来自网友分享,感谢-------------------------------------------

https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1

idx表示请求的天数序列(倒序);0代表今天、1代表昨天…以此类推

n表示请求的天数数量(请求几天的图片);1为当天一天、2为昨天和今天

-----------------------------------------------------------------------------------------------

好了,接口有了,岂不是为所欲为了。

调用win接口设置壁纸接口如下:

[DllImport("user32.dll", EntryPoint = "SystemParametersInfo")]

public static extern int SystemParametersInfo(

int uAction,

int uParam,

string lpvParam,

int fuWinIni

);

有了这些,就可以开撸了,具体我就不解释了,都是基础的东西。

public void SetBingWallpaper()

{

string img = "";

try

{

HttpClient client = new HttpClient();

var res = client.GetStreamAsync("https://cn.bing.com/HPImageArchive.aspx?idx=0&n=1").Result;

XmlDocument doc = new XmlDocument();

doc.Load(res);

XmlNodeList list = doc.GetElementsByTagName("url");

if (list.Count > 0)

{

img = "https://cn.bing.com/" + list[0].InnerText;

img = img.Replace("1366x768", "1920x1080");

var stream = client.GetStreamAsync(img).Result;

Bitmap bmp= (Bitmap)Image.FromStream(stream);

string path = AppDomain.CurrentDomain.BaseDirectory + "WallPaper";

if (!Directory.Exists(path))

{

Directory.CreateDirectory(path);

}

path = path + "\\bing" + DateTime.Now.ToString("yyyyMMddHH") + ".jpg";

bmp.Save(path, ImageFormat.Jpeg);

setWallpaperApi(path);

}

}

catch

{

//记个异常信息

}

}

写个控制台脚本,开机运行就好了,也可以放在任何你喜欢的地方。至于爬虫爬大几百M图片,不实用,不弄了。