Lightweight Python client for the CrowdSky data API (frame discovery + download)
Project description
crowdsky-client
A lightweight Python client for the CrowdSky data API — discover and download crowd-sourced Seestar S50 stacked frames. Built as the shared contract between CrowdSky, the scientists writing CrowdSci analysis modules, and the CrowdSci runner on Zeus, so a pipeline behaves identically on a laptop and in production.
Deliberately light: it depends only on requests, astropy, and astropy-healpix — not the
stacking engine (opencv/astroalign/sep).
Install
pip install crowdsky-client
Authenticate
Mint a personal API key at https://crowdsky.univie.ac.at/account.php (log in → Account →
Create key). The secret is shown once — store it safely. Pass it directly or via the
CROWDSKY_API_KEY environment variable.
from crowdsky_client import Client
c = Client(api_key="csk_…") # or: export CROWDSKY_API_KEY=csk_…; Client()
Use
# All frames imaging a target (cone-search over NSIDE=128 RING tiles, deduped by id):
frames = c.frames_for_target(159.6998, 53.5095, radius_deg=0.75, filter_name="IRCUT")
# Frames in a single HEALPix tile with server-side filters:
frames = c.frames_by_healpix(49152, start="2026-07-01T00:00:00Z", min_exptime=120)
# Download a stacked FITS by its unique id (bytes, or straight to disk):
fits_bytes = c.download_frame(frames[0]["id"])
c.download_frame_to(frames[0]["id"], "frame.fits")
# A frame's SEP + Gaia star table:
stars = c.star_data(frames[0]["id"])
# Public sky-coverage feed (no key needed) as an astropy Table:
coverage = c.sky_coverage()
Every data request sends Authorization: Bearer <api_key>; a revoked/expired/invalid key returns
HTTP 401, surfaced as CrowdSkyError.
Develop / test
pip install -e ".[dev]"
pytest
Tests run fully offline via an injected fake session — no network, no key required.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file crowdsky_client-0.1.0.tar.gz.
File metadata
- Download URL: crowdsky_client-0.1.0.tar.gz
- Upload date:
- Size: 37.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2dc202252588a8d5584c04ce5d12929d78b29e87b48aea36653759b9cd344307
|
|
| MD5 |
d80da7a25014265e6f5689af552048c2
|
|
| BLAKE2b-256 |
06990f847a1d4cf9fe223457ae0c8a5ea159bc16f048e8a431925d93837278f9
|
File details
Details for the file crowdsky_client-0.1.0-py3-none-any.whl.
File metadata
- Download URL: crowdsky_client-0.1.0-py3-none-any.whl
- Upload date:
- Size: 6.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d794c6f0caf3e108336db6c10b5934de6e92376fdd699137f968fc7909285cb
|
|
| MD5 |
a3a340a0cf031d002b0b4c6b7f547aef
|
|
| BLAKE2b-256 |
0ff5b4f5b8f754e0cc66a74d7eddcec1a2e2c56e06b1c167db29b07f7096fe22
|