Adakah cara agar saya bisa mendapatkan gambar latar Bing secara terprogram?
API Bing tampaknya tidak menyediakan fungsionalitas seperti itu, mungkin ada cara lain?
Adakah cara agar saya bisa mendapatkan gambar latar Bing secara terprogram?
API Bing tampaknya tidak menyediakan fungsionalitas seperti itu, mungkin ada cara lain?
Jawaban:
Saya pikir cara terbaik adalah meniru cara mereka melakukannya sendiri melalui panggilan AJAX mereka.
Mereka menyebut URL ini dan mengekstrak informasi melalui deserialisasi 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
The mkt
atribut jelas dapat diubah ke daerah yang berbeda dari'en-US', tetapi juga dapat memilih keluar dari sepenuhnya jika Anda tidak peduli tentang wilayah tertentu.
Perhatikan bahwa _1366x768.jpg
sufiks yang ditambahkan ke nama gambar tampaknya dapat diubah menjadi resolusi yang berbeda (seperti _1920x1080.jpg
untuk full HD dan mungkin lainnya).
Berikut adalah dump data pada 9/28/2013, dalam 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&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
berfungsi, misalnya, 1920x1080
dan lainnya.
&mkt=en-US
bagian. Ini meskipun aplikasi saya disetel ke "Inggris-Amerika Serikat".
jsonp
, tetapi sepertinya mereka tidak mengizinkannya.
Saya menemukan cara untuk mengambil format JSON dari Gambar Bing hari ini
n=
No gambar yang Anda inginkan (Anda dapat menggunakan Integers ),
mkt=
Lokasi Anda (contoh: 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."
}
}
gunakan url
dariimages[]
dan tambahkan ke 'http://bing.com'
ini url "url": "\/az\/hprichbg\/rb\/DayGecko_EN-US8730336235_1366x768.jpg"
Unexpected token :
dihttps://www.bing.com/HPImageArchive.aspx?format=js&idx=8&n=8&mkt=en-US&callback=jQuery111100034959779751375653_1518009655771&_=1518009655772
Microsoft baru-baru ini menerbitkan Bing Dynamic Theme untuk Windows 7, yang berisi RSS Feed dengan tautan ke wallpaper Bing .
Ada juga skrip Python yang mencoba memuat situs web Bing dan menebak URL gambar yang benar, tetapi dari pengalaman saya, biasanya menghasilkan gambar dengan resolusi lebih rendah daripada yang ditawarkan oleh umpan RSS.
Saya terlambat ke pesta, tetapi jika seseorang membutuhkan implementasi PHP: Saya telah menulis kelas sederhana yang menangani prosedur:
One liner PowerShell (3.0 atau lebih tinggi)
irm
adalah alias untuk Invoke-RestMethod
irm "bing.com$((irm "bing.com/HPImageArchive.aspx?format=js&mkt=en-IN&n=1").images[0].url)" -OutFile bing.jpg
Saya juga suka gambar Bing tetapi aplikasinya terlalu membengkak untuk tujuan mengunduh gambar. Setelah menganalisis koneksi dengan fiddler, saya menulis kode ini. 1920x1200 dilengkapi dengan logo Bing yang disematkan tetapi resolusi yang lebih rendah tidak memilikinya.
Anda dapat memiliki jendela yang menampilkan gambar acak dari folder gambar yang Anda atur, sehingga saat Anda mengunduhnya setiap hari, itu akan menampilkan lebih banyak gambar acak. Jika Anda menyimpan "imageDir", Anda perlu mengubah izin pada folder itu atau akan macet, saya tidak repot-repot menangkap kesalahan. Terakhir, hapus komentar pada baris jika Anda ingin menyetel wallpaper ke gambar hari ini atau Anda dapat membuat tugas untuk menjalankan program, katakan satu menit setelah logon.
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();
}
}
}
}
Saya melihat banyak orang yang meminta link RSS baru juga, cukup ubah parameter format di URL menjadi "rss".
RSS : http://www.bing.com/HPImageArchive.aspx?format=rss&idx=0&n=1&mkt=en-US
JavaScript ini akan menjawab 'apa yang harus dilakukan dengan api' dengan mengubah gambar latar belakang div menjadi latar belakang gambar bing hari ini.
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%";
}
}
}
Jika ada yang mencari kemungkinan implementasi, saya menulis program baris perintah kecil di C # untuk mengunduh, menyimpan, dan menetapkan latar belakang saya sebagai Gambar Bing Hari Ini. Jangan ragu untuk memodifikasinya sesuai kebutuhan pribadi Anda. 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);
}
}
}
Simple PowerShell, tempatkan ke dalam folder, buat tugas harian di Penjadwal Tugas Windows, skrip menyimpan gambar di folder yang dijalankan, lalu di pengaturan Latar Belakang Desktop pilih folder itu sebagai latar belakang.
[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)"
Berikut ini skrip Python sederhana untuk mengambil foto Bing hari itu dengan hanya requests
dan 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))
Ini akan menulis file seperti TurtleTears_EN-US7942276596_1920x1080.jpg
ke direktori yang sama tempat skrip dijalankan. Tentu saja, dapat mengubah banyak hal di sini, tetapi menyelesaikan pekerjaan dengan cukup mudah.
Izinkan saya memberi tahu Anda cara mendapatkan wallpaper harian bing hari ini menggunakan javascript dan php,
Coba kode js ini:
<script>
fetch('https://techytricks97.000webhostapp.com/')
.then(response => response.text())
.then(text=>{document.body.style.background="url('"+text+"')";document.body.style.backgroundSize='cover';});
</script>
Script ini menetapkan bing gambar harian hari itu sebagai latar belakang dokumen html Anda (Anda selanjutnya dapat memodifikasinya sesuai penggunaan Anda).
Tautan ini- https://techytricks97.000webhostapp.com mengembalikan wallpaper bing hari ini, setiap hari.
fetch()
mendapatkan url gambar bing hari ini dari https://techytricks97.000webhostapp.com
dan text=>{document.body.style.background="url('"+text+"')";document.body.style.backgroundSize='cover';}
menyetelnya sebagai latar belakang.
catatan: Microsoft tidak mengizinkan untuk menggunakan gambar bing daily sebagai latar belakang situs Anda, Anda dapat menggunakannya sebagai wallpaper ponsel / desktop, atau hal lain dengan menyebutkan hak cipta.
Berikut adalah kode php yang digunakan di 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);
?>
Anda http://techytricks97.000webhostapp.com
hanya dapat menggunakan atau mengatur file php Anda sendiri di server Anda.
Catatan lain: Saya tidak hanya menggunakan javascript, karena browser sama-asal-kebijakan membatasinya, tetapi mengambil dari file php saya diperbolehkan seperti yang telah saya masukkanheader('Access-Control-Allow-Origin: *');
kode php saya. Saya bisa saja menggunakan proxy lain tetapi mereka memiliki lalu lintas tinggi (situs saya hampir tidak mendapat klik dalam sehari).
Jika Anda menggunakan bahasa lain, Anda hanya perlu membaca file ini ( http://techytricks97.000webhostapp.com )
Saya mengalami kesulitan mendapatkan RSS feed yang tepat yang dapat saya gunakan dengan John's Background Switcher sampai saya menemukan feed feedburner ini yang tampaknya bekerja cukup baik: http://feeds.feedburner.com/bingimages
Lihat bing-desktop-wallpaper-changer di Github . Skripnya telah ditulis dalam python dan saya harap Anda menemukan jawaban Anda di sana.
#!/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)
Lihat proyek Github untuk kode rinci
Saya akhirnya memutuskan untuk menulis skrip dengan Python 3 untuk mendapatkan gambar paling banyak (16) dari arsip xml.
Jadi sekarang saya bisa mengarsipkan gambar dengan mudah. Jalankan saja skrip Python.
Saya mengatur gambar ke dalam folder Tahun / Bulan seperti ini: 2018> 12 Desember> 2018-12-06.jpg
Skrip ini masuk ke folder Bing Wallpapers saya. (yang ada di folder Foto saya)
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)
Kode tambahan opsional untuk memperbarui wallpaper: (letakkan di bawah 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
contoh keluaran:
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
PS skrip di atas digunakan &mkt=en-NZ
untuk gambar Selandia Baru.
Anda dapat melihat kode pasar untuk negara lain di sini .
Anda juga dapat melihat semua gambar yang diarsipkan sejak 2009 untuk berbagai negara di sini .
(hanya dalam 1366x768)
Mayor PS menambahkan skrip ke Penjadwal Tugas untuk dijalankan saat masuk. (atau harian / mingguan)
Buat
Program Tugas Dasar / skrip: python (atau C: \ Python34 \ python.exe jika tidak ada di jalur env Anda)
argumen: "path / to / your / script.py"
start in: "path / to / your"
MEMPERBARUI! (Maret 2019)
Gambar untuk 2019-03-10 diberi tanggal mulai yang salah (20190309) dalam format xml dan rss.
Menggunakan format Json sebagai gantinya. (karena memberikan tanggal yang akurat)
https://peapix.com/bing/feed
akan mencantumkan gambar Bing terbaru tanpa logo Bing, dikelola oleh peapix.com . Mendukung negara / kawasan berikut: AU, CA, CN, DE, FR, JP, US, GB.
misalnya, https://peapix.com/bing/feed?country=jp untuk Jepang dan https://peapix.com/bing/feed?country=us untuk Amerika Serikat.
Bash one liner (membutuhkan bash, curl dan jq), berguna untuk melakukan cronjob:
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')"
Anda dapat mempertimbangkan untuk mendapatkan file_content dari url tersebut dan mencari file untuk gambar tersebut. Tidak yakin itu cara terbaik, tapi itulah jalannya.
Menggunakan URL dari @Siv, berikut adalah contoh JavaScript yang diperbarui <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()
}
CSS untuk kelas ini adalah:
.bgimg {
height: 100%;
position: relative;
opacity: 0.95;
background-position: center;
background-repeat: no-repeat;
background-size: cover;
}
Anda dapat melakukannya menggunakan python dan wget di mesin 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
Ini mengunduh latar belakang bing harian di direktori lokal dengan nama daily_im.jpg. Anda dapat meletakkan semuanya di script.py dan meluncurkannya secara terprogram.
EDIT 27/09/2018: http://www.istartedsomething.com/bingimages menanggapi 404 selama berminggu-minggu. Mungkin sudah tidak ada lagi. :-(
Anda dapat menggunakan Arsip Gambar Bing istartedsomething.com . Ini adalah Arsip Gambar Bing tidak resmi. Ini menggunakan titik akhir buatan sendiri yang berguna untuk mengambil gambar:
GET /bingimages/getimage.php?id=<image_id>
id
adalah string yang berisi tanggal gambar itu diterbitkan dan negara tempat gambar itu diterbitkan. id
harus memenuhi format berikut:, YYYYMMDD-xx
dimana:
YYYY
adalah tahun, ditulis dengan empat digit.MM
adalah bulan yang ditulis dengan dua digit.DD
adalah hari, ditulis dengan dua digit.xx
adalah indikator negara. Arsip Gambar Bing saat ini mendukung negara-negara berikut:
au
: Australia.br
: Brazil.ca
: Kanada.cn
: China.de
: Jerman.fr
: Prancis.gb
: Inggris Raya.jp
: Jepang.nz
: Selandia Baru.uk
: Britania Raya.us
: Amerika Serikat.Ini mengembalikan objek JSON yang berguna jika memiliki beberapa informasi atau salah jika tidak mendapatkan apa pun.
Contoh 1: Mengambil gambar harian Bing yang diterbitkan pada tanggal 24 Mei 2014 di Selandia Baru
ID gambar adalah 20140524-nz
karena gambar yang diminta diterbitkan pada 5/24/2014 dan diterbitkan di Selandia Baru, yang indikator negaranya adalah nz
.
http://www.istartedsomething.com/bingimages/getimage.php?id=20140524-nz mengembalikan bagian JSON berikut:
{
"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":[]
}
Anda dapat menggunakan imageurl
bidang atau bidang url
(Bing URL path) untuk mendapatkan gambar Anda.
Contoh 2: Mengambil gambar harian Bing yang diterbitkan pada 12 Juli 1998 di Prancis
ID gambar 19980712-fr
karena gambar yang diminta diterbitkan pada 07/12/1998 dan diterbitkan di Prancis, yang indikator negaranya adalah fr
.
http://www.istartedsomething.com/bingimages/getimage.php?id=19980712-fr kembali false
karena tidak ada Bing Daily Image untuk Prancis pada 07/12/1998 (Bing bahkan tidak ada saat ini).
OP tidak menentukan sistem operasi, jadi ini satu untuk digunakan di Linux. Saya memodifikasi dari skrip yang ditawarkan di sini .
Pada dasarnya ini mengambil url gambar hari ini, mengunduh gambar dan menyimpan ke file tetap ~/.config/wallpaper.jpg
, dan menggunakan feh
untuk mengatur wallpaper. Sekaligus mengirimkan notifikasi.
#!/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