translator - 有沒有辦法獲得Bing當天的照片?




yahoo bing (12)

有沒有辦法以編程方式獲取Bing背景圖像?

Bing的API似乎沒有提供這樣的功能,也許還有另一種方式?


BING IMAGE的JSON格式

我找到了一種獲取當天Bing ImageJSON格式的方法

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

注意

n=你想要的圖像的數量(你可以使用整數 ),
mkt=您的位置(例如: 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."
  }
}

使用images[]url

並將其添加到'http://bing.com'

這裡的網址是"url": "\/az\/hprichbg\/rb\/DayGecko_EN-US8730336235_1366x768.jpg"



使用來自@Siv的URL,這是一個更新<div class="bgimg" id="background">的JavaScript示例

function GetImageURL(ans) {
    var suffix = ans.images[0].url 
    document.getElementById("background").style.backgroundImage = 'url("' + 
    'http://bing.com/' + suffix + '"'
}

function GetJSON() {
    var xmlhttp = new XMLHttpRequest()
    var url = "https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1"

    xmlhttp.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == 200) {
            var ans = JSON.parse(this.responseText);
            GetImageURL(ans);
        }
    };
    xmlhttp.open("GET", url, true);
    xmlhttp.send();
}


window.onload = function () {
    GetJSON()
}

這堂課的CSS是:

.bgimg {
    height: 100%;
    position: relative;
    opacity: 0.95;
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
}

單線程PowerShell(3.0或更高版本)

irmInvoke-RestMethod的別名

irm "bing.com$((irm "bing.com/HPImageArchive.aspx?format=js&mkt=en-IN&n=1").images[0].url)" -OutFile bing.jpg

您可以使用istartedsomething.com的Bing Image Archive 。 這是一個非官方的Bing Image Archive。 它使用自製端點,有助於檢索圖像:

GET /bingimages/getimage.php?id=<image_id>

id是一個字符串,包含圖像發布的日期和發布圖像的國家/地區。 id必須符合以下格式: YYYYMMDD-xx ,其中:

  • YYYY是年份,用四位數字寫成。
  • MM是月份,用兩位數字寫成。
  • DD是一天,用兩位數字寫成。
  • xx是國家指標。 Bing Image Archive目前支持以下國家/地區:
    • au :澳大利亞。
    • br :巴西。
    • ca :加拿大。
    • cn :中國。
    • de :德國。
    • fr :法國。
    • gb :英國。
    • jp :日本。
    • nz :新西蘭。
    • uk :英國。
    • us :美利堅合眾國。

如果它有一些信息,它返回一個有用的JSON對象,如果沒有任何信息,則返回false。

示例1: 回顧2014年5月24日在新西蘭發布的Bing日常圖像

圖片ID為20140524-nz因為要求的圖片發佈於20140524-nz年05月24日,並在新西蘭出版,其國家指標為nz

http://www.istartedsomething.com/bingimages/getimage.php?id=20140524-nz返回以下JSON:

{
    "url":"\/az\/hprichbg\/rb\/LakeMagadiFlamingos_ROW9792683076_1366x768.jpg",
    "region":"nz",
    "date":"2014-05-24",
    "copyright":"Flamingos take flight, Lake Magadi, Kenya (\u00a9 Bobby Haas\/Getty Images)(Bing New Zealand)",
    "imageurl":"http:\/\/www.istartedsomething.com\/bingimages\/cache\/LakeMagadiFlamingos_ROW9792683076_1366x768.jpg",
    "hotspots":[],
    "video":[]
}

您可以使用imageurl字段或url (Bing URL路徑)字段來獲取圖像。

例2: 回顧1998年7月12日在法國出版的Bing日常圖像

圖片ID為19980712-fr因為要求的圖片於1998年12月7日發布,並在法國出版,其國家指標為fr

http://www.istartedsomething.com/bingimages/getimage.php?id=19980712-fr返回false因為法國在07/12/1998沒有Bing Daily Image(Bing此時甚至不存在)。


您可以考慮獲取該URL的file_content並在文件中搜索該圖像。 不確定這是最好的方式,但這是一種方式。





看看Github上的bing-desktop-wallpaper-changer 。 該腳本是用python編寫的,我希望你在那裡找到答案。

#!/usr/bin/python
#-*- coding: utf-8 -*-

import os
import urllib
import urllib2
from bs4 import BeautifulSoup

# Get BingXML file which contains the URL of the Bing Photo of the day
# idx = Number days previous the present day. 0 means current day, 1 means       yesterday, etc
# n = Number of images predious the day given by idx
# mkt denotes your location. e.g. en-US means United States. Put in your  country code
BingXML_URL = "http://www.bing.com/HPImageArchive.aspx?     format=xml&idx=0&n=1&mkt=en-US"
page = urllib2.urlopen(BingXML_URL)
BingXML = BeautifulSoup(page, "lxml")

# For extracting complete URL of the image
Images = BingXML.find_all('image')
ImageURL = "https://www.bing.com" + Images[0].url.text
ImageName = Images[0].startdate.text+".jpg"

urllib.urlretrieve(ImageURL, ImageName)

看看Github項目的詳細代碼


讓我告訴你如何使用javascript和php獲取當天的日常壁紙,

試試這個js代碼:

<script>
      fetch('https://techytricks97.000webhostapp.com/')
      .then(response => response.text())
      .then(text=>{document.body.style.background="url('"+text+"')";document.body.style.backgroundSize='cover';});
</script>

這個腳本將當天的日常圖像設置為html文檔的背景(您可以根據您的使用情況進一步修改它)。

這個鏈接 - https://techytricks97.000webhostapp.com每天返回當天的bing壁紙。

fetch()https://techytricks97.000webhostapp.com獲取今天bing圖像的url和text=>{document.body.style.background="url('"+text+"')";document.body.style.backgroundSize='cover';}將其設置為背景。

注意: Microsoft不允許使用bing daily的圖像作為您網站的背景,您可以將其用作手機/桌面牆紙,或其他提及版權的內容。

這是http://techytricks97.000webhostapp.com上使用的php代碼:

<?php
header('Access-Control-Allow-Origin: *');
ini_set('display_errors', 1);
$reg=file_get_contents('https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-IN');
$reg=json_decode($reg);
$meka=$reg->images[0]->url;
echo('http://www.bing.com'.$meka);
?>

您只能使用http://techytricks97.000webhostapp.com或者可以在您的服務器上設置您自己的php文件。

另一個注意事項:我沒有使用javascript,因為瀏覽器的同源策略限制了它,但允許從我的php文件中取出,因為我已經放置了header('Access-Control-Allow-Origin: *'); 在我的PHP代碼中。 我可以使用其他代理,但是他們的流量很高(我的網站一天幾乎沒有任何點擊)。

如果您使用的是任何其他語言,則只需閱讀此文件( http://techytricks97.000wewebhostapp.com


這個JavaScript將通過將div的背景圖像更改為當天bing圖像的背景來回答“如何處理api”。

function PullBackground() {
    var ajaxRequest = new XMLHttpRequest(), background = ''; 
    ajaxRequest.open('POST', "http://www.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1&mkt=en-US", true);
    ajaxRequest.setRequestHeader("Connection", "close");
    ajaxRequest.send('');
    ajaxRequest.onreadystatechange = function () {
        if (ajaxRequest.readyState == 4) {
            background = ajaxRequest.responseText;
            var res = background.split("<url>"); 
            var res1 = res[1].split("</url>");
            background = res1[0];

            document.getElementById('NameOfTheDivToChange').style.backgroundImage = "url('http://bing.com" + background + "')"
            document.getElementById('NameOfTheDivToChange').style.backgroundSize = "100%";
        }
    }
}