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.11.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.11-py3-none-any.whl (42.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pyspotlightarchiver-1.1.11.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.11.tar.gz
Algorithm Hash digest
SHA256 9a1924b1b13189e115148e50b3636e8de6d56db555e3d2c1dec4e028f5ad9d05
MD5 e3020d14f3dac895f47ffdbca5b7d89e
BLAKE2b-256 72317265e61ea74ed8a9a6f1ca62b7b57ade2b939a083faf712ed7d035fde177

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyspotlightarchiver-1.1.11-py3-none-any.whl
Algorithm Hash digest
SHA256 a29b93d6244ebcbcbaa8e122cd9cc424f1fb793b2972f1d3d486f2f011336d99
MD5 35c48b15ddd3960d475f8034fce877c9
BLAKE2b-256 54d6d60c5d3d7d8546af425b65e98c359b31adea72576d6c46b1171d5235d5b7

See more details on using hashes here.

Provenance

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