프로그래밍 방식으로 Bing 배경 이미지를 가져올 수있는 방법이 있습니까?
Bing의 API가 이러한 기능을 제공하지 않는 것 같습니다. 다른 방법이 있습니까?
답변
가장 좋은 방법은 AJAX 호출을 통해 직접 수행하는 방식을 모방하는 것입니다.
이 URL을 호출하고 XML 역 직렬화를 통해 정보를 추출합니다.
XML : http://www.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1&mkt=en-US
JSON : http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US
RSS : http://www.bing.com/HPImageArchive.aspx?format=rss&idx=0&n=1&mkt=en-US
mkt
속성은 분명 ‘EN-US’가 아닌 다른 지역으로 변경 될 수 있습니다뿐만 아니라 특정 지역에 대한 상관 없어 전체 경우의 선택 해제 할 수 있습니다.
_1366x768.jpg
이미지 이름에 추가 되는 접미사는 _1920x1080.jpg
풀 HD 등의 다른 해상도로 수정할 수있는 것으로 보입니다 .
다음은 2013 년 9 월 28 일 현재 XML 형식의 데이터 덤프입니다.
<?xml version="1.0" encoding="utf-8"?>
<images>
<image>
<startdate>20130928</startdate>
<fullstartdate>201309280000</fullstartdate>
<enddate>20130929</enddate>
<url>/az/hprichbg/rb/LakeTurkana_EN-US15976511099_1366x768.jpg</url>
<urlBase>/az/hprichbg/rb/LakeTurkana_EN-US15976511099</urlBase>
<copyright>Lava rock pools at the southern end of Lake Turkana, in Kenya (© Nigel Pavitt/Corbis)</copyright>
<copyrightlink>http://www.bing.com/search?q=Lake+Turkana%2C+Kenya&form=hpcapt</copyrightlink>
<drk>1</drk>
<top>1</top>
<bot>1</bot>
<hotspots>
<hotspot>
<desc>These are the southern reaches of a lake...</desc>
<link>http://www.bing.com/maps/?v=2&cp=2.794725~37.335197&lvl=7&dir=0&sty=b&q=Lake%20Turkana%2C%20Kenya&form=hphot1</link>
<query>That stretches for 180 miles, up into another country</query>
<LocX>15</LocX>
<LocY>33</LocY>
</hotspot>
<hotspot>
<desc>This body of water was once called the Jade Sea.</desc>
<link>http://www.bing.com/search?q=green+algae&form=hphot2</link>
<query>What gives the water here its sometimes vibrant hue?</query>
<LocX>37</LocX>
<LocY>42</LocY>
</hotspot>
<hotspot>
<desc>One of the world's most powerful predators lives here.</desc>
<link>http://www.bing.com/videos/search?q=Underwater+Croc+Cams+National+Geographic&FORM=hphot3#view=detail&mid=D25E1909D3514A8732C5D25E1909D3514A8732C5</link>
<query>See some rare underwater footage of the beast</query>
<LocX>66</LocX>
<LocY>33</LocY>
</hotspot>
<hotspot>
<desc>Many fossils of ancient human ancestors have been uncovered in the surrounding area.</desc>
<link>http://www.bing.com/search?q=Turkana+Boy&form=hphot4</link>
<query>One skeleton was so complete, paleoanthropologists gave him a name</query>
<LocX>82</LocX>
<LocY>41</LocY>
</hotspot>
</hotspots>
<messages></messages>
</image>
<tooltips>
<loadMessage>
<message>Indlæser...</message>
</loadMessage>
<previousImage>
<text>Forrige</text>
</previousImage>
<nextImage>
<text>Næste</text>
</nextImage>
<play>
<text>Afspil</text>
</play>
<pause>
<text>Pause</text>
</pause>
</tooltips>
</images>
답변
BING 이미지의 JSON 형식
오늘 의 Bing 이미지 의 JSON 형식 을 가져 오는 방법을 찾았 습니다.
노트
n=
원하는 이미지 수 (u can use Integers ),
mkt=
Your location (예 : en-US )
다음은 JSON 출력입니다.
{
"images": [
{
"startdate": "20141214",
"fullstartdate": "201412141830",
"enddate": "20141215",
"url": "\/az\/hprichbg\/rb\/BlackButte_EN-IN7038391888_1920x1080.jpg",
"urlbase": "\/az\/hprichbg\/rb\/BlackButte_EN-IN7038391888",
"copyright": "Black Butte, seen from the Mount Jefferson Wilderness, Oregon, USA (\u00a9 Marc Adamus\/Aurora Photos)",
"copyrightlink": "http:\/\/www.bing.com\/search?q=Black+Butte&qs=n&form=hpcapt&mkt=en-in&pq=black+butte&sc=8-11&sp=-1&sk=&cvid=228ac7f125f94bbaafd4a4abd4f9a32d",
"wp": true,
"hsh": "94156ae1e2e1be49f9b739d2b7bff65c",
"drk": 1,
"top": 1,
"bot": 1,
"hs": [
],
"msg": [
{
"title": "How does it feel\u2026",
"link": "http:\/\/www.bing.com\/videos\/search?q=Climbing+Black+Butte&FORM=pgbar1&mkt=en-in#view=detail&mid=58BDB2F2B9FCB85D597558BDB2F2B9FCB85D5975",
"text": "To climb 1961.7 m?"
},
{
"title": "On top of the world",
"link": "http:\/\/www.bing.com\/images\/search?q=Pictures+From+the+Top+of+Mount+Everest&FORM=pgbar2&mkt=en-in",
"text": "It's mountaineer's dream view"
}
]
}
],
"tooltips": {
"loading": "Loading...",
"previous": "Previous",
"next": "Next",
"walle": "This image is not available to download as wallpaper.",
"walls": "Download this image. Use of this image is restricted to wallpaper only."
}
}
사용 url
로부터를images[]
그리고 그것을 추가하십시오 'http://bing.com'
여기 URL은 "url": "\/az\/hprichbg\/rb\/DayGecko_EN-US8730336235_1366x768.jpg"
답변
Microsoft는 최근 Bing 월페이퍼 링크 가 있는 RSS 피드가 포함 된 Windows 7 용 Bing 동적 테마 를 게시했습니다 .
Bing 웹 사이트를로드하고 올바른 이미지 URL을 추측 하는 Python 스크립트 도 있지만 내 경험상 일반적으로 RSS 피드에서 제공하는 이미지보다 해상도가 더 낮습니다.
답변
나는 파티에 늦었지만 누군가 PHP 구현이 필요한 경우를 대비하여 절차를 처리하는 간단한 클래스를 작성했습니다.
답변
One Liner PowerShell (3.0 이상)
irm
에 대한 별칭입니다 Invoke-RestMethod
irm "bing.com$((irm "bing.com/HPImageArchive.aspx?format=js&mkt=en-IN&n=1").images[0].url)" -OutFile bing.jpg
답변
나도 Bing 이미지를 좋아하지만 이미지를 다운로드 할 목적으로 앱이 너무 부풀어 있습니다. 피들러와의 연결을 분석 한 후이 코드를 작성했습니다. 1920×1200에는 Bing 로고가 포함되어 있지만 해상도가 낮은 경우에는 로고가 없습니다.
설정 한 이미지 폴더에있는 임의의 이미지가 창에 표시되도록 할 수 있으므로 매일 다운로드하면 더 많은 임의의 이미지가 표시됩니다. “imageDir”을 유지하는 경우 해당 폴더에 대한 권한을 변경해야합니다. 그렇지 않으면 충돌이 발생합니다. 오류를 잡는 데 신경 쓰지 않았습니다. 마지막으로, 배경 화면을 오늘의 이미지로 설정하려면 줄의 주석 처리를 제거하거나 로그온 한 후 1 분 후에 프로그램을 실행하는 작업을 만들 수 있습니다.
using System;
using System.IO;
using System.Net;
//using System.Runtime.InteropServices;
namespace Bing
{
class Program
{
// [DllImport("user32.dll", CharSet = CharSet.Auto)]
// private static extern Int32 SystemParametersInfo(UInt32 uiAction, UInt32 uiParam, String pvParam, UInt32 fWinIni);
private static String imgDir = @"C:\Windows\Web\Wallpaper\Bing\";
static void Main(string[] args)
{
String imageFileName;
if (!Directory.Exists(imgDir))
Directory.CreateDirectory(imgDir);
for (byte i = 6; i >= 0; i--)
{
imageFileName = imgDir + DateTime.Today.AddDays(-i).ToString("yyy-MM-dd") + ".jpg";
if (!File.Exists(imageFileName))
{
string response = null;
Connect(ref response, i);
ProcessXml(ref response);
using (WebClient client = new WebClient())
client.DownloadFile("http://www.bing.com" + response + "_1920x1200.jpg", imageFileName);
}
}
//SystemParametersInfo(20, 0, imageFileName, 0x01 | 0x02);
}
private static void Connect(ref string res, byte i)
{
HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create("http://www.bing.com/hpimagearchive.aspx?format=xml&idx=" + i + "&n=1&mbl=1&mkt=en-ww");
webrequest.KeepAlive = false;
webrequest.Method = "GET";
using (HttpWebResponse webresponse = (HttpWebResponse)webrequest.GetResponse())
using (StreamReader loResponseStream = new StreamReader(webresponse.GetResponseStream()))
res = loResponseStream.ReadToEnd();
}
private static void ProcessXml(ref string xmlString)
{
using (System.Xml.XmlReader reader = System.Xml.XmlReader.Create(new StringReader(xmlString)))
{
reader.ReadToFollowing("urlBase");
xmlString = reader.ReadElementContentAsString();
}
}
}
}
답변
많은 사람들이 새 RSS 링크를 요청하는 것을 보았습니다. URL의 형식 매개 변수를 “rss”로 변경하기 만하면됩니다.
RSS : http://www.bing.com/HPImageArchive.aspx?format=rss&idx=0&n=1&mkt=en-US