Skip to content

Most comprehensive and easy-to-use collection of stunning Bing daily wallpapers 🖼️

License

Notifications You must be signed in to change notification settings

npanuhin/Bing-Wallpaper-Archive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bing Wallpaper Archive

Usage

All information is stored in "API files"1. They can be obtained by sending a GET request to the following URL:

https://bing.npanuhin.me/{country}/{language}.json

The following countries and languages are currently available:

United States Canada (English) Italy Spain France Germany
US/en CA/en IT/it ES/es FR/fr DE/de
United Kingdom Canada (French) India China Japan Brazil
GB/en CA/fr IN/en CN/zh JP/ja BR/pt
Rest of The World:   ROW/en 

One API file consists of an array of image data2:

[
    // Types and descriptions:
    {
        "title": "Title" | null,
        "caption": "Caption" | null,
        "subtitle": "Subtitle" | null,
        "copyright": "Copyright" | null,
        "description": "Description" | null,
        "date": "Date in %Y-%m-%d format with leading zeros",
        "bing_url": "Bing URL" | null,
        "url": "Storage URL: https://bing.npanuhin.me/{country}/{language}/{date}.jpg"
    },
    // Example:
    {
        "title": "Example title",
        "caption": "Example caption",
        "subtitle": "Example subtitle",
        "copyright": "npanuhin/Bing Wallpaper Archive ©",
        "description": "Example description\nThat can span multiple lines",
        "date": "2009-06-03",
        "bing_url": null,
        "url": "https://bing.npanuhin.me/US/en/2024-01-16.jpg"
    }
]
  • Images are sorted by date in ascending order (oldest first, newest last)

  • The bing_url field contains the original image URL from Bing (Microsoft) servers. Unfortunately, it is not possible to retrieve images from more than a couple of years ago from these URLs (they all point to the same dummy image)

Note

API files tend to be quite large (a couple of MB)

Tip

If you only need images, you can skip loading the API files altogether! Simply make a request to the storage URL using the format specified above (if 404 is returned, then sadly we don't have this image).

If you still need image titles, descriptions, etc., but want to save bandwidth, you can get API files for specific years:

https://bing.npanuhin.me/{country}/{language}.{year}.json

For example: US/en.2021 or ROW/en.2024
These files are minified and typically have a size of 100-500 KB. If 404 is returned, then we don't have any images for that year

Important

Feel free to use the API files and images, but please avoid sending frequent requests (for images this would incur additional costs for me).

If you need to make frequent requests to the API files, I recommend downloading and caching them locally (they are updated only once a day). The same applies to the images (although this will be quite difficult to implement).

Your understanding and cooperation are greatly appreciated 🙂

Version 2 roadmap

After two years, I decided to rewrite the entire project and to fix numerous issues, including storage capacity and metadata.

Stages (roughly in order of importance):

  • Proper everyday image retrieval from three sources
  • Uploading images to external storage (chose Google Cloud Storage Cloudflare R2 for now)
  • Removing metadata nonsense — images should be preserved in their original form
  • Upload all images to storage
  • Replace spaces by \t in API to reduce space
  • Fix metadata for all images (currently done: ?/?)
  • Finally remove all images from this repo and reduce the size of repo (+ number of commits in repo)
  • Remove the path key
  • Generate API only for website and not store it in Git repo (+ minified)
  • Write a comprehensive README
  • Enable other countries
  • Rewrite website
  • Website: hold current image when hovering over title
  • Website: Maybe show the latest image as the first one + preload it sooner than JS script would do it
  • Website: fade-in not just body but all elements
  • Add protection for GCloud (because 5s per image ~= 500'000 images per month if somebody decides to leave the page open for so long xd) Switched to Cloudflare R2
  • Deal with integrity errors (see TODO below)
  • Update (and upload to storage) videos, if needed
  • Find a way to retrieve videos from Bing (identify that today's image is a video, etc.)

TODO

  • Ability to download full acrhive from Cloudflare R2 as .zip
  • Missing images (!) (src/check_status.py shows 4 images) UPD: probably those are videos, need to check
  • Add more images from 2009
  • Videos update
  • Multiple months are missing one image on the last day
  • Month 2016-02 has two duplicate images and is missing one image

Copyright

All images are property of their respective owners (Microsoft, Getty Images, etc.), see the copyright field for more details.

Microsoft's official statement regarding wallpaper downloads is: "Use of this image is restricted to wallpaper only."

Footnotes

  1. These files are not a typical API, but they are used to retrieve all valuable information. In some sense they are the Interface of my Application (though not really a Programming Interface)

  2. Although the title field is optional, de facto every image has a proper title, and this also applies to new images