Skip to main content

Unofficial terminal music player for TIDAL — search, browse, queue, and stream lossless audio from your terminal. Not affiliated with TIDAL.

Project description

Ticli

A terminal music player for TIDAL. Search, browse, queue, and play music — all from your terminal.

Ticli connects directly to TIDAL's API using your premium account. No desktop app needed. Just authenticate, search, and play.

Works on macOS and Linux.

╭──────────────────────── Ticli ────────────────────────╮
│                                                        │
│  ▶ ♥ Arlo Parks - Sophie                               │
│     Super Sad Generation                               │
│     1:47 ━━━━━━━━●━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3:28    │
│     Queue: 3/12  LOSSLESS                              │
│     Next: Cola • Arlo Parks                            │
│                                                        │
│  [space] play/pause  [n/→] next  [←] prev             │
│  [s] search  [q] queue  [p] playlists                  │
│  [l] like  [r] radio  [t] mini  [m] more               │
│                                                        │
╰────────────────────────────────────────────────────────╯

Features

  • Search — Find tracks, albums, artists, and playlists
  • Browse — Navigate album and playlist tracklists
  • Queue — Manage your playback queue, reorder, remove tracks
  • Playlists — Browse and play your saved playlists
  • Likes — Toggle favorites on any track
  • Radio — Generate a station from any track
  • Mini mode — Condensed single-line display
  • Session restore — Picks up where you left off
  • Lossless & Hi-Res — Stream up to 24-bit/192kHz FLAC
  • Secure auth — OAuth tokens stored in your OS keychain

Install

Requires Python 3.10+ and ffmpeg.

# macOS
brew install ffmpeg python3
pip install tidal-cli

# Ubuntu / Debian
sudo apt install ffmpeg python3-pip
pip install tidal-cli

For secure token storage in your OS keychain (recommended):

pip install "tidal-cli[keyring]"

Usage

ticli

On first run you'll get a URL to authorize with your TIDAL account. After that, your session is cached and you go straight to the player.

Quality

ticli --quality HIRES      # 24-bit hi-res FLAC
ticli --quality LOSSLESS   # 16-bit FLAC
ticli --quality HIGH       # lossless FLAC (default)
ticli --quality LOW        # 320kbps

Keybindings

Player

Key Action
space Play / pause
n Next track
Previous track
s Search
q Queue
p Playlists
l Like / unlike track
r Start radio from track
t Toggle mini player
m Show more controls
esc Quit

Search

Key Action
Navigate results
enter Play track / open album or artist
backspace Delete character
esc Back

Queue

Key Action
Navigate
enter Jump to track
x Remove track
esc Back

How it works

Ticli uses tidalapi to authenticate and fetch audio stream URLs. Audio is played through ffplay. The TUI is built with Rich.

┌─────────┐     OAuth      ┌───────────┐    stream URL    ┌───────────┐
│  Ticli  │ ──────────────► │  TIDAL    │ ──────────────►  │  ffplay   │
│  (TUI)  │ ◄────────────── │  API      │                  │           │
└─────────┘    metadata     └───────────┘                  └───────────┘

Auth & credentials

OAuth tokens are stored in your OS keychain (macOS Keychain or GNOME Keyring). Falls back to ~/.config/ticli/session.json with 0600 permissions if keyring is unavailable.

Requirements

  • macOS or Linux
  • Python 3.10+
  • TIDAL Premium subscription
  • ffmpeg

Support

If you enjoy Ticli, consider buying me a coffee.

Disclaimer

This project is not affiliated with, endorsed by, or associated with TIDAL in any way. It is an independent, open-source tool that uses TIDAL's public API through your own premium account.

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

tidal_cli-1.0.1.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

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

tidal_cli-1.0.1-py3-none-any.whl (17.9 kB view details)

Uploaded Python 3

File details

Details for the file tidal_cli-1.0.1.tar.gz.

File metadata

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

File hashes

Hashes for tidal_cli-1.0.1.tar.gz
Algorithm Hash digest
SHA256 cd59ee0e21a7eb3fb6ac3f9d87dd7555112f4a965ad9a47109841872e6a01202
MD5 5c2a999e0a1177a3b73d0b97e4de3c12
BLAKE2b-256 ae7f686af437b7c7a0c543e946a7f1b9e8386f0825a409f39f64ac1efb5dad6d

See more details on using hashes here.

Provenance

The following attestation bundles were made for tidal_cli-1.0.1.tar.gz:

Publisher: publish.yml on odonald/ticli

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

File details

Details for the file tidal_cli-1.0.1-py3-none-any.whl.

File metadata

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

File hashes

Hashes for tidal_cli-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1b65b7b30897c84eca1bec05763af659e7e77596f55318910c935d81ede5deb2
MD5 c20dc88b2da33aa3e6c529297b2eb97b
BLAKE2b-256 9a02b4e3fc1a79e7d29353d433ae0feafd898f6f7b34b4b4c827d5be89356e31

See more details on using hashes here.

Provenance

The following attestation bundles were made for tidal_cli-1.0.1-py3-none-any.whl:

Publisher: publish.yml on odonald/ticli

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