web-dev-qa-db-fra.com

Y a-t-il un moyen d'obtenir la photo de Bing du jour?

Existe-t-il un moyen d'obtenir l'image de fond Bing par programmation?

L'API de Bing ne semble pas fournir une telle fonctionnalité, il y a peut-être un autre moyen?

78
Mahmoud Hossam

Je pense que le meilleur moyen consiste à imiter la façon dont ils le font eux-mêmes via leurs appels AJAX.

Ils appellent cette URL et extraient les informations via la désérialisation 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

L'attribut mkt peut évidemment être changé pour une région différente de celle "en-US", mais peut également être désactivé si vous ne vous souciez pas d'une région spécifique.

Notez que le suffixe _1366x768.jpg ajouté aux noms d'image semble être modifiable dans différentes résolutions (comme _1920x1080.jpg pour la HD intégrale et éventuellement d'autres).

Voici un extrait des données au 28/09/2013, au format 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>

FORMAT JSON de BING IMAGE

J'ai trouvé un moyen de récupérer le format JSON de l'image Bing du jour

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

Remarque

n= Le nombre d'images que vous voulez (vous pouvez utiliser Entiers),
mkt= Votre emplacement (exemple: en-US)


Voici la sortie JSON qui ressemble à

  {
  "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."
  }
}

utilisez la url du images[]

et l'ajouter à 'http://bing.com'

ici l'url est "url": "\/az\/hprichbg\/rb\/DayGecko_EN-US8730336235_1366x768.jpg"

28
Siv

Microsoft a récemment publié un Thème dynamique Bing pour Windows 7, qui contient un flux RSS contenant des liens vers des fonds d’écran Bing .

Il existe également un script - Python qui essaie de charger le site Web Bing et de deviner l’URL de l’image correcte, mais d’après mon expérience, il en résulte généralement une image de résolution inférieure à celle proposée par le flux RSS.

10
karafior

Je suis en retard à la fête, mais au cas où quelqu'un aurait besoin d'une implémentation de PHP: j'ai écrit une classe simple qui gère la procédure

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

6
Jonathan Gruber

J'aime aussi les images Bing mais leur application est trop lourde pour pouvoir télécharger des images. Après avoir analysé la connexion avec le violoneux, j’ai écrit ce code. Le logo 1920/1200 est livré avec le logo Bing intégré, mais les résolutions inférieures ne l’ont pas. 

Vous pouvez demander à Windows de vous montrer des images aléatoires à partir du dossier d’images que vous avez défini. Ainsi, si vous les téléchargez tous les jours, il vous montrera plus d’images aléatoires. Si vous conservez "imageDir", vous devez modifier les autorisations sur ce dossier. Dans ce cas, le blocage se produira. fond d'écran à l'image d'aujourd'hui ou vous pouvez créer une tâche pour exécuter le programme, disons une minute après l'ouverture de session.

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();
            }
        }        
    }
}
4
PersyJack

Un liner PowerShell (3.0 ou supérieur)

irm est un alias pour Invoke-RestMethod

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

J'ai vu que beaucoup de gens demandent aussi le nouveau lien RSS, il suffit de changer le paramètre de format dans l'URL en "rss".

RSS: http://www.bing.com/HPImageArchive.aspx?format=rss&idx=0&n=1&mkt=en-US

3
warmth

Ce code JavaScript répondra à la question «Que faire de l’API» en modifiant l’image d’arrière-plan d’une div en arrière-plan de l’image bing du jour en cours?.

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%";
        }
    }
}
2
user3324764

Simple PowerShell, placez-le dans un dossier, créez une tâche quotidienne dans le Planificateur de tâches Windows, le script enregistre les images dans son dossier d'exécution, puis choisissez votre dossier en arrière-plan dans les paramètres de l'arrière-plan du bureau.

[xml]$doc = (New-Object System.Net.WebClient).DownloadString("https://www.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1&mkt=ru-RU")
$url = $doc.images.image.url
$url = "https://www.bing.com/" + $url -replace "_1366x768","_1920x1200"

Write-Output $url

$fileName = Split-Path $url -leaf
$output = "$PSScriptRoot\$fileName"

$start_time = Get-Date
Invoke-WebRequest -Uri $url -OutFile $output
Write-Output "Saved to: $output Time taken: $((Get-Date).Subtract($start_time).Seconds) second(s)"
2
Serge

Au cas où quelqu'un chercherait des implémentations possibles, j'ai écrit un petit programme en ligne de commande en C # pour télécharger, enregistrer et définir mon arrière-plan comme Image Bing du jour. N'hésitez pas à le modifier selon vos besoins personnels. https://github.com/josueespinosa/BingBackground

using Microsoft.Win32;
using Newtonsoft.Json;
using System;
using System.Drawing;
using System.IO;
using System.Net;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace BingBackground
{
    class BingBackground
    {
        private static void Main(string[] args)
        {
            string urlBase = GetBackgroundUrlBase();
            Image background = DownloadBackground(urlBase + GetResolutionExtension(urlBase));
            SaveBackground(background);
            SetBackground(background, PicturePosition.Fill);
        }

        private static dynamic DownloadJson()
        {
            using (WebClient webClient = new WebClient())
            {
                Console.WriteLine("Downloading JSON...");
                string jsonString = webClient.DownloadString("https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US");
                return JsonConvert.DeserializeObject<dynamic>(jsonString);
            }
        }

        private static string GetBackgroundUrlBase()
        {
            dynamic jsonObject = DownloadJson();
            return "https://www.bing.com" + jsonObject.images[0].urlbase;
        }

        private static string GetBackgroundTitle()
        {
            dynamic jsonObject = DownloadJson();
            string copyrightText = jsonObject.images[0].copyright;
            return copyrightText.Substring(0, copyrightText.IndexOf(" ("));
        }

        private static bool WebsiteExists(string url)
        {
            try
            {
                WebRequest request = WebRequest.Create(url);
                request.Method = "HEAD";
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                return response.StatusCode == HttpStatusCode.OK;
            }
            catch
            {
                return false;
            }
        }

        private static string GetResolutionExtension(string url)
        {
            Rectangle resolution = Screen.PrimaryScreen.Bounds;
            string widthByHeight = resolution.Width + "x" + resolution.Height;
            string potentialExtension = "_" + widthByHeight + ".jpg";
            if (WebsiteExists(url + potentialExtension))
            {
                Console.WriteLine("Background for " + widthByHeight + " found.");
                return potentialExtension;
            }
            else
            {
                Console.WriteLine("No background for " + widthByHeight + " was found.");
                Console.WriteLine("Using 1920x1080 instead.");
                return "_1920x1080.jpg";
            }
        }

        private static Image DownloadBackground(string url)
        {
            Console.WriteLine("Downloading background...");
            WebRequest request = WebRequest.Create(url);
            WebResponse reponse = request.GetResponse();
            Stream stream = reponse.GetResponseStream();
            return Image.FromStream(stream);
        }

        private static string GetBackgroundImagePath()
        {
            string directory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "Bing Backgrounds", DateTime.Now.Year.ToString());
            Directory.CreateDirectory(directory);
            return Path.Combine(directory, DateTime.Now.ToString("M-d-yyyy") + ".bmp");
        }

        private static void SaveBackground(Image background)
        {
            Console.WriteLine("Saving background...");
            background.Save(GetBackgroundImagePath(), System.Drawing.Imaging.ImageFormat.Bmp);
        }

        private enum PicturePosition
        {
            Tile,
            Center,
            Stretch,
            Fit,
            Fill
        }

        internal sealed class NativeMethods
        {
            [DllImport("user32.dll", CharSet = CharSet.Auto)]
            internal static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
        }

        private static void SetBackground(Image background, PicturePosition style)
        {
            Console.WriteLine("Setting background...");
            using (RegistryKey key = Registry.CurrentUser.OpenSubKey(Path.Combine("Control Panel", "Desktop"), true))
            {
                switch (style)
                {
                    case PicturePosition.Tile:
                        key.SetValue("PicturePosition", "0");
                        key.SetValue("TileWallpaper", "1");
                        break;
                    case PicturePosition.Center:
                        key.SetValue("PicturePosition", "0");
                        key.SetValue("TileWallpaper", "0");
                        break;
                    case PicturePosition.Stretch:
                        key.SetValue("PicturePosition", "2");
                        key.SetValue("TileWallpaper", "0");
                        break;
                    case PicturePosition.Fit:
                        key.SetValue("PicturePosition", "6");
                        key.SetValue("TileWallpaper", "0");
                        break;
                    case PicturePosition.Fill:
                        key.SetValue("PicturePosition", "10");
                        key.SetValue("TileWallpaper", "0");
                        break;
                }
            }
            const int SetDesktopBackground = 20;
            const int UpdateIniFile = 1;
            const int SendWindowsIniChange = 2;
            NativeMethods.SystemParametersInfo(SetDesktopBackground, 0, GetBackgroundImagePath(), UpdateIniFile | SendWindowsIniChange);
        }
    }
}
2
Josue Espinosa

Laissez-moi vous dire comment obtenir le fond d'écran quotidien de Bing en utilisant javascript et php, 

Essayez ce code 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>

Ce script définit l'image quotidienne du jour comme arrière-plan de votre document HTML (vous pouvez le modifier davantage en fonction de votre utilisation).

Ce lien - https://techytricks97.000webhostapp.com renvoie le fond d'écran Bing du jour, tous les jours.

fetch() obtient l'url de l'image bing d'aujourd'hui à partir de https://techytricks97.000webhostapp.com et text=>{document.body.style.background="url('"+text+"')";document.body.style.backgroundSize='cover';} la définit comme arrière-plan.

Remarque: Microsoft n'autorise pas l'utilisation des images de bing daily comme arrière-plan de votre site. Vous pouvez également l'utiliser comme fond d'écran pour votre téléphone/votre ordinateur de bureau ou pour toute autre chose qui mentionne le copyright.

Voici le code php utilisé sur http://techytricks97.000webhostapp.com :

<?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);
?>

Vous pouvez utiliser uniquement http://techytricks97.000webhostapp.com ou configurer votre propre fichier php sur votre serveur.

Autre remarque: Je n'ai pas utilisé javascript uniquement, car la même règle d'origine que le navigateur le restreint, mais la récupération depuis mon fichier php est autorisée car j'ai mis header('Access-Control-Allow-Origin: *'); dans mon code php. J'aurais pu utiliser d'autres serveurs mandataires, mais ils ont un trafic élevé (mon site n'a pratiquement aucun clic en une journée).

Si vous utilisez une autre langue, il vous suffit de lire ce fichier ( http://techytricks97.000webhostapp.com )

2
aryaman

J'avais du mal à obtenir un bon flux RSS que je pouvais utiliser avec John’s Background Switcher jusqu'à ce que j'ai trouvé ce flux feedburner qui semble fonctionner assez bien: http://feeds.feedburner.com/bingimages

1
ethanpil

https://bingdesktop.com/gallery/feed listera la dernière image Bing sans le logo Bing, maintenue par bingdesktop.com . Pris en charge les pays/régions suivants: AU, CA, CN, DE, FR, JP, US, GB.

par exemple, https://bingdesktop.com/gallery/feed?country=jp pour le Japon et https://bingdesktop.com/gallery/feed?country=us pour les États-Unis.

1
zhengchun

Regardez bing-desktop-wallpaper-changer on Github . Le script a été écrit en python et j'espère que vous y trouverez votre réponse.

#!/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)

Regardez le projet Github pour le code détaillé

1
Utkarsh Gupta

J'ai juste finalement décidé d'écrire un script en Python 3 pour obtenir le plus d'images (16) de l'archive XML. 

Alors maintenant, je peux archiver les images sans aucun effort. Il suffit de lancer le script Python.
J'organise les images dans des dossiers Année/Mois comme celui-ci: 2018> 12 décembre> 2018-12-06.jpg 

Ce script va dans mon dossier Bing Wallpapers. (qui est dans mon dossier Images)

import urllib.request as urllib
import xml.etree.ElementTree
from datetime import date
from dateutil import parser
import sys,os

months = "January","Febuary","March","April","May","June","July","August","September","October","November","December"

def downloadBingImages(start):
    try: data = urllib.urlopen("https://www.bing.com/hpimagearchive.aspx?format=xml&idx=%i&n=8&mkt=en-NZ"%start).read()
    except: sys.exit()
    e = xml.etree.ElementTree.fromstring(data)
    images = e.findall("image")

    for image in images:
        d = parser.parse(image.find("startdate").text) # parse("20181206")

        filename = str(d.date())+".jpg"                         #                  2018-12-06.jpg
        folder = "%i/%i %s/"%(d.year,d.month,months[d.month-1]) # 2018/12 December/
        file = folder+filename                                  # 2018/12 December/2018-12-06.jpg

        if not os.path.exists(folder): os.makedirs(folder)
        exists = os.path.isfile(file)

        url = "https://www.bing.com"+image.find("urlBase").text+"_1920x1200.jpg"
        print(("downloading","exists")[exists],filename,url)
        if not exists:
            try: urllib.urlretrieve(url,file)
            except: sys.exit()

    print()

# downloads the 16 latest bing images
downloadBingImages(-1)
downloadBingImages(7)

Code supplémentaire facultatif pour mettre à jour le fond d'écran: (mis sous downloadBingImages (7))

import ctypes,win32con

def getWallpaper():
    ubuf = ctypes.create_unicode_buffer(512)
    ctypes.windll.user32.SystemParametersInfoW(win32con.SPI_GETDESKWALLPAPER,len(ubuf),ubuf,0)
    return ubuf.value

def setWallpaper(path):
    changed = win32con.SPIF_UPDATEINIFILE | win32con.SPIF_SENDCHANGE
    ctypes.windll.user32.SystemParametersInfoW(win32con.SPI_SETDESKWALLPAPER,0,path,changed)

# update wallpaper after a week from current
wallpaper = getWallpaper()
if wallpaper.startswith(os.getcwd()): # has to be in script directory
    try: wallpaperDate = parser.parse(os.path.splitext(os.path.basename(wallpaper))[0])
    except: sys.exit() # not using an image with a parsable date

    t = date.today()
    if (t-wallpaperDate.date()).days>=7: # been a week or longer
        setWallpaper(os.path.abspath("%i/%i %s/"%(t.year,t.month,months[t.month-1])+str(t)+".jpg")) # .../2018/12 December/2018-12-14.jpg

exemple de sortie:

exists 2018-12-15.jpg https://www.bing.com/az/hprichbg/rb/YosemiteBridge_ROW11493343707_1920x1200.jpg
exists 2018-12-14.jpg https://www.bing.com/az/hprichbg/rb/CardinalBerries_ROW13321753978_1920x1200.jpg
exists 2018-12-13.jpg https://www.bing.com/az/hprichbg/rb/ReykjavikYuleLads_ROW12406174277_1920x1200.jpg
exists 2018-12-12.jpg https://www.bing.com/az/hprichbg/rb/PoinsettiaBuds_ROW14015106672_1920x1200.jpg
exists 2018-12-11.jpg https://www.bing.com/az/hprichbg/rb/KilimanjaroMawenzi_ROW12001033920_1920x1200.jpg
exists 2018-12-10.jpg https://www.bing.com/az/hprichbg/rb/ChristmasIslandCrab_ROW12174154872_1920x1200.jpg
exists 2018-12-09.jpg https://www.bing.com/az/hprichbg/rb/JohnDaySnow_ROW10922424229_1920x1200.jpg
exists 2018-12-08.jpg https://www.bing.com/az/hprichbg/rb/BanffEvergreens_ROW13248925556_1920x1200.jpg

exists 2018-12-07.jpg https://www.bing.com/az/hprichbg/rb/TaisetsuShirakawago_ROW12053480529_1920x1200.jpg
exists 2018-12-06.jpg https://www.bing.com/az/hprichbg/rb/Huuhkajat_ROW11700922065_1920x1200.jpg
exists 2018-12-05.jpg https://www.bing.com/az/hprichbg/rb/SurfersBronteBeach_ROW9358782018_1920x1200.jpg
exists 2018-12-04.jpg https://www.bing.com/az/hprichbg/rb/SphinxObservatory_ROW9691446114_1920x1200.jpg
exists 2018-12-03.jpg https://www.bing.com/az/hprichbg/rb/HussarPoint_ROW8654856850_1920x1200.jpg
exists 2018-12-02.jpg https://www.bing.com/az/hprichbg/rb/Nuuk_ROW12381573676_1920x1200.jpg
exists 2018-12-01.jpg https://www.bing.com/az/hprichbg/rb/RedAntarctica_ROW12620598839_1920x1200.jpg
exists 2018-11-30.jpg https://www.bing.com/az/hprichbg/rb/KilchurnSky_ROW9474162800_1920x1200.jpg

P.S. le script ci-dessus utilise &mkt=en-NZ pour les images néo-zélandaises.
Vous pouvez consulter le code du marché pour les autres pays ici .

Vous pouvez également voir toutes les images archivées depuis 2009 pour différents pays ici .
(seulement en 1366x768)

Major P.S. ajoutez le script au Planificateur de tâches à exécuter lors de la connexion. (ou quotidien/hebdomadaire)

Créer une tâche de base
Programme/script: python (ou C:\Python34\python.exe si ce n’est pas dans votre chemin d’env)
arguments: "chemin/vers/votre/script.py"
commencer dans: "chemin/à/votre"

1
Puddle

En utilisant l'URL de @Siv, voici un exemple de JavaScript qui met à jour <div class="bgimg" id="background">

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()
}

Le css pour cette classe est:

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

Voici un script Python simple pour récupérer la photo Bing du jour en utilisant uniquement requests et json:

import requests
import json

BING_URI_BASE = "http://www.bing.com"
BING_WALLPAPER_PATH = "/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US"

# open the Bing HPImageArchive URI and ask for a JSON response
resp = requests.get(BING_URI_BASE + BING_WALLPAPER_PATH)

if resp.status_code == 200:
    json_response = json.loads(resp.content)
    wallpaper_path = json_response['images'][0]['url']
    filename = wallpaper_path.split('/')[-1]
    wallpaper_uri = BING_URI_BASE + wallpaper_path

    # open the actual wallpaper uri, and write the response as an image on the filesystem
    response = requests.get(wallpaper_uri)
    if resp.status_code == 200:
        with open(filename, 'wb') as f:
            f.write(response.content)
    else:
        raise ValueError("[ERROR] non-200 response from Bing server for '{}'".format(wallpaper_uri))
else: 
    raise ValueError("[ERROR] non-200 response from Bing server for '{}'".format(BING_URI_BASE + BING_WALLPAPER_PATH))

Ceci écrira un fichier tel que TurtleTears_EN-US7942276596_1920x1080.jpg dans le même répertoire que celui où le script est exécuté. Bien sûr, vous pouvez modifier un tas de choses ici, mais faites le travail assez facilement.

0
nonbeing

Vous pourriez envisager d'obtenir le contenu_fichier de cette URL et de rechercher l'image dans le fichier . Je ne suis pas sûr que ce soit la meilleure façon, mais c'est une façon.

0
eric.itzhak

Vous pouvez le faire en utilisant python et wget sur une machine Linux:

import os # import the os package
os.system("wget -O index.html http://www.bing.com") # download the bing index
str1 = open('index.html', 'r').read() # extract the file path using split
str2=str1.split("g_img={url: \"")[1]
str3=str2.split(".jpg")[0]
os.system("wget -O daily_im.jpg http://www.bing.com" + str3 + ".jpg") # donwload the daily image

Il télécharge le fond quotidien Bing dans le répertoire local sous le nom daily_im.jpg. Vous pouvez tout mettre sur un script.py et le lancer par programme.

0
Fabio

EDIT 27/09/2018:http://www.istartedsomething.com/bingimages répond 404 pendant des semaines. Cela n’existera peut-être plus. :-(

Vous pouvez utiliser les archives d'images Bing de istartedsomething.com. C'est une archive d'image non officielle de Bing. Il utilise un noeud final maison qui est utile pour récupérer des images:

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

id est une chaîne contenant la date à laquelle l'image a été publiée et le pays où elle a été publiée. id doit respecter le format suivant: YYYYMMDD-xx, où:

  • YYYY est l'année, écrite avec quatre chiffres.
  • MM est le mois écrit avec deux chiffres.
  • DD est le jour écrit avec deux chiffres.
  • xx est l'indicateur de pays. Bing Image Archive prend actuellement en charge les pays suivants:
    • au: Australie.
    • br: Brésil.
    • ca: Canada.
    • cn: Chine.
    • de: Deutschland.
    • fr: France.
    • gb: Grande-Bretagne.
    • jp: Japon.
    • nz: Nouvelle-Zélande.
    • uk: Royaume-Uni.
    • us: États-Unis d'Amérique.

Il retourne un objet JSON utile s'il contient des informations ou false s'il ne contient rien.

Exemple 1: _ ​​Image quotidienne de Retriving the Bing publiée le 24 mai 2014 en Nouvelle-Zélande

L'ID de l'image est 20140524-nz car l'image demandée a été publiée le 24/05/2014 et elle a été publiée en Nouvelle-Zélande, dont l'indicateur de pays est nz.

http://www.istartedsomething.com/bingimages/getimage.php?id=20140524-nz renvoie le fichier JSON suivant:

{
    "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":[]
}

Vous pouvez utiliser le champ imageurl ou le champ url (chemin de l'URL Bing) pour obtenir votre image.

Exemple 2: _ ​​Retriver l'image quotidienne de Bing publiée le 12 juillet 1998 en France

L'ID de l'image est 19980712-fr car l'image demandée a été publiée le 07/12/1998 et elle a été publiée en France, dont l'indicateur de pays est fr.

http://www.istartedsomething.com/bingimages/getimage.php?id=19980712-fr renvoie false car il n'y a pas d'image Bing Daily pour la France le 07/12/1998 (Bing n'existait même pas à cette temps).

0
air-dex