Skip to main content

Download high-resolution tiled artwork images from Artsy artwork pages.

Project description

Artsy Tiled Image Downloader

Download high-resolution tiled artwork images from Artsy artwork pages for personal study and technical research.

Features

  • Uses a reusable HTTPX async client with connection pooling and HTTP/2 support.
  • Validates input URL/slug, metadata fields, tile dimensions, output size limits, retry counts, timeouts, and concurrency.
  • Downloads tiles concurrently and stitches directly from in-memory tile bytes.
  • Writes final files with an atomic temporary file in the output directory, so a failed save does not leave a partial image at the final path.
  • Splits CLI, metadata parsing, downloading, image assembly, paths, config, and exceptions into testable modules.

Installation

Install from PyPI:

pip install artsy-tiled-image-downloader

The installed console command is:

artsy-downloader [artsy-artwork-url]

For local development:

python3 -m venv .venv
source .venv/bin/activate
pip install -e .

Usage

python -m artsy_tiled_image_downloader [artsy-artwork-url]

After installation, the same CLI is also available as:

artsy-downloader [artsy-artwork-url]

Example:

python -m artsy_tiled_image_downloader https://www.artsy.net/artwork/yayoi-kusama-stars-11

Useful options:

python -m artsy_tiled_image_downloader --metadata-only https://www.artsy.net/artwork/yayoi-kusama-stars-11
python -m artsy_tiled_image_downloader --output-dir ~/Downloads --concurrency 24 --timeout 30 [url]
python -m artsy_tiled_image_downloader --skip-direct [url]

Sample output:

URL: https://www.artsy.net/artwork/yayoi-kusama-stars-11
Fetching metadata...
Images: 1
Image 1/1: 2547x3543, 14x10 (140 tiles)
Downloading...
Saved: /Users/you/Downloads/output_yayoi-kusama-stars-11_0.jpg (direct)
Elapsed: 1.0s

Testing

pip install -e ".[dev]"
pytest
ruff check .

The test suite covers URL parsing, metadata parsing, filename safety, tile crop math, direct-image fallback, in-memory tile stitching, and a local HTTP end-to-end CLI run.

PyPI Release

Package name: artsy-tiled-image-downloader

Build and validate the release artifacts:

rm -rf build dist *.egg-info
python -m pip install -e ".[dev]"
python -m build
python -m twine check dist/*

Upload with a PyPI project or account token:

TWINE_USERNAME=__token__ TWINE_PASSWORD=pypi-... python -m twine upload dist/*

This repository also includes .github/workflows/publish.yml for PyPI Trusted Publishing. Configure the trusted publisher on PyPI for this repository and publish a GitHub release to upload dist/* without storing a long-lived PyPI token in GitHub secrets.

Temporary Data

The downloader no longer stores tiles in a process-wide temporary directory. Tiles are downloaded into memory as compressed bytes and decoded one at a time while stitching. The only temporary files are short-lived files created beside the final output for atomic replacement.

If a future very-large-image mode needs disk-backed tile caching, prefer tempfile.TemporaryDirectory() as a scoped context manager rather than a fixed folder under ~/Downloads.

Star History

Star History Chart

Disclaimer

This project is independent and is not affiliated with Artsy.

Use it only for personal learning, interoperability research, and lawful technical analysis. You are responsible for respecting Artsy's terms of use, robots policies, copyright restrictions, and any applicable laws. Do not use this project for commercial redistribution, copyright infringement, abusive automation, or any unauthorized access.

The software is provided as-is, without warranty. The maintainers are not responsible for misuse or for any direct or indirect loss caused by using this tool.

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

artsy_tiled_image_downloader-2.0.0.tar.gz (20.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

artsy_tiled_image_downloader-2.0.0-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

Details for the file artsy_tiled_image_downloader-2.0.0.tar.gz.

File metadata

File hashes

Hashes for artsy_tiled_image_downloader-2.0.0.tar.gz
Algorithm Hash digest
SHA256 c2cc9b998be28fb744df56af3e4f4d5d452bce7cf6d3b7d5079db83961829966
MD5 1dc65478fcdf5163dbd5f26051f0c81e
BLAKE2b-256 cbc1f6ab492a675482206af5cdb2f289013f02d9c691233b6dd96d9fa854a845

See more details on using hashes here.

File details

Details for the file artsy_tiled_image_downloader-2.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for artsy_tiled_image_downloader-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6122f5bc20541c391bc0a46af9f0970551a6200e0360fc7d9d4ba333748c0a68
MD5 078d79a5b4334f0722edeeca222bb8d6
BLAKE2b-256 dd7775626a2a968a30dbc284d9d3548bdac3b8ea46a4fd492ef46306335bc00d

See more details on using hashes here.

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