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.4.tar.gz (136.2 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.4-py3-none-any.whl (42.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pyspotlightarchiver-1.1.4.tar.gz
  • Upload date:
  • Size: 136.2 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.4.tar.gz
Algorithm Hash digest
SHA256 8fe64edb3758e088c49053e4c064af5c4766c4d74a92bfde9498d031a341e4a7
MD5 aa487616654d8cec41b5541a308aab9d
BLAKE2b-256 d94f54356ef28dd0087f55aafb4b2c3643813d94cd6cc03ba1011557303ec9e3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyspotlightarchiver-1.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 f1b7219714461c0449166a3c9492d47e081cf475f62929476f3c596a631ea3da
MD5 ddb71bdf5516790712fe5352246e8050
BLAKE2b-256 e7cabffccbb47d4ee59e7a3b93e761ae75654435156519c076f8ecae1004ab8a

See more details on using hashes here.

Provenance

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