Skip to main content

Async Python client for Calm.com internal API

Project description

Calm Client (Python)

CI PyPI Python License: MIT

Async Python client and CLI for the internal Calm.com API. Browse the catalog, search for content, and stream audio — all from your terminal.

Features

  • CLI + TUI — Browse, search, and play Calm content from the terminal
  • Async API — Fully async Python client built on httpx
  • Type Safe — Comprehensive Pydantic models with py.typed support
  • Audio Playback — Stream meditation and sleep audio via mpv
  • Auth — Email/password login with automatic token refresh

Installation

CLI (recommended)

Use pipx to install the CLI in an isolated environment with zero hassle — no virtualenv management needed:

# Core CLI (login, search, whoami)
pipx install calm-client

# Full CLI with audio playback (play, browse)
pipx install 'calm-client[player]'

Library

If you want to use calm-client as a Python library in your own project:

pip install calm-client

Requirements

  • Python 3.12+ - for modern typing, async, and f-strings

  • mpv — Required for calm play and calm browse audio features

    # Ubuntu/Debian
    sudo apt install mpv
    
    # macOS
    brew install mpv
    
    # Arch
    sudo pacman -S mpv
    

Quick Start (CLI)

# 1. Login
calm login

# 2. Browse interactively
calm browse

# 3. Or search and play directly
calm search "Sleep Stories"
calm play <program_id>

Quick Start (Python)

import asyncio
from calm_client import CalmClient


async def main():
    async with CalmClient() as client:
        # Authenticate
        await client.login("email@example.com", "password")

        # Get the Sleep feed
        feed = await client.get_feed("sleep")
        print(f"Found {len(feed.items)} items")

        # Search
        results = await client.search("Rain")
        print(f"Found {len(results.items)} results")


if __name__ == "__main__":
    asyncio.run(main())

Documentation

Development

See CONTRIBUTING.md for the full development setup.

# Quick start
uv sync --all-extras --all-groups
uv run hatch test
uv run hatch fmt

License

MIT

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

calm_client-0.1.0.tar.gz (109.7 kB view details)

Uploaded Source

Built Distribution

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

calm_client-0.1.0-py3-none-any.whl (31.8 kB view details)

Uploaded Python 3

File details

Details for the file calm_client-0.1.0.tar.gz.

File metadata

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

File hashes

Hashes for calm_client-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b9490ea6aad4f206fc2169f6ea9d23203d4625e06788b43c05b3c13578d7b90e
MD5 0087c54ec5448b4f31b834053dc56047
BLAKE2b-256 95d77f4968a38fc8522d07443c175e0ccbd834ed513e86736599b1aa78a75bd2

See more details on using hashes here.

Provenance

The following attestation bundles were made for calm_client-0.1.0.tar.gz:

Publisher: publish.yml on dcode/python-calm-client

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

File details

Details for the file calm_client-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: calm_client-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 31.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for calm_client-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 984497de8e62861646acd1ebab9dc018ef722bd5fc83722cd1cf8b59f637534b
MD5 30b9e3060c3b0e457eacb9a2ac09c85c
BLAKE2b-256 332702bf10a4d203c396fd8a92048627484187326c7d5897000528e7c665801b

See more details on using hashes here.

Provenance

The following attestation bundles were made for calm_client-0.1.0-py3-none-any.whl:

Publisher: publish.yml on dcode/python-calm-client

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