Skip to content

axe433/bing_wallpaper_data

Repository files navigation

Bing Wallpaper Data Crawler and Markdown Generator

An automated Bing wallpaper data collection and documentation generation project that supports daily wallpaper data crawling, high-definition image downloading, and Markdown document generation for 34+ countries and regions.

🌟 Key Features

📊 Data Crawling

  • Multi-Country Support: Supports 34+ countries and regions for Bing wallpaper data
  • Daily Auto-Update: Automatically runs daily at 23:01 UTC via GitHub Actions
  • Data Integrity: Saves complete wallpaper metadata including titles, copyright info, descriptions, etc.

🖼️ Image Download

  • High-Definition Wallpapers: Automatically downloads UHD ultra-high-definition wallpapers
  • Smart Deduplication: Automatically detects and removes duplicate images based on MD5 hash
  • Incremental Download: Only downloads new wallpapers, avoiding duplicates
  • File Management: Uses MD5 values as filenames for easy management and deduplication

📝 Document Generation

  • Automated Documentation: Generates dedicated Markdown documents for each country
  • Responsive Layout: 3-column grid layout that adapts to different screen sizes
  • Multi-Time Dimensions: Supports today's wallpaper, recent 30 days, and archive browsing by year/month
  • Multilingual Support: Supports interface text in multiple languages

🗂️ Project Structure

Project Root/
├── .github/workflows/          # GitHub Actions workflows
│   └── python-app.yml         # Automation task configuration
├── crawl/                     # Crawler scripts directory
│   ├── bing_data.py          # Data crawling script
│   ├── download_wallpapers_action.py  # Wallpaper download script (Actions version)
│   ├── download_wallpapers.py # Wallpaper download script (Local version)
│   ├── generate_markdown.py  # Markdown document generation script
│   ├── generate_readme.py    # README generation script
│   └── deduplicate_images.py # Image deduplication tool
├── jsonc/                     # Wallpaper data storage
│   ├── us/bing.jsonc         # US wallpaper data
│   ├── cn/bing.jsonc         # China wallpaper data
│   └── ...                   # Other country data
├── images/                    # Downloaded wallpaper images
│   ├── {md5}.jpg             # Image files named with MD5
│   └── ...
├── markdown/                  # Generated documents
│   ├── wallpaper-list-us.md  # US wallpaper document
│   ├── wallpaper-list-cn.md  # China wallpaper document
│   └── ...                   # Other country documents
├── messages/                  # Internationalization text
│   ├── us.json               # English interface text
│   ├── cn.json               # Chinese interface text
│   └── ...
├── templates/                 # README template files
│   ├── README_template.md    # English README template
│   └── README_CN_template.md # Chinese README template
├── README.md                  # Project documentation (auto-generated)
└── README_CN.md              # Chinese documentation (auto-generated)

🚀 Core Scripts

bing_data.py - Data Crawling Script

  • Function: Crawls daily wallpaper data from Bing API
  • Output: Saves to jsonc/{country}/bing.jsonc
  • Features:
    • Supports 34+ countries and regions
    • Automatic API response and error handling
    • Maintains chronological order (newest first)
    • Incremental updates, avoiding duplicate data

download_wallpapers_action.py - Wallpaper Download Script

  • Function: Downloads high-definition wallpaper images and manages files
  • Features:
    • Smart Skip: Checks md5 field in JSON, skips already downloaded items
    • URL Construction: https://www.bing.com{urlbase}_UHD.jpg
    • MD5 Management: Calculates image MD5 value, used as filename and deduplication identifier
    • Auto Deduplication: Automatically deletes duplicate files with same MD5
    • Data Update: Writes MD5 value back to JSON data

generate_markdown.py - Document Generation Script

  • Function: Generates beautiful Markdown wallpaper documents
  • Output: Saves to markdown/wallpaper-list-{country}.md
  • Features:
    • Today's Wallpaper: Showcases the featured wallpaper of the day
    • Recent 30 Days: 3-column grid layout showing recent wallpapers
    • Archive Navigation: Historical wallpaper browsing organized by year/month
    • Responsive Design: Display effects adapted to different devices
    • Multilingual Support: Displays interface in corresponding language based on country

generate_readme.py - README Generation Script

  • Function: Automatically generates bilingual README documents
  • Input: Reads from templates/README_template.md and templates/README_CN_template.md
  • Output: Updates README.md and README_CN.md in project root
  • Features:
    • Template-Based: Uses template files to avoid overwriting base content
    • Country Links: Generates links to all country wallpaper documents
    • Today's Wallpaper: Embeds today's featured wallpaper (US for English, CN for Chinese)
    • Bilingual Support: Generates both English and Chinese versions
    • Auto-Update: Runs daily with other automation tasks

⚙️ Automated Workflow

GitHub Actions automatically executes the following steps daily:

  1. 🔄 Checkout Code - Get the latest project code
  2. 🐍 Setup Python Environment - Configure Python runtime environment
  3. 📦 Install Dependencies - Install necessary libraries like requests
  4. 📊 Crawl Data - Run bing_data.py to get latest wallpaper data
  5. 🖼️ Download Images - Run download_wallpapers_action.py to download new wallpapers
  6. 📝 Generate Documents - Run generate_markdown.py to update Markdown documents
  7. 📄 Generate README - Run generate_readme.py to update project README files
  8. 💾 Commit Changes - Automatically commit and push all updates

🌍 Supported Countries and Regions

The project supports the following 34 countries and regions:

Code Country/Region Code Country/Region Code Country/Region
ar 🇦🇷 Argentina au 🇦🇺 Australia br 🇧🇷 Brazil
ca 🇨🇦 Canada cn 🇨🇳 China cz 🇨🇿 Czech Republic
de 🇩🇪 Germany dk 🇩🇰 Denmark es 🇪🇸 Spain
fi 🇫🇮 Finland fr 🇫🇷 France gb 🇬🇧 United Kingdom
gr 🇬🇷 Greece hk 🇭🇰 Hong Kong id 🇮🇩 Indonesia
in 🇮🇳 India it 🇮🇹 Italy jp 🇯🇵 Japan
kr 🇰🇷 South Korea my 🇲🇾 Malaysia nl 🇳🇱 Netherlands
no 🇳🇴 Norway pl 🇵🇱 Poland pt 🇵🇹 Portugal
ru 🇷🇺 Russia se 🇸🇪 Sweden sg 🇸🇬 Singapore
th 🇹🇭 Thailand tr 🇹🇷 Turkey tw 🇹🇼 Taiwan
ua 🇺🇦 Ukraine us 🇺🇸 United States vn 🇻🇳 Vietnam
za 🇿🇦 South Africa

🛠️ Local Usage

Requirements

  • Python 3.7+
  • requests library

Install Dependencies

pip install requests

Manual Execution

# 1. Crawl wallpaper data
python crawl/bing_data.py

# 2. Download wallpaper images
python crawl/download_wallpapers_action.py

# 3. Generate Markdown documents
python crawl/generate_markdown.py

# 4. Generate README documents
python crawl/generate_readme.py

Image Deduplication Tool

# Clean duplicate image files
python crawl/deduplicate_images.py

📋 Generated Document Features

Each generated Markdown document includes:

🎯 Today's Wallpaper

  • High-definition wallpaper preview
  • Detailed description and copyright information
  • Click to view details page link

📅 Recent 30 Days

  • 3-column responsive grid layout
  • Thumbnail and basic information for each wallpaper
  • Formatted date display

🗃️ Archive Navigation

  • Month navigation grouped by year
  • Current month highlighting
  • Beautiful button-style design

🌐 Multilingual Support

  • Automatically selects interface language based on country
  • Supports English, Chinese, German, French, Japanese, etc.
  • Extensible internationalization framework

🔧 Configuration

GitHub Actions Configuration

Workflow configuration file: .github/workflows/python-app.yml

name: Generate Bing Wallpaper Json Auto
on:
  schedule:
    - cron: '1 23 * * *'  # Execute daily at 23:01 UTC
  workflow_dispatch:      # Support manual trigger

jobs:
  download_and_push:
    runs-on: ubuntu-latest
    steps:
      - name: run bingjson
        run: python crawl/bing_data.py
      - name: Download wallpaper images
        run: python crawl/download_wallpapers_action.py
      - name: Generate markdown documents
        run: python crawl/generate_markdown.py
      - name: Generate README documents
        run: python crawl/generate_readme.py
      - name: Commit and Push
        run: |
          git add .
          git commit -m "Update wallpaper data and markdown at $(date)"
          git push

Data Format

Each wallpaper data item contains the following fields:

  • startdate / enddate: Start and end dates of the wallpaper
  • url / urlbase: URL information of the wallpaper
  • copyright: Copyright information
  • title: Wallpaper title
  • md5: MD5 hash value of the image file (added after download)
  • MediaContent: Detailed media content information

🎨 Featured Capabilities

Smart Download Management

  • Incremental Download: Only downloads new wallpapers without md5 field
  • Auto Deduplication: Avoids duplicate images based on MD5 hash
  • Error Handling: Graceful handling of network exceptions without interrupting the process
  • Detailed Logging: Provides clear processing progress and result statistics

Document Generation Optimization

  • Responsive Design: Adapts to desktop and mobile devices
  • SEO Friendly: Structured titles and metadata
  • Fast Loading: Optimized image links and layout
  • User Experience: Intuitive navigation and browsing experience

Automated Operations

  • Scheduled Execution: Daily automatic updates without manual intervention
  • Error Monitoring: GitHub Actions provides execution status monitoring
  • Version Control: All changes have complete Git history records
  • Scalability: Easy to add new countries and features

📈 Project Statistics

  • Supported Countries: 34+ countries and regions
  • Data Format: JSON/JSONC structured storage
  • Image Quality: UHD ultra-high-definition (usually 3840x2160 or higher)
  • Update Frequency: Daily automatic updates
  • Document Format: Markdown, perfectly compatible with GitHub

🤝 Contributing

Welcome to submit Issues and Pull Requests to improve this project!

📄 License

This project is for learning and research purposes only. All wallpaper copyrights belong to Microsoft Bing and the respective photographers/copyright owners.


Last Updated: August 2025

🌍 Country Wallpaper Links

Click the links below to view wallpaper for each country:

🇦🇷 Argentina 🇦🇺 Australia 🇧🇷 Brazil 🇨🇦 Canada 🇨🇳 China
🇨🇿 Czech Republic 🇩🇪 Germany 🇩🇰 Denmark 🇪🇸 Spain 🇫🇮 Finland
🇫🇷 France 🇬🇧 United Kingdom 🇬🇷 Greece 🇭🇰 Hong Kong 🇮🇩 Indonesia
🇮🇳 India 🇮🇹 Italy 🇯🇵 Japan 🇰🇷 South Korea 🇲🇾 Malaysia
🇳🇱 Netherlands 🇳🇴 Norway 🇵🇱 Poland 🇵🇹 Portugal 🇷🇺 Russia
🇸🇪 Sweden 🇸🇬 Singapore 🇹🇭 Thailand 🇹🇷 Turkey 🇹🇼 Taiwan
🇺🇦 Ukraine 🇺🇸 United States 🇻🇳 Vietnam 🇿🇦 South Africa

Today's Wallpaper

Where time grows tall

Where time grows tall

Step into the realm of giants. Try embracing a BFG (Big Friendly Giant) as you wrap your arms around a thousand years of wisdom in a single tree trunk. Welcome to Muir Woods National Monument—established on this day in 1908—a majestic hall of coastal redwoods just north of San Francisco. These towering redwoods are the tallest trees on Earth—one here stretches about 258 feet, roughly the height of 43 people stacked head to toe. Most are 600–800 years old, and some have stood for over a millennium, yet they're still considered 'young' for a species that can live for 2,000 years.

© photo by canderson/Getty Images (Bing United States)


Recent 30 Days

Where time grows tall Rust meets rush Rock legends
Where time grows tall
Giant redwood trees in Muir Woods National Monument, California
2026-01-10
Rust meets rush
Starling murmuration over the ruins of Brighton's West Pier, England
2026-01-09
Rock legends
Turret Arch framed by North Window in Arches National Park, Utah
2026-01-08
Chillin' in Nuuk Herd on high alert A royal view
Chillin' in Nuuk
Nuuk, Greenland
2026-01-07
Herd on high alert
A herd of impalas, Londolozi Game Reserve, South Africa
2026-01-06
A royal view
Kings Mountain, Chugach Mountains, Alaska
2026-01-05
The steps before the saga The soul of Venice Stretch into the New Year
The steps before the saga
Staubbach Falls at Lauterbrunnen, Canton of Bern, Switzerland
2026-01-04
The soul of Venice
Aerial view of Venice, Italy
2026-01-03
Stretch into the New Year
Arctic fox sleeping
2026-01-02
Where Berlin bridges the New Year Whoop, there they fly The church that outlived a city
Where Berlin bridges the New Year
New Year's Eve, Oberbaum Bridge, Berlin, Germany
2026-01-01
Whoop, there they fly
Whooper swans, Kotoku Pond, Japan
2025-12-31
The church that outlived a city
St. Gregory Church in Ani Ruins, Kars, Türkiye
2025-12-30
What remains wild Shards of winter Unboxed traditions
What remains wild
Black-and-white ruffed lemur in Madagascar
2025-12-29
Shards of winter
Plate ice along Lake Superior, Grand Marais, Minnesota
2025-12-28
Unboxed traditions
Salisbury Cathedral, Wiltshire, England
2025-12-27
Miniature worlds, infinite wonder Traditions that travel Where holiday magic runs on hooves
Miniature worlds, infinite wonder
Snow globes at a Christmas market in Heidelberg, Germany
2025-12-26
Traditions that travel
Snowy chapel with Christmas tree in the Bavarian Alps, Germany
2025-12-25
Where holiday magic runs on hooves
Reindeer during winter snowfall, Lapland, Finland
2025-12-24
From Hoffmann's pages to global stages Birth of the new sun Twinkle, twinkle, paper stars
From Hoffmann's pages to global stages
'The Nutcracker' performed by the Turkish State Opera and Ballet in Ankara, Türkiye
2025-12-23
Birth of the new sun
Dawn light through frosty trees, Sweden
2025-12-22
Twinkle, twinkle, paper stars
Christmas star lanterns, Germany
2025-12-21
High mountains, deep history Layers of time in Utah Fur, frost, and feast
High mountains, deep history
Snow-covered landscape at Bormio, Lombardy, Italy
2025-12-20
Layers of time in Utah
Temple of the Sun, Capitol Reef National Park, Utah
2025-12-19
Fur, frost, and feast
Eurasian red squirrel in Northumberland, England
2025-12-18
Tiny hats, big spirits Still waters, bright lights The great holiday bird-off
Tiny hats, big spirits
Handmade gnomes at a Christmas market
2025-12-17
Still waters, bright lights
Lights on Spiegelgracht canal, Amsterdam, Netherlands
2025-12-16
The great holiday bird-off
Tufted titmouse perched on pine boughs, Massachusetts
2025-12-15
Frozen reflections The plant that paints the holidays red Where the sky meets Earth
Frozen reflections
Merced River, Yosemite National Park, California
2025-12-14
The plant that paints the holidays red
Spotted poinsettia
2025-12-13
Where the sky meets Earth
Summit of Mount Everest at sunset, seen from Renjo La, Nepal
2025-12-12

Wallpaper Archive by Year

2026

2025


Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages