The Problem
We just got a Samsung Frame TV. It displays art and looks fantastic — which sounds great until you see the art mode. A subscription, no attribution, no context about the work or where to see it in person.
Sunday morning, I described to Claude exactly how I'd like the TV to display art: public domain masterpieces, properly labeled with title, artist, year, and source museum. It built a solid first pass while my friends and I went out to a show. Came home to a decent product, made a few adjustments and tested them, and now I have the art display I want.
In the first tranche, curated works from the Met, the Art Institute of Chicago, the Cleveland Museum of Art, and more. All attributed, with white labels on a subtle dark gradient so they read over any painting. Images are pushed to the TV over the network, with USB as the fallback. When I feel like changing up the art, I run another batch.
What It Does
Multi-Source Museum APIs
Pulls from the Met, Art Institute of Chicago, Cleveland Museum of Art, and Wikimedia Commons — which is a gateway to the Louvre, Musée d'Orsay, National Gallery London, Prado, Uffizi, Hermitage, and dozens more. No API keys needed.
Smart Filtering
Only landscape-orientation paintings by ~130 major artists make it through. Drawings, prints, photographs, ceramics, and sculptures are automatically filtered out. No single artist dominates — a per-artist cap keeps the gallery diverse.
Gallery-Quality Processing
Every image goes through a 9-step pipeline: ICC color profile conversion to sRGB, landscape validation, center crop to 16:9, 4K resize with Lanczos resampling, subtle sharpening, warmth adjustment for the Frame TV's display, and a museum-style metadata label.
Museum-Style Labels
Each artwork gets a tasteful overlay showing the title, artist, date, and museum — just like walking through a gallery. Label text is sanitized to strip HTML, Wikidata markup, and non-Latin characters from the raw API metadata.
Featured Artists
Guarantee certain artists always appear in your gallery. I configured mine to always include Raja Ravi Varma and Amrita Sher-Gil alongside the Monets and Vermeers — because my gallery should reflect my taste, not just the Western canon.
How It Works
One command builds your entire gallery:
1 · Search
Queries three museum APIs plus Wikimedia Commons for landscape paintings by major artists. Configurable via a single config.yaml file.
2 · Filter
Rejects non-paintings, portraits, low-resolution images, and works by unknown artists. Enforces per-artist caps and guarantees featured artist minimums.
3 · Process
Downloads high-res originals, converts color profiles to sRGB, center-crops to 16:9, resizes to 4K, sharpens, warms, and overlays a metadata label. Output goes to a folder or directly to a USB drive.
4 · Display
Push the batch straight to the TV over your network — each image lands with its mat already off — or fall back to a USB stick. Set to shuffle, and run it again anytime for a fresh batch: themed, if you like (“impressionist”, “cityscapes”, or a single artist).
Under the Hood
For the engineers — the full stack, openly published:
- Python — the pipeline that ties it all together
- Pillow — image processing, ICC color conversion, 4K resize, label overlay
- Museum APIs — Met (CC0), AIC (IIIF), CMA, Wikimedia Commons — all free, no keys needed
- PyYAML — configuration for sources, queries, display settings, and featured artists
Three dependencies, plus one more to push over the network. No server, no database, no subscription. Run it once, get art.
Want to ditch the Art Store subscription?
The full source code is on GitHub. Fork it — the README walks you through setup.