Skip to main content

Fetch and download Windows Spotlight images automatically. Lightweight and easy to use.

Project description

pyspotlightarchiver

pyspotlightarchiver hero

pyspotlightarchiver is a Python CLI tool for fetching, preserving, and managing Windows Spotlight images.

Inspired by Spotlight-Downloader.

🚀 Features

  • List available Spotlight image URLs
  • Download Spotlight images in 1080p or 4K resolution
  • Filter by locale and orientation
  • Embed EXIF metadata with exiftool
  • Avoid duplicate downloads with perceptual hash and URL checks
  • Automatic throttling to avoid rate limits

📦 Requirements

⚖️ Installation

From PyPI (recommended)

pip install pyspotlightarchiver

From source (for development)

  1. Clone the repository:

    git clone https://github.com/yell0wsuit/pyspotlightarchiver.git
    cd pyspotlightarchiver
    

    Or download as ZIP and extract it.

  2. (Optional) Create a virtual environment:

    python -m venv venv
    .\venv\Scripts\activate  # On Windows
    source venv/bin/activate  # On Linux/Mac
    

    We recommend using a virtual environment to avoid conflicts with other Python packages.

  3. Install dependencies:

    pip install -r requirements.txt
    

⚙️ Usage

Run the tool using:

pyspotlightarchiver [command] [options]

Available commands

list-url

List available Windows Spotlight image URLs.

pyspotlightarchiver list-url [options]
Option Description
--api-ver API version to use (3 for 1080p, 4 for 4K). Default: 3.
--locale Locale code (e.g., en-us). Use all to include all locales. Default: en-us.
--orientation Filter by image orientation: landscape, portrait, or both. Default: landscape.
--verbose Enable verbose output.

download

Download Spotlight images to your computer.

pyspotlightarchiver download --single|--multiple [options]

Required:

  • --single: Download a single image.

    • If --locale all, a random locale is selected.
    • If --orientation both, both orientations are downloaded.
  • --multiple: Download all available images.

    • With --locale all, all locales are processed.
    • With --orientation both, both versions are downloaded.

Additional Options:

Option Description
--api-ver API version (3 or 4). Default: 3.
--locale Locale code (e.g., en-us). Default: en-us.
--orientation Image orientation: landscape, portrait, or both. Default: landscape.
--save-dir Directory to save downloaded images. Default: downloaded_spotlight.
--embed-exif Embed EXIF metadata using exiftool.
--exiftool-path Path to exiftool. Required if not in system PATH.
--verbose Show detailed logs.

📌 Notes

🔄 Locale throttling

When using --locale all, the tool throttles API requests to avoid rate limits.

  • Locales are processed in chunks of 15.
  • Delay increases after each chunk:
    • After 15 locales: wait 5 sec
    • After 30: wait 10 sec
    • After 45: wait 15 sec
    • ...up to a maximum of 180 seconds.

🔁 Download loop (with --multiple)

The tool continues downloading images until no new images are found after 50 consecutive attempts.

After every 10 attempts, delay increases gradually, capped at 180 seconds to avoid rate limiting.

📂 Caching & duplicates

  • A local SQLite database tracks downloaded image URLs and perceptual hashes
  • Located at: .cache/downloaded_images.sqlite
  • Prevents redownloading of identical images.
  • Detected perceptual duplicates are logged in: phash_duplicates_report.md

💡 Tip: Do not delete the cache database to preserve download history.

📄 License

This project is licensed under the GNU GPLv3.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyspotlightarchiver-1.1.8.tar.gz (136.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyspotlightarchiver-1.1.8-py3-none-any.whl (42.7 kB view details)

Uploaded Python 3

File details

Details for the file pyspotlightarchiver-1.1.8.tar.gz.

File metadata

  • Download URL: pyspotlightarchiver-1.1.8.tar.gz
  • Upload date:
  • Size: 136.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyspotlightarchiver-1.1.8.tar.gz
Algorithm Hash digest
SHA256 4309fc62162aa839b23ab979e0e5fe2d0a036b241473d91511806527abcae51b
MD5 ad3eda6dfc0aa23027e4f741cc9654d4
BLAKE2b-256 33e35064231166d3adcc4a691007b66aa060263a8ac52ffcc5043a399cc8cde9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyspotlightarchiver-1.1.8.tar.gz:

Publisher: build.yaml on yell0wsuit/pyspotlightarchiver

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyspotlightarchiver-1.1.8-py3-none-any.whl.

File metadata

File hashes

Hashes for pyspotlightarchiver-1.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 b0be5ea310bd9d23e72414fe9ec0d71349a1308198c024b2daf625fbe122d63a
MD5 4afdc6b759bd8d67979297fd99e58a68
BLAKE2b-256 b99ab96dd59dcc113503f7be6b159bf04cd34614130b9f718d2d5952140a2942

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyspotlightarchiver-1.1.8-py3-none-any.whl:

Publisher: build.yaml on yell0wsuit/pyspotlightarchiver

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page