Skip to main content

An incremental downloader for Copernicus CDS / ADS datasets

Project description

Copernicus Downloader

A flexible incremental downloader for Copernicus CDS / ADS datasets, designed for reproducible and automated pipelines.
Supports yearly, monthly, daily granularities with incremental catch-up, local or S3 storage, and .env + YAML configuration.

Repository: celine-eu/copernicus-downloader
License: Apache-2.0


Features

  • Incremental yearly / monthly / daily downloads
  • Automatic skipping of already-requested files
  • min_date clamp to avoid overlap between monthly backfill and daily updates
  • Local FS or S3 (Minio) storage abstraction
  • Configurable with .env + YAML
  • Logging with LOG_LEVEL
  • uv for fast Python environment management

Setup

1. Clone the repo

git clone https://github.com/celine-eu/copernicus-downloader.git
cd copernicus-downloader

2. Install dependencies (via uv)

uv sync

This will create and manage a virtual environment automatically.

Environment variables

Create a .env file in the repo root:

# Copernicus CDS API credentials (find them in your CDS profile)
CDS_API_KEY="abcdefg-your-key"
CDSAPI_URL="https://cds.climate.copernicus.eu/api"

# Optional: Atmosphere ADS API credentials
ADS_API_KEY="hijklmn-your-key"
ADSAPI_URL="https://ads.atmosphere.copernicus.eu/api"

# Optional: storage backend
AWS_ACCESS_KEY_ID="minio"
AWS_SECRET_ACCESS_KEY="minio123"
AWS_DEFAULT_REGION="us-east-1"
# AWS_ENDPOINT_URL=http://localhost:19000
# AWS_BUCKET=local-data

# Logging
LOG_LEVEL=INFO

# Optional: temporary dir for downloads
CDS_TMPDIR=/var/tmp/cds
# Optional: data storage path
DATA_DIR=./data

Configuration

By default, the downloader loads cds_config.yaml (or path from CDS_CONFIG). Supports ${VAR} placeholders, expanded from .env.

Example config

cat > cds_config.yaml <<'YAML'
years: [2020, 2021, 2022, 2023, 2024]

storage:
  type: fs
  base_dir: ./data

# Example for Minio
# storage:
#   type: s3
#   bucket: my-bucket
#   endpoint_url: http://localhost:9000

datasets:
  era5:
    name: reanalysis-era5-single-levels
    url: ${CDSAPI_URL}
    key: ${CDS_API_KEY}
    granularity: daily
    min_date: 2025-08-01   # daily starts after monthly backfill
    request:
      product_type: ["reanalysis"]
      variable: ["2m_temperature", "total_precipitation"]
      time: ["00:00","06:00","12:00","18:00"]
      data_format: grib
      download_format: unarchived
      area: [45.96, 11.11, 45.84, 11.36]

Running

Download all datasets

uv run python -m copernicus_downloader.main

Download only one dataset (e.g., era5)

uv run python -m copernicus_downloader.main era5

Contributing

Issues and PRs are welcome! Please open an issue or submit a pull request.

License

This project is licensed under the Apache-2.0 License.

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

copernicus_downloader-1.2.1.tar.gz (15.5 kB view details)

Uploaded Source

Built Distribution

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

copernicus_downloader-1.2.1-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

File details

Details for the file copernicus_downloader-1.2.1.tar.gz.

File metadata

  • Download URL: copernicus_downloader-1.2.1.tar.gz
  • Upload date:
  • Size: 15.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for copernicus_downloader-1.2.1.tar.gz
Algorithm Hash digest
SHA256 881339869251bdb415dcd23ee83a0cc400c9e2da88b4183f4d52f5b4a15824e3
MD5 083035dcad39e5e9fec1b36a9bce1ca3
BLAKE2b-256 28e06c0c135022fe0de3cbdd43d7c9b8cf675dd254c055a0749a75c28145f024

See more details on using hashes here.

Provenance

The following attestation bundles were made for copernicus_downloader-1.2.1.tar.gz:

Publisher: build.yml on celine-eu/copernicus-downloader

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file copernicus_downloader-1.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for copernicus_downloader-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d64be2a44a04a0d13cd70826a173d8692a0bc86a3f6442b181efaea5e66ea904
MD5 245e10cf1ca7958929370906487a8c00
BLAKE2b-256 ed3266440f6bfb711417c9f383ec088a98d4114a01d3c7a27f40cdb532a87ae5

See more details on using hashes here.

Provenance

The following attestation bundles were made for copernicus_downloader-1.2.1-py3-none-any.whl:

Publisher: build.yml on celine-eu/copernicus-downloader

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