[bing] Bing의 오늘 사진을 얻을 수있는 방법이 있습니까?

프로그래밍 방식으로 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&amp;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&amp;cp=2.794725~37.335197&amp;lvl=7&amp;dir=0&amp;sty=b&amp;q=Lake%20Turkana%2C%20Kenya&amp;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&amp;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&amp;FORM=hphot3#view=detail&amp;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&amp;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 형식 을 가져 오는 방법을 찾았 습니다.

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

노트

      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 구현이 필요한 경우를 대비하여 절차를 처리하는 간단한 클래스를 작성했습니다.

https://github.com/grubersjoe/bing-daily-photo


답변

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