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 Pillow
  • 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.
--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.2.tar.gz (136.0 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.2-py3-none-any.whl (41.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pyspotlightarchiver-1.2.tar.gz
Algorithm Hash digest
SHA256 fce2e30b2bf11ff3ce18a03fe21712a2a52ff9593b40b6b6c645e0c9f0313aad
MD5 3392500ca6ce18d33f3860cd91f7642d
BLAKE2b-256 5984535e9751c6ebff882232b0876484a426543abda2ada09827b94dc7d5f33b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyspotlightarchiver-1.2.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.2-py3-none-any.whl.

File metadata

File hashes

Hashes for pyspotlightarchiver-1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9e311a15f8b9945efb5db14b1d8372a76c7d7112ec0765e9a44b8a9c9b3c30e4
MD5 835cc338eed55e1024b03925c7966ef3
BLAKE2b-256 c29e5b87b41778515cbc0599e4d6798ffe9bc6862738314ebd6e9ccd4806ade8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyspotlightarchiver-1.2-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