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.
- 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.
- 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
- 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 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)
- 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
- Function: Downloads high-definition wallpaper images and manages files
- Features:
- Smart Skip: Checks
md5field 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
- Smart Skip: Checks
- 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
- Function: Automatically generates bilingual README documents
- Input: Reads from
templates/README_template.mdandtemplates/README_CN_template.md - Output: Updates
README.mdandREADME_CN.mdin 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
GitHub Actions automatically executes the following steps daily:
- 🔄 Checkout Code - Get the latest project code
- 🐍 Setup Python Environment - Configure Python runtime environment
- 📦 Install Dependencies - Install necessary libraries like
requests - 📊 Crawl Data - Run
bing_data.pyto get latest wallpaper data - 🖼️ Download Images - Run
download_wallpapers_action.pyto download new wallpapers - 📝 Generate Documents - Run
generate_markdown.pyto update Markdown documents - 📄 Generate README - Run
generate_readme.pyto update project README files - 💾 Commit Changes - Automatically commit and push all updates
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 |
- Python 3.7+
requestslibrary
pip install requests# 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# Clean duplicate image files
python crawl/deduplicate_images.pyEach generated Markdown document includes:
- High-definition wallpaper preview
- Detailed description and copyright information
- Click to view details page link
- 3-column responsive grid layout
- Thumbnail and basic information for each wallpaper
- Formatted date display
- Month navigation grouped by year
- Current month highlighting
- Beautiful button-style design
- Automatically selects interface language based on country
- Supports English, Chinese, German, French, Japanese, etc.
- Extensible internationalization framework
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 pushEach wallpaper data item contains the following fields:
startdate/enddate: Start and end dates of the wallpaperurl/urlbase: URL information of the wallpapercopyright: Copyright informationtitle: Wallpaper titlemd5: MD5 hash value of the image file (added after download)MediaContent: Detailed media content information
- ✅ Incremental Download: Only downloads new wallpapers without
md5field - ✅ 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
- ✅ 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
- ✅ 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
- 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
Welcome to submit Issues and Pull Requests to improve this project!
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
Click the links below to view wallpaper for each country:
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)
![]() |
![]() |
![]() |
| 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 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 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 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 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 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 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 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 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 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 |





























