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

Reading between the lines

Reading between the lines

Etosha National Park, Namibia, is not a place for soft starts, and the plains zebra foal in this image seems to get the memo. In a land this vast—nearly 8,600 square miles of salt pans and grassland—timing is everything, and hesitation is expensive. Lions, spotted hyenas, wild dogs, cheetahs, and leopards constantly pressure the herd—especially the youngest—so zebras are born ready. Minutes after arrival, they're upright. Hours later, they're moving.

© Sharon Heald/Nature Picture Library (Bing United States)


Recent 30 Days

Reading between the lines A 'peak' into history Design meets discipline
Reading between the lines
Plains zebra foal in Etosha National Park, Namibia
2026-05-31
A 'peak' into history
Mount Everest summit, Sagarmatha National Park, Nepal
2026-05-30
Design meets discipline
Old city wall of Hwaseong Fortress, Suwon, South Korea
2026-05-29
No 'otter' like them A season written in lupine Where silence bears names
No 'otter' like them
Sea otter, Kachemak Bay, Homer, Alaska
2026-05-28
A season written in lupine
Lupine flowers in bloom, Northern California
2026-05-27
Where silence bears names
Memorial Amphitheater at Arlington National Cemetery, Arlington, Virginia
2026-05-26
Preserving Europe's wild places Shell yeah, turtles! The shape of life at sea
Preserving Europe's wild places
Tre Cime Nature Park, South Tyrol, Italy
2026-05-25
Shell yeah, turtles!
Turtles with butterflies
2026-05-24
The shape of life at sea
Kauehi Atoll, Tuamotu Archipelago, French Polynesia
2026-05-23
Brewing a legacy Where the buzz begins The edge of Mallorca
Brewing a legacy
Tea terraces in Sichuan Province, China
2026-05-22
Where the buzz begins
Bumble bee pollinating, Worcester, England
2026-05-21
The edge of Mallorca
Formentor Lighthouse, Mallorca, Balearic Islands, Spain
2026-05-20
Hope in the hall Quiet peak, loud view Rock bottom? Not here
Hope in the hall
Natural History Museum, London, England
2026-05-19
Quiet peak, loud view
Hawksbill Mountain in Shenandoah National Park, Virginia
2026-05-18
Rock bottom? Not here
Smith Rock State Park, Oregon
2026-05-17
Whale you save me? A journey through time Rock on, Milky Way!
Whale you save me?
A family of sperm whales, Indian Ocean
2026-05-16
A journey through time
Medieval town of Pitigliano, Tuscany, Italy
2026-05-15
Rock on, Milky Way!
Arch and Milky Way, Alabama Hills, Sierra Nevada, California
2026-05-14
Flap, dive, survive Underwater architecture A bond that endures
Flap, dive, survive
Atlantic puffins, Wales
2026-05-13
Underwater architecture
Great Barrier Reef from above, Queensland, Australia
2026-05-12
A bond that endures
Polar bear mother and cubs playing in Wapusk National Park, Manitoba, Canada
2026-05-11
The architect of Krka More than a hee-haw Desert, drawn wide
The architect of Krka
Skradinski Buk Waterfall in Krka National Park, Croatia
2026-05-10
More than a hee-haw
Sardinian donkey mare and foal, France
2026-05-09
Desert, drawn wide
Kofa National Wildlife Refuge, Arizona
2026-05-08
Plains under pressure Where history took root Sci‑Fi, Earth‑made
Plains under pressure
Thunderstorm above the plains, Bulgaria
2026-05-07
Where history took root
Field of blue agave near Tequila, Jalisco, Mexico
2026-05-06
Sci‑Fi, Earth‑made
Ksar Ouled Soltane, Tataouine district in southern Tunisia
2026-05-05
Savanna afterglow The magic of Jasper A pond of stories
Savanna afterglow
Leopard sleeping in a tree in savanna, Masai Mara National Reserve, Kenya
2026-05-04
The magic of Jasper
Small lake and marsh in Jasper National Park in Alberta, Canada
2026-05-03
A pond of stories
Koi fish, Lan Su Chinese Garden, Portland, Oregon
2026-05-02

Wallpaper Archive by Year

2026

2025


Releases

No releases published

Packages

 
 
 

Contributors

Languages