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

Uploaded Python 3

File details

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

File metadata

  • Download URL: pyspotlightarchiver-1.1.10.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.10.tar.gz
Algorithm Hash digest
SHA256 87b59bb8bd53bf5efd22c89b095811295d9937375a78bc1300dc4313ce06a269
MD5 d95369d716221bfabff6130c01059208
BLAKE2b-256 411a26fb8af2de49373453f500d536633b51f60e6dac9322f4b902454d0ad61b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyspotlightarchiver-1.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 d2a24986d173a420642e5f8f37a300378a456f93e6a85191f4b96c48de0fc5b8
MD5 8e4a763d90678ea74c986b16dc1c4ba3
BLAKE2b-256 0d25095c08f6f11f28d26d052e0754930222e10dfd1292bff5d12f7cf65f6c77

See more details on using hashes here.

Provenance

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