Bing arka plan görüntüsünü programlı olarak alabilmemin bir yolu var mı?
Bing'in API'si böyle bir işlevsellik sağlamıyor gibi görünüyor, belki başka bir yolu var?
Bing arka plan görüntüsünü programlı olarak alabilmemin bir yolu var mı?
Bing'in API'si böyle bir işlevsellik sağlamıyor gibi görünüyor, belki başka bir yolu var?
Yanıtlar:
Bence en iyi yol, AJAX çağrıları aracılığıyla bunu kendi başlarına yapma yöntemlerini taklit etmek.
Bu URL'yi çağırırlar ve bilgileri XML serisini kaldırma yoluyla çıkarırlar.
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
Nitelik besbelli'En-US' farklı bir bölgeye değiştirilebilir, aynı zamanda belirli bir bölgedeki umurumda değil tamamen eğer kapsamından çıkarılmış olabilir.
O Not _1366x768.jpg
görüntü adlarına eklenen eki farklı çözünürlüklerde içine (gibi değiştirilebilir gibi görünen _1920x1080.jpg
tam HD ve muhtemelen diğerleri için).
İşte 28.09.2013 tarihli verilerin XML biçiminde bir dökümü.
<?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>
_1920x1200
işe yarayacak her şey , yani 1920x1080
ve diğerleri.
&mkt=en-US
parçası olmadan kullanıyor . Bu, uygulamayı "English-United States" olarak ayarlamama rağmen.
jsonp
ama buna izin veriyorlarmış gibi görünmüyor.
Ben almak için bir yol bulmuş JSON formatını ait Bing Image günün
n=
İstediğiniz görüntü sayısı ( Tamsayıları kullanabilirsiniz ),
mkt=
Konumunuz (örnek: en-US )
{
"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
-den kullanimages[]
ve ekle 'http://bing.com'
burda url "url": "\/az\/hprichbg\/rb\/DayGecko_EN-US8730336235_1366x768.jpg"
Unexpected token :
içindehttps://www.bing.com/HPImageArchive.aspx?format=js&idx=8&n=8&mkt=en-US&callback=jQuery111100034959779751375653_1518009655771&_=1518009655772
Microsoft kısa süre önce Windows 7 için Bing duvar kağıtlarına bağlantılar içeren bir RSS Akışı içeren bir Bing Dinamik Teması yayınladı .
Ayrıca , Bing web sitesini yüklemeye ve doğru resim URL'sini tahmin etmeye çalışan bir Python betiği var, ancak deneyimlerime göre, genellikle RSS beslemesinin sunduğundan daha düşük çözünürlüklü bir resimle sonuçlanıyor.
Partiye geç kaldım, ancak birinin PHP uygulamasına ihtiyacı olması durumunda: Prosedürü işleyen basit bir sınıf yazdım:
Tek satırlık PowerShell (3.0 veya üstü)
irm
için bir takma addır Invoke-RestMethod
irm "bing.com$((irm "bing.com/HPImageArchive.aspx?format=js&mkt=en-IN&n=1").images[0].url)" -OutFile bing.jpg
Bing resimlerini de severim ancak uygulamaları resim indirmek için fazla şişirilmiş. Kemancı ile bağlantıyı analiz ettikten sonra bu kodu yazdım. 1920x1200, Bing logosu gömülü olarak gelir, ancak daha düşük çözünürlüklerde bulunmaz.
Pencerelerin ayarladığınız resim klasöründen rastgele resimler göstermesini sağlayabilirsiniz, böylece bunları günlük olarak indirirken size daha fazla rastgele resim gösterecektir. "İmageDir" i tutarsanız, o klasördeki izinleri değiştirmeniz gerekir, aksi takdirde çökecektir, yakalama hataları ile uğraşmadım. Son olarak, duvar kağıdınızı bugünün görüntüsüne ayarlamak istiyorsanız satırların açıklamasını kaldırın veya programı çalıştırmak için bir görev oluşturabilirsiniz, örneğin oturum açtıktan bir dakika sonra.
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();
}
}
}
}
Birçok kişinin de yeni RSS bağlantısını istediğini gördüm, URL'deki format parametresini "rss" olarak değiştirmeniz yeterli.
RSS : http://www.bing.com/HPImageArchive.aspx?format=rss&idx=0&n=1&mkt=en-US
Bu JavaScript, bir div'in arkaplan resmini o günün bing resminin arkaplanına çevirerek 'api ile ne yapılacağını' yanıtlayacaktır.
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%";
}
}
}
Herhangi birinin olası uygulamaları araması durumunda, indirmek, kaydetmek ve arka planımı Günün Bing Resmi olarak ayarlamak için C #'da küçük bir komut satırı programı yazdım. Kişisel ihtiyaçlarınıza göre değiştirmekten çekinmeyin. 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);
}
}
}
Göz at bing-masaüstü-duvar-değiştirici üzerindeki Github . Komut dosyası python ile yazılmıştır ve umarım cevabınızı orada bulursunuz.
#!/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)
Ayrıntılı kod için Github projesine bir göz atın
Basit PowerShell, bir klasöre yerleştirin, Windows Görev Zamanlayıcı'da günlük bir görev oluşturun, komut dosyası görüntüleri çalıştırma klasörüne kaydeder, ardından Masaüstü Arka Planı ayarlarınızda bu klasörü arka plan olarak seçin.
[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)"
İşte sadece requests
ve kullanarak günün Bing fotoğrafını getirmek için basit bir Python betiği 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))
Bu TurtleTears_EN-US7942276596_1920x1080.jpg
, komut dosyasının yürütüldüğü dizine benzer bir dosya yazacaktır . Tabii ki, burada bir sürü şeyi değiştirebilir, ancak işi makul ölçüde kolayca halleder.
Oldukça iyi çalışan bu feedburner beslemesini bulana kadar John'un Arka Plan Değiştiricisi ile kullanabileceğim uygun bir RSS beslemesi almakta sorun yaşıyordum : http://feeds.feedburner.com/bingimages
Size javascript ve php kullanarak günün günlük duvar kağıdını nasıl alacağınızı söyleyeyim,
Bu js kodunu deneyin:
<script>
fetch('https://techytricks97.000webhostapp.com/')
.then(response => response.text())
.then(text=>{document.body.style.background="url('"+text+"')";document.body.style.backgroundSize='cover';});
</script>
Bu komut dosyası, günün günlük görüntüsünü html belgenizin arka planı olarak ayarlar (kullanımınıza göre daha fazla değiştirebilirsiniz).
Bu bağlantı- https://techytricks97.000webhostapp.com , her gün günün bing duvar kağıdını döndürür.
fetch()
bugünün bing resmin url alır https://techytricks97.000webhostapp.com
ve text=>{document.body.style.background="url('"+text+"')";document.body.style.backgroundSize='cover';}
arka plan olarak ayarlar.
Not: Microsoft, bing günlük resimlerini sitenizin arka planı olarak kullanmanıza izin vermez, bunu telefon / masaüstü duvar kağıdı olarak veya telif hakkından bahsederek başka şeylerde kullanabilirsiniz.
İşte http : //techytricks97.000webhostapp.com'da kullanılan php kodu :
<?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
Sunucunuzda yalnızca kullanabilir veya kendi php dosyanızı kurabilirsiniz.
Başka bir not: Sadece javascript kullanmadım, çünkü tarayıcının aynı kaynak politikası onu kısıtlıyor, ancak benim belirttiğim gibi php dosyamdan alınmasına izin veriliyorheader('Access-Control-Allow-Origin: *');
php kodumu . Başka bir proxy kullanabilirdim ancak trafiği yüksek (sitem bir günde neredeyse hiç tıklama almıyor).
Başka bir dil kullanıyorsanız, bu dosyayı okumanız yeterlidir ( http://techytricks97.000webhostapp.com )
Sonunda xml arşivinden en fazla görüntüyü (16) elde etmek için Python 3'te bir komut dosyası yazmaya karar verdim.
Artık görüntüleri hiç çaba harcamadan arşivleyebiliyorum. Python komut dosyasını çalıştırın.
Görüntüleri Yıl / Ay klasörlerinde şu şekilde organize ediyorum: 2018> 12 Aralık> 2018-12-06.jpg
Bu komut dosyası, Bing Duvar Kağıtları klasörüme gider. (Resimler klasörümde bulunan)
import urllib.request as urllib
import json
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=js&idx=%i&n=8&mkt=en-NZ"%start).read()
except: sys.exit()
e = json.loads(data.decode())
images = e["images"]
for image in images:
d = parser.parse(image["startdate"]) # 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["urlbase"]+"_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)
Duvar kağıdını güncellemek için isteğe bağlı ekstra kod: (downloadBingImages (7) altına yerleştirin)
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
örnek çıktı:
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
Not: Yukarıdaki komut dosyası &mkt=en-NZ
Yeni Zelanda resimleri için kullanılıyor.
Diğer ülkeler için pazar kodunu kontrol edebilirsiniz burada .
2009'dan beri farklı ülkeler için arşivlenen tüm görselleri burada da görebilirsiniz .
(yalnızca 1366x768'de)
Major PS, oturum açarken çalıştırılması için komut dosyasını Görev Zamanlayıcı'ya ekler. (veya günlük / haftalık)
Temel Görev
Programı / komut dosyası oluşturun: python (veya env yolunuzda değilse C: \ Python34 \ python.exe)
bağımsız değişkenler: "yol / yol / sizin / script.py"
başlangıç: "yol / için / sizin"
GÜNCELLEME! (Mart 2019)
2019-03-10 görüntüsüne hem xml hem de rss biçiminde yanlış başlangıç tarihi (20190309) verildi.
Bunun yerine Json formatını kullanma. (doğru tarih verdiği için)
https://peapix.com/bing/feed
peapix.com tarafından bakımı, Bing logosu olmadan en son Bing görüntüsünü listeleyecek . Şu ülke / bölge desteklenir: AU, CA, CN, DE, FR, JP, US, GB.
Örneğin, için https://peapix.com/bing/feed?country=jp Japonya için ve https://peapix.com/bing/feed?country=us ABD için.
Tek satırlık Bash (bash, curl ve jq gerekir), cronjob yerleştirmek için yararlıdır:
BACKGROUND_META=$(curl 'https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US'); curl -o $(echo $BACKGROUND_META | jq -r '.images[0].urlbase' | sed s/.*=//).jpg "https://bing.com$(echo $BACKGROUND_META| jq -r '.images[0].url')"
Bu url'nin file_content'ini almayı düşünebilir ve görüntü için dosyada arama yapabilirsiniz. Bunun en iyi yol olduğundan emin değilim, ama bu bir yol.
@Siv'deki URL'yi kullanarak, güncellenen bir JavaScript örneğini burada bulabilirsiniz. <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()
}
Bu sınıfın css'si:
.bgimg {
height: 100%;
position: relative;
opacity: 0.95;
background-position: center;
background-repeat: no-repeat;
background-size: cover;
}
Bunu bir linux makinesinde python ve wget kullanarak yapabilirsiniz:
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
Yerel dizindeki günlük bing arka planını daily_im.jpg adı altında indirir. Her şeyi bir script.py'ye koyabilir ve programlı olarak başlatabilirsiniz.
09/27/2018 DÜZENLEME: http://www.istartedsomething.com/bingimages haftalarca yanıtlıyor. Artık mevcut olmayabilir. :-(
Sen kullanabilirsiniz istartedsomething.com Bing Görüntü Arşivi . Resmi olmayan bir Bing Görüntü Arşividir. Görüntüleri almak için yararlı olan ev yapımı bir uç nokta kullanır:
GET /bingimages/getimage.php?id=<image_id>
id
görselin yayınlandığı tarihi ve yayınlandığı ülkeyi içeren bir dizedir. id
şu biçime uymak zorundadır:, YYYYMMDD-xx
burada:
YYYY
dört basamaklı yazılan yıldır.MM
iki basamaklı yazılan aydır.DD
iki basamaklı yazılan gündür.xx
ülke göstergesidir. Bing Image Archive şu anda aşağıdaki ülkeleri desteklemektedir:
au
: Avustralya.br
: Brezilya.ca
: Kanada.cn
: Çin.de
: Deutschland.fr
: Fransa.gb
: Büyük Britanya.jp
: Japonya.nz
: Yeni Zelanda.uk
: Birleşik Krallık.us
: Amerika Birleşik Devletleri.Bazı bilgilere sahipse yararlı bir JSON nesnesi veya hiçbir şey yoksa yanlış döndürür.
Örnek 1: 24 Mayıs 2014'te Yeni Zelanda'da yayınlanan Bing günlük görüntüsünü geri çekme
20140524-nz
Görsel kimliği, talep edilen görselin 24.05.2014 tarihinde yayınlanmış olması ve ülke göstergesi olan Yeni Zelanda'da yayınlanmış olmasıdır nz
.
http://www.istartedsomething.com/bingimages/getimage.php?id=20140524-nz , aşağıdaki JSON parçasını döndürür:
{
"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":[]
}
Sen kullanabilirsiniz imageurl
alanı veya url
görüntünüzü almak için (Bing URL yolu) alanını.
Örnek 2: 12 Temmuz 1998'de Fransa'da yayınlanan Bing günlük görüntüsünü geri çekme
Görüntü kimliği 19980712-fr
Görsel istenen görselin 07/12/1998 tarihinde yayınlanmış olması ve ülke göstergesi olan Fransa'da yayınlanmış olmasıdır fr
.
http://www.istartedsomething.com/bingimages/getimage.php?id=19980712-frfalse
, 07/12/1998 tarihinde Fransa için Bing Günlük Görüntü olmadığı için geri döner (Bing şu anda bile mevcut değildi).
OP, işletim sistemini belirtmez, bu yüzden burada Linux'ta kullanım için bir tane var. Burada sunulan senaryoyu değiştirdim .
Temel olarak günün görüntüsünün url'sini alır, görüntüyü indirir ve sabit bir dosyaya kaydeder ~/.config/wallpaper.jpg
ve feh
duvar kağıdını ayarlamak için kullanır . Aynı zamanda bir bildirim gönderir.
#!/bin/sh
WP_FILE=$HOME/.config/wallpaper.jpg
bing="www.bing.com"
# $xmlURL is needed to get the xml data from which
# the relative URL for the Bing pic of the day is extracted
#
# The mkt parameter determines which Bing market you would like to
# obtain your images from.
# Valid values are: en-US, zh-CN, ja-JP, en-AU, en-UK, de-DE, en-NZ, en-CA or opted out.
#
# The idx parameter determines where to start from. 0 is the current day,
# 1 the previous day, etc.
xmlURL="http://www.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1&mkt=en-US"
# The desired Bing picture resolution to download
# Valid options: "_1024x768" "_1280x720" "_1366x768" "_1920x1200"
desiredPicRes="_1920x1080"
# The file extension for the Bing pic
picExt=".jpg"
# Extract the relative URL of the Bing pic of the day from
# the XML data retrieved from xmlURL, form the fully qualified
# URL for the pic of the day, and store it in $picURL
# Form the URL for the desired pic resolution
desiredPicURL=$bing$(curl -s $xmlURL | grep -oP "(?<=<urlBase>)(.*?)(?=</urlBase>)")$desiredPicRes$picExt
# Form the URL for the default pic resolution
defaultPicURL=$bing$(curl -s $xmlURL | grep -oP "(?<=<url>)(.*?)(?=</url>)")
# $picName contains the filename of the Bing pic of the day
# Attempt to download the desired image resolution. If it doesn't
# exist then download the default image resolution
if wget --quiet --spider "$desiredPicURL"
then
# Download the Bing pic of the day at desired resolution
curl -s -o "$WP_FILE" "$desiredPicURL"
else
# Download the Bing pic of the day at default resolution
curl -s -o "$WP_FILE" "$defaultPicURL"
fi
if [[ -f "${WP_FILE}" ]]; then
feh --bg-scale "$WP_FILE" && \
notify-send -i emblem-photos "Wallpaper" "Wallpaper changed" \
-h int:suppress-sound:1 -h int:transient:1
fi