프로그래밍 방식으로 Bing 배경 이미지를 가져올 수있는 방법이 있습니까?
Bing의 API가 이러한 기능을 제공하지 않는 것 같습니다. 다른 방법이 있습니까?
답변:
가장 좋은 방법은 AJAX 호출을 통해 직접 수행하는 방식을 모방하는 것입니다.
이 URL을 호출하고 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
mkt
속성은 분명 'EN-US'가 아닌 다른 지역으로 변경 될 수 있습니다뿐만 아니라 특정 지역에 대한 상관 없어 전체 경우의 선택 해제 할 수 있습니다.
_1366x768.jpg
이미지 이름에 추가 되는 접미사는 _1920x1080.jpg
풀 HD 등의 다른 해상도로 수정할 수있는 것으로 보입니다 .
다음은 2013 년 9 월 28 일 현재 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
즉 또한 작품 1920x1080
등.
&mkt=en-US
부분. 앱을 "영어-미국"으로 설정 한 경우에도 마찬가지입니다.
jsonp
하지만 허용하는 것처럼 보이지 않습니다.
오늘 의 Bing 이미지 의 JSON 형식 을 가져 오는 방법을 찾았 습니다.
n=
원하는 이미지 수 (u can use Integers ),
mkt=
Your location (예 : 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
로부터를images[]
그리고 그것을 추가하십시오 'http://bing.com'
여기 URL은 "url": "\/az\/hprichbg\/rb\/DayGecko_EN-US8730336235_1366x768.jpg"
Unexpected token :
에https://www.bing.com/HPImageArchive.aspx?format=js&idx=8&n=8&mkt=en-US&callback=jQuery111100034959779751375653_1518009655771&_=1518009655772
Microsoft는 최근 Bing 월페이퍼 링크 가 있는 RSS 피드가 포함 된 Windows 7 용 Bing 동적 테마 를 게시했습니다 .
Bing 웹 사이트를로드하고 올바른 이미지 URL을 추측 하는 Python 스크립트 도 있지만 내 경험상 일반적으로 RSS 피드에서 제공하는 이미지보다 해상도가 더 낮습니다.
나는 파티에 늦었지만 누군가 PHP 구현이 필요한 경우를 대비하여 절차를 처리하는 간단한 클래스를 작성했습니다.
One Liner PowerShell (3.0 이상)
irm
에 대한 별칭입니다 Invoke-RestMethod
irm "bing.com$((irm "bing.com/HPImageArchive.aspx?format=js&mkt=en-IN&n=1").images[0].url)" -OutFile bing.jpg
나도 Bing 이미지를 좋아하지만 이미지를 다운로드 할 목적으로 앱이 너무 부풀어 있습니다. 피들러와의 연결을 분석 한 후이 코드를 작성했습니다. 1920x1200에는 Bing 로고가 포함되어 있지만 해상도가 낮은 경우에는 로고가 없습니다.
설정 한 이미지 폴더에있는 임의의 이미지가 창에 표시되도록 할 수 있으므로 매일 다운로드하면 더 많은 임의의 이미지가 표시됩니다. "imageDir"을 유지하는 경우 해당 폴더에 대한 권한을 변경해야합니다. 그렇지 않으면 충돌이 발생합니다. 오류를 잡는 데 신경 쓰지 않았습니다. 마지막으로, 배경 화면을 오늘의 이미지로 설정하려면 줄의 주석 처리를 제거하거나 로그온 한 후 1 분 후에 프로그램을 실행하는 작업을 만들 수 있습니다.
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();
}
}
}
}
많은 사람들이 새 RSS 링크를 요청하는 것을 보았습니다. URL의 형식 매개 변수를 "rss"로 변경하기 만하면됩니다.
RSS : http://www.bing.com/HPImageArchive.aspx?format=rss&idx=0&n=1&mkt=en-US
이 JavaScript는 div의 배경 이미지를 오늘의 bing 이미지의 배경으로 변경하여 'api로 수행 할 작업'에 응답합니다.
function PullBackground() {
var ajaxRequest = new XMLHttpRequest(), background = '';
ajaxRequest.open('POST', "http://www.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1&mkt=en-US", true);
ajaxRequest.setRequestHeader("Connection", "close");
ajaxRequest.send('');
ajaxRequest.onreadystatechange = function () {
if (ajaxRequest.readyState == 4) {
background = ajaxRequest.responseText;
var res = background.split("<url>");
var res1 = res[1].split("</url>");
background = res1[0];
document.getElementById('NameOfTheDivToChange').style.backgroundImage = "url('http://bing.com" + background + "')"
document.getElementById('NameOfTheDivToChange').style.backgroundSize = "100%";
}
}
}
누구나 가능한 구현을 찾고 있다면 C #으로 작은 명령 줄 프로그램을 작성하여 내 배경을 오늘의 Bing 이미지로 다운로드, 저장 및 설정했습니다. 개인적인 필요에 따라 자유롭게 수정하십시오. 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);
}
}
}
간단한 PowerShell을 폴더에 넣고 Windows 작업 스케줄러에서 일일 작업을 만들고 스크립트가 실행 폴더에 이미지를 저장 한 다음 바탕 화면 배경 설정에서 해당 폴더를 배경으로 선택합니다.
[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)"
다음은 requests
and를 사용하여 오늘의 Bing 사진을 가져 오는 간단한 Python 스크립트입니다 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))
이렇게하면 TurtleTears_EN-US7942276596_1920x1080.jpg
스크립트가 실행되는 동일한 디렉토리에 같은 파일이 작성됩니다 . 물론 여기에서 모든 것을 조정할 수 있지만 작업을 합리적으로 쉽게 수행 할 수 있습니다.
자바 스크립트와 PHP를 사용하여 오늘의 빙 일일 배경 화면을 얻는 방법을 알려 드리겠습니다.
이 js 코드를 시도하십시오.
<script>
fetch('https://techytricks97.000webhostapp.com/')
.then(response => response.text())
.then(text=>{document.body.style.background="url('"+text+"')";document.body.style.backgroundSize='cover';});
</script>
이 스크립트는 오늘의 bing 일일 이미지를 html 문서의 배경으로 설정합니다 (사용에 따라 추가로 수정할 수 있음).
이 링크 - https://techytricks97.000webhostapp.com는 , 매일 하루의 빙 벽지를 반환합니다.
fetch()
에서 오늘날의 빙 이미지의 URL을 가져옵니다 https://techytricks97.000webhostapp.com
과 text=>{document.body.style.background="url('"+text+"')";document.body.style.backgroundSize='cover';}
배경으로 설정합니다.
참고 : Microsoft는 bing daily의 이미지를 사이트의 배경으로 사용하는 것을 허용하지 않으며, 전화 / 바탕 화면 배경 무늬로 사용하거나 저작권을 언급하는 다른 것들에 사용할 수 있습니다.
다음은 http://techytricks97.000webhostapp.com에서 사용되는 PHP 코드입니다 .
<?php
header('Access-Control-Allow-Origin: *');
ini_set('display_errors', 1);
$reg=file_get_contents('https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-IN');
$reg=json_decode($reg);
$meka=$reg->images[0]->url;
echo('http://www.bing.com'.$meka);
?>
http://techytricks97.000webhostapp.com
서버에서 자신의 PHP 파일 만 사용 하거나 설정할 수 있습니다.
또 다른 참고 사항 : 브라우저의 동일 출처 정책이이를 제한하기 때문에 자바 스크립트 만 사용하지는 않았지만 header('Access-Control-Allow-Origin: *');
내 PHP 코드를 입력 한대로 내 PHP 파일에서 가져 오는 것은 허용됩니다 . 다른 프록시를 사용할 수 있었지만 트래픽이 높습니다 (내 사이트에서 하루에 거의 클릭이 발생하지 않음).
다른 언어를 사용하는 경우이 파일 ( http://techytricks97.000webhostapp.com ) 을 읽으면됩니다.
John 's Background Switcher 와 함께 사용할 수있는 적절한 RSS 피드를 얻는 데 문제가있었습니다. 이 feedburner 피드를 찾을 때까지 http://feeds.feedburner.com/bingimages
Github 에서 bing-desktop-wallpaper-changer 를 살펴보세요 . 스크립트는 파이썬으로 작성되었으며 거기에서 답을 찾으시기 바랍니다.
#!/usr/bin/python
#-*- coding: utf-8 -*-
import os
import urllib
import urllib2
from bs4 import BeautifulSoup
# Get BingXML file which contains the URL of the Bing Photo of the day
# idx = Number days previous the present day. 0 means current day, 1 means yesterday, etc
# n = Number of images predious the day given by idx
# mkt denotes your location. e.g. en-US means United States. Put in your country code
BingXML_URL = "http://www.bing.com/HPImageArchive.aspx? format=xml&idx=0&n=1&mkt=en-US"
page = urllib2.urlopen(BingXML_URL)
BingXML = BeautifulSoup(page, "lxml")
# For extracting complete URL of the image
Images = BingXML.find_all('image')
ImageURL = "https://www.bing.com" + Images[0].url.text
ImageName = Images[0].startdate.text+".jpg"
urllib.urlretrieve(ImageURL, ImageName)
자세한 코드는 Github 프로젝트를 참조하십시오.
마침내 xml 아카이브에서 가장 많은 이미지 (16)를 얻기 위해 Python 3에서 스크립트를 작성하기로 결정했습니다.
이제 아무런 노력없이 이미지를 보관할 수 있습니다. Python 스크립트를 실행하기 만하면됩니다.
이미지를 다음과 같이 년 / 월 폴더로 정리합니다 : 2018> 12 December> 2018-12-06.jpg
이 스크립트는 내 Bing 배경 화면 폴더에 있습니다. (내 그림 폴더에 있음)
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)
배경 화면 업데이트를위한 선택적 추가 코드 : (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
예제 출력 :
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
추신 : 위의 스크립트는 &mkt=en-NZ
뉴질랜드 이미지에 사용됩니다. 여기
에서 다른 국가의 시장 코드를 확인할 수 있습니다. .
또한 여기 에서 여러 국가에 대해 2009 년 이후 보관 된 모든 이미지를 볼 수 있습니다 .
(하지만 1366x768에서만)
주요 PS는 로그온 할 때 실행할 스크립트를 작업 스케줄러에 추가합니다. (또는 매일 / 주간)
기본 작업
프로그램 / 스크립트 생성 : python (또는 환경 경로에없는 경우 C : \ Python34 \ python.exe)
인수 : "path / to / your / script.py"
시작 위치 : "path / to / your"
최신 정보! (2019 년 3 월)
2019-03-10 이미지에 xml 및 rss 형식 모두에서 잘못된 시작일 (20190309)이 지정되었습니다.
대신 Json 형식을 사용합니다. (정확한 날짜를 제공하기 때문에)
https://peapix.com/bing/feed
Bing 로고없이 최신 Bing 이미지를 나열하고 peapix.com 에서 유지 관리합니다 . . 지원되는 국가 / 지역 : AU, CA, CN, DE, FR, JP, US, GB.
예를 들어, 대한 https://peapix.com/bing/feed?country=jp 일본과 https://peapix.com/bing/feed?country=us 미국의.
Bash one liner (bash, curl 및 jq 필요), 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')"
해당 URL의 file_content를 가져오고 파일에서 이미지를 검색하는 것을 고려할 수 있습니다. 그것이 최선의 방법인지는 모르겠지만 그것은 방법입니다.
@Siv의 URL을 사용하여 다음은 업데이트하는 JavaScript의 예입니다. <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는 다음과 같습니다.
.bgimg {
height: 100%;
position: relative;
opacity: 0.95;
background-position: center;
background-repeat: no-repeat;
background-size: cover;
}
Linux 시스템에서 python 및 wget을 사용하여 수행 할 수 있습니다.
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
daily_im.jpg라는 이름으로 로컬 디렉토리에 데일리 빙 배경을 다운로드합니다. 모든 것을 script.py에 넣고 프로그래밍 방식으로 시작할 수 있습니다.
2018 년 9 월 27 일 수정 : http://www.istartedsomething.com/bingimages 는 몇 주 동안 404에 응답합니다. 더 이상 존재하지 않을 수 있습니다. :-(
istartedsomething.com의 Bing Image Archive를 사용할 수 있습니다 . 비공식 Bing 이미지 아카이브입니다. 이미지 검색에 도움이되는 수제 엔드 포인트를 사용합니다.
GET /bingimages/getimage.php?id=<image_id>
id
이미지가 게시 된 날짜와 게시 된 국가가 포함 된 문자열입니다. id
다음 형식을 준수해야합니다. YYYYMMDD-xx
, 여기서 :
YYYY
4 자리로 작성된 연도입니다.MM
두 자리로 작성된 월입니다.DD
두 자리 숫자로 작성된 요일입니다.xx
국가 표시기입니다. Bing Image Archive는 현재 다음 국가를 지원합니다.
au
: 호주.br
: 브라질.ca
: 캐나다.cn
: 중국.de
: 독일.fr
: 프랑스.gb
: 영국.jp
: 일본.nz
: 뉴질랜드.uk
: 영국.us
: 미국.정보가 있으면 유용한 JSON 객체를 반환하고, 아무것도 얻지 못하면 false를 반환합니다.
예 1 : 2014 년 5 월 24 일 뉴질랜드에서 게시 된 Bing 일일 이미지 검색
이미지 ID는 20140524-nz
요청 된 이미지가 2014 년 5 월 24 일에 게시되었고 국가 표시기가 인 뉴질랜드에서 게시 되었기 때문입니다 nz
.
http://www.istartedsomething.com/bingimages/getimage.php?id=20140524-nz 는 다음 JSON 조각을 반환합니다.
{
"url":"\/az\/hprichbg\/rb\/LakeMagadiFlamingos_ROW9792683076_1366x768.jpg",
"region":"nz",
"date":"2014-05-24",
"copyright":"Flamingos take flight, Lake Magadi, Kenya (\u00a9 Bobby Haas\/Getty Images)(Bing New Zealand)",
"imageurl":"http:\/\/www.istartedsomething.com\/bingimages\/cache\/LakeMagadiFlamingos_ROW9792683076_1366x768.jpg",
"hotspots":[],
"video":[]
}
당신이 사용할 수있는 imageurl
필드 나 url
이미지를 얻을 수 (빙 URL 경로) 필드를.
예 2 : 1998 년 7 월 12 일 프랑스에서 게시 된 Bing 일일 이미지 검색
이미지 ID는 19980712-fr
요청 된 이미지가 1998 년 7 월 12 일에 게시되었고 국가 표시기가 다음과 같은 프랑스에서 게시 되었기 때문입니다.fr
.
http://www.istartedsomething.com/bingimages/getimage.php?id=19980712-fr 은 false
1998 년 7 월 12 일에 프랑스에 대한 Bing 데일리 이미지가 없기 때문에 반환 됩니다 (Bing은 현재 존재하지 않았습니다).
OP는 운영 체제를 지정하지 않으므로 Linux에서 사용하기위한 것입니다. 여기에 제공된 스크립트에서 수정했습니다 .
기본적으로 오늘의 이미지의 URL을 가져 와서 이미지를 다운로드하여 고정 파일에 저장 하고 배경 화면을 설정하는 ~/.config/wallpaper.jpg
데 사용 feh
합니다. 동시에 알림을 보냅니다.
#!/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