wake-up-neo.com

Gibt es eine Möglichkeit, Bings Foto des Tages zu erhalten?

Gibt es eine Möglichkeit, das Bing-Hintergrundbild programmgesteuert zu erhalten?

Die API von Bing scheint diese Funktionalität nicht zu bieten, vielleicht gibt es einen anderen Weg?

78
Mahmoud Hossam

Ich denke, der beste Weg ist das Nachahmen der Art, wie sie es selbst durch ihre AJAX - Aufrufe tun.

Sie rufen diese URL auf und extrahieren die Informationen durch XML-Deserialisierung.

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

Das mkt-Attribut kann natürlich in eine andere Region als ´en-US´ geändert werden, es kann jedoch auch ganz deaktiviert werden, wenn Sie sich nicht für eine bestimmte Region interessieren.

Beachten Sie, dass das Suffix _1366x768.jpg, das zu den Bildnamen hinzugefügt wird, in verschiedene Auflösungen modifiziert werden kann (z. B. _1920x1080.jpg für Full HD und möglicherweise andere).

Hier ist ein Auszug der Daten vom 28.09.2013 im XML-Format. 

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

JSON-FORMAT VON BING IMAGE

Ich habe einen Weg gefunden, das JSON-Format des Bing Image des Tages abzurufen

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

Hinweis

n= Die Anzahl der Bilder, die Sie möchten (Sie können Integers verwenden),
mkt= Ihr Speicherort (Beispiel: de-DE)


Hier sieht die JSON-Ausgabe aus

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

verwenden Sie die url aus dem images[]

und füge es zu 'http://bing.com' hinzu

hier ist die URL "url": "\/az\/hprichbg\/rb\/DayGecko_EN-US8730336235_1366x768.jpg"

28
Siv

Microsoft hat vor kurzem ein Bing Dynamic Theme für Windows 7 veröffentlicht, das einen RSS-Feed mit Links zu Bing-Wallpapers enthält.

Es gibt auch ein Python-Skript , mit dem versucht wird, die Bing-Website zu laden und die korrekte Bild-URL zu erraten, aber meiner Erfahrung nach führt dies normalerweise zu einer niedrigeren Auflösung als die im RSS-Feed angebotenen.

10
karafior

Ich bin zu spät zur Party, aber falls jemand eine Implementierung von PHP benötigt: Ich habe eine einfache Klasse geschrieben, die die Prozedur behandelt:

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

6
Jonathan Gruber

Ich mag auch Bing-Bilder, aber ihre App ist zu aufgebläht, um Bilder herunterzuladen. Nachdem ich die Verbindung mit Fiddler analysiert hatte, schrieb ich diesen Code. Der 1920x1200 verfügt über ein eingebettetes Bing-Logo, bei niedrigeren Auflösungen jedoch nicht. 

Sie können sich Fenster in dem von Ihnen festgelegten Bildordner mit zufälligen Bildern anzeigen lassen. Wenn Sie sie täglich herunterladen, werden Ihnen mehr zufällige Bilder angezeigt. Wenn Sie "imageDir" beibehalten, müssen Sie die Berechtigungen für diesen Ordner ändern oder der Ordner stürzt ab. Ich habe mich nicht mit Fehlern befasst Hintergrundbild für das heutige Bild oder Sie können eine Aufgabe erstellen, um das Programm auszuführen, etwa eine Minute nach der Anmeldung.

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

Ein Liner PowerShell (3.0 oder höher)

irm ist ein Alias ​​für 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

Ich habe gesehen, dass viele Leute auch nach dem neuen RSS-Link fragen. Ändern Sie einfach den Formatparameter in der URL in "rss".

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

3
warmth

Dieses JavaScript beantwortet die Frage, was mit der API zu tun ist, indem das Hintergrundbild eines div-Objekts in den Hintergrund des aktuellen Tagesbilds geändert wird.

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

Einfache PowerShell-Datei, in einen Ordner einfügen, tägliche Aufgabe in Windows Task Scheduler erstellen, Skript speichert Bilder im Ausführungsordner. Wählen Sie dann in den Desktop-Hintergrundeinstellungen diesen Ordner als Hintergrund aus.

[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

Für den Fall, dass jemand nach möglichen Implementierungen sucht, habe ich in C # ein kleines Befehlszeilenprogramm zum Herunterladen, Speichern und Festlegen meines Hintergrunds als Bing-Image des Tages geschrieben. Fühlen Sie sich frei, es an Ihre persönlichen Bedürfnisse anzupassen. 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

Lassen Sie mich Ihnen sagen, wie Sie mit JavaScript und PHP ein tägliches Hintergrundbild des Tages erhalten. 

Probieren Sie diesen Code aus:

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

Dieses Skript legt das tägliche Bild des Tages als Hintergrund für Ihr HTML-Dokument fest (Sie können es je nach Verwendung weiter anpassen).

Dieser Link- https://techytricks97.000webhostapp.com gibt das Hintergrundbild des Tages zurück, jeden Tag.

fetch() erhält die URL des heutigen Bing-Bildes von https://techytricks97.000webhostapp.com und text=>{document.body.style.background="url('"+text+"')";document.body.style.backgroundSize='cover';} setzt es als Hintergrund.

Hinweis: Microsoft erlaubt nicht, die Bilder von bing Daily als Hintergrund Ihrer Website zu verwenden. Sie können sie als Telefon-/Desktop-Hintergrund oder auf andere Dinge mit dem Copyright verwenden.

Hier ist der PHP-Code, der auf http://techytricks97.000webhostapp.com verwendet wird:

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

Sie können nur http://techytricks97.000webhostapp.com verwenden oder Ihre eigene PHP-Datei auf Ihrem Server einrichten.

Noch eine Anmerkung: Ich habe nicht nur Javascript verwendet, weil die Same-Origin-Richtlinie des Browsers dies einschränkt, aber das Abrufen aus meiner PHP-Datei ist erlaubt, da ich header('Access-Control-Allow-Origin: *'); in meinen PHP-Code gestellt habe. Ich hätte andere Proxies verwenden können, aber sie haben einen hohen Traffic (meine Website bekommt kaum einen Klick innerhalb eines Tages).

Wenn Sie eine andere Sprache verwenden, müssen Sie nur diese Datei lesen ( http://techytricks97.000webhostapp.com ).

2
aryaman

Ich hatte Probleme, einen richtigen RSS-Feed zu erhalten, den ich mit Johns Background Switcher verwenden konnte, bis ich diesen Feedburner-Feed gefunden habe, der recht gut zu funktionieren scheint: http://feeds.feedburner.com/bingimages

1
ethanpil

https://bingdesktop.com/gallery/feed listet das neueste Bing-Image ohne Bing-Logo auf und wird von bingdesktop.com gepflegt. Unterstützt das folgende Land/die folgende Region: AU, CA, CN, DE, FR, JP, US, GB.

beispiel: https://bingdesktop.com/gallery/feed?country=jp für Japan und https://bingdesktop.com/gallery/feed?country=us für die Vereinigten Staaten.

1
zhengchun

Werfen Sie einen Blick auf bing-desktop-wallpaper-changer auf Github . Das Skript wurde in Python geschrieben und ich hoffe, Sie finden Ihre Antwort dort.

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

Schauen Sie sich das Github-Projekt für detaillierten Code an

1
Utkarsh Gupta

Ich beschloss gerade, ein Skript in Python 3 zu schreiben, um die meisten Bilder (16) aus dem XML-Archiv zu erhalten. 

Jetzt kann ich die Bilder ohne Aufwand archivieren. Führen Sie einfach das Python-Skript aus.
Ich organisiere die Bilder wie folgt in Jahr/Monat-Ordner: 2018> 12. Dezember> 2018-12-06.jpg 

Dieses Skript wird in meinem Bing Wallpapers-Ordner gespeichert. (was sich in meinem Bilderordner befindet)

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)

Optionaler zusätzlicher Code zum Aktualisieren des Hintergrunds: (unter 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

beispielausgabe:

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. Das obige Skript verwendet &mkt=en-NZ für die neuseeländischen Bilder.
Sie können den Marktcode für andere Länder überprüfen hier .

Sie können auch alle seit 2009 archivierten Bilder für verschiedene Länder sehen hier .
(nur in 1366x768 jedoch)

Major P.S. Fügen Sie das Skript dem Taskplaner hinzu, um es bei der Anmeldung auszuführen. (oder täglich/wöchentlich)

Erstellen Sie eine grundlegende Aufgabe
Programm/Skript: Python (oder C:\Python34\python.exe, wenn es sich nicht in Ihrem Env-Pfad befindet)
argumente: "pfad/zu/ihr/script.py"
start in: "pfad/zu/ihr"

1
Puddle

Verwenden Sie die URL von @Siv, hier ein Beispiel für JavaScript, das <div class="bgimg" id="background"> aktualisiert.

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

Die CSS für diese Klasse lautet:

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

Hier ist ein einfaches Python-Skript, um das Bing-Foto des Tages mit nur requests und json abzurufen:

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

Dadurch wird eine Datei wie TurtleTears_EN-US7942276596_1920x1080.jpg in das gleiche Verzeichnis geschrieben, in dem das Skript ausgeführt wird. Natürlich kann hier eine ganze Reihe von Dingen verändert werden, aber die Arbeit erledigt sich relativ leicht.

0
nonbeing

Vielleicht möchten Sie den file_content dieser URL abrufen und die Datei nach dem Image durchsuchen ..

0
eric.itzhak

Sie können dies mit Python und Wget auf einem Linux-Rechner tun:

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

Es lädt den täglichen Bing-Hintergrund im lokalen Verzeichnis unter dem Namen daily_im.jpg herunter. Sie können alles auf eine script.py setzen und es programmgesteuert starten.

0
Fabio

EDIT 27.09.2014:http://www.istartedsomething.com/bingimages antwortet 404 wochenlang. Es kann nicht mehr existieren. :-(

Sie können das Bing-Image-Archiv von istartedsomething.com verwenden. Es ist ein inoffizielles Bing-Bildarchiv. Es verwendet einen hausgemachten Endpunkt, der zum Abrufen von Bildern hilfreich ist:

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

id ist eine Zeichenfolge mit dem Datum, an dem das Bild veröffentlicht wurde, und dem Land, in dem es veröffentlicht wurde. id muss dem folgenden Format entsprechen: YYYYMMDD-xx, wobei:

  • YYYY ist das Jahr, das aus vier Ziffern besteht.
  • MM ist der Monat, der aus zwei Ziffern besteht.
  • DD ist der Tag, der aus zwei Ziffern besteht.
  • xx ist der Länderindikator. Bing Image Archive unterstützt derzeit folgende Länder:
    • au: Australien.
    • br: Brasilien.
    • ca: Kanada.
    • cn: China.
    • de: Deutschland.
    • fr: Frankreich.
    • gb: Großbritannien.
    • jp: Japan.
    • nz: Neuseeland.
    • uk: Großbritannien.
    • us: Vereinigte Staaten von Amerika.

Es gibt ein nützliches JSON-Objekt zurück, wenn es Informationen enthält, oder false, wenn es keine Informationen enthält.

Beispiel 1: _ ​​Abrufen des Bing-Tagesbildes, das am 24. Mai 2014 in Neuseeland veröffentlicht wurde

Die Bild-ID lautet 20140524-nz, da das geforderte Bild am 24.05.2014 veröffentlicht wurde und in Neuseeland veröffentlicht wurde, dessen Länderkennzeichen nz ist.

http://www.istartedsomething.com/bingimages/getimage.php?id=20140524-nz gibt den folgenden Teil von JSON zurück:

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

Sie können das Feld imageurl oder das Feld url (Bing-URL-Pfad) verwenden, um Ihr Bild abzurufen.

Beispiel 2: _ ​​Abrufen des Bing-Tagesbildes, das am 12. Juli 1998 in Frankreich veröffentlicht wurde

Die Bild-ID lautet 19980712-fr, da das geforderte Bild am 12.07.1998 veröffentlicht wurde und in Frankreich veröffentlicht wurde, dessen Länderkennzeichen fr ist.

http://www.istartedsomething.com/bingimages/getimage.php?id=19980712-fr gibt false zurück, da es am 12.07.1998 kein Bing Daily Image für Frankreich gibt (Bing war überhaupt nicht vorhanden Zeit).

0
air-dex