Skip to main content

CLI-based audio downloader for Tidal, YT, and Apple Music.

Project description

NovaReap

Cloud to FLAC, made simple.

NovaReap is a terminal tool that downloads music from Tidal, resolves Spotify links, scrapes Apple Music, and falls back to YouTube audio — all while tagging every file with full metadata and cover art automatically.

Built because the existing tools were either too complex, poorly maintained, or just sketchy. If you've paid for a streaming subscription, you should have a clean way to keep what you've already paid for.

This app is highly work in progress and developed by a single 16yr old, have mercy with the feedback.. qwq


What it does

  • Direct hi-res downloads from Tidal — tracks, albums, playlists
  • Spotify URL resolution with automatic YouTube fallback
  • Apple Music link scraping
  • Automatic metadata and cover art embedding (title, artist, album, track number, year, genre, cover)
  • Accurate audio info tags — bit depth and sample rate are written correctly even when Tidal's API omits them
  • Concurrent downloads with a live Rich progress UI
  • Skips files you already have

Requirements

  • Python 3.10 or newer
  • FFmpeg on your PATH (used for audio conversion)

Python packages are installed automatically by the setup wizard.


Installation

pip

pip install novareap
novareap setup

From source

1. Install system dependencies

# Windows
winget install Python.Python.3.13
winget install Gyan.FFmpeg

Restart your terminal after, then verify:

python --version
ffmpeg -version

2. Clone and install

git clone https://github.com/Sanedish/novareap.git
cd novareap

python -m venv .venv
.\.venv\Scripts\Activate.ps1

pip install .

3. Run setup

python wizard.py      # recommended for first-time setup
# or
novareap setup        # if installed via pip

First-time setup

Run the wizard once before doing anything else:

python wizard.py

The wizard will ask which setup mode you want:

Simple — recommended for most people. Picks the best quality automatically, skips optional Spotify config, and only asks two questions: where to save your music, and to log in to Tidal.

Advanced — full control. Choose quality tiers, enter Spotify API credentials for link resolution and smarter fallback matching, set parallel download workers, and toggle metadata embedding.

Your choice is saved — it also affects which options show up in --help.

If you try to run novareap download before completing setup, NovaReap will tell you to run the wizard first rather than crashing.


Usage

novareap download <url>

Works with Tidal tracks, albums, and playlists; Spotify tracks, albums, and playlists; and Apple Music links. Does NOT work with videos like https://tidal.com/video/1234.

novareap download https://tidal.com/browse/track/123
novareap download https://tidal.com/browse/album/123
novareap download https://open.spotify.com/track/...
novareap download https://music.apple.com/...

# Multiple URLs at once
novareap download <url1> <url2> <url3>

Commands

Command Description
download Download one or more URLs
auth Log in to Tidal and save the session
deauth Log out (removes the saved Tidal session)
setup First-time setup wizard
configure Edit your config interactively
doctor Check dependencies and config — highlights anything missing
info Show current config and dependency status
meta Manually embed metadata into an existing audio file
about Show developer info

Auth aliases — these all do the same thing as auth and deauth:

novareap login / signin / sign-in / log-in
novareap logout / signout / sign-out / log-out

Download options

These apply to novareap download:

Option Default Description
-q, --quality master Tidal quality: low, high, lossless, master
-o, --output ~/Music/NovaReap Output directory
-c, --concurrent 3 Parallel downloads (hidden in simple mode)
--no-skip off Re-download files that already exist (hidden in simple mode)
--no-metadata off Skip metadata tagging (hidden in simple mode)
--config ~/.config/novareap/config.json Path to a custom config file

Tidal quality tiers

Name Format Notes
low 96 kbps AAC Lossy — smallest files
high 320 kbps AAC Lossy — good for casual listening
lossless FLAC 16-bit / 44.1 kHz CD quality
master FLAC 24-bit / Hi-Res Up to 192 kHz — requires a Tidal HiFi Plus subscription

NovaReap walks down the quality ladder automatically — if your account can't serve the requested tier for a given track, it falls back gracefully rather than failing.

Lossless and Master quality require a PKCE login, which happens automatically when you run novareap auth.


Spotify setup (optional)

Spotify is used for metadata resolution and better YouTube fallback matching — not audio downloading.

  1. Create a free app at developer.spotify.com/dashboard
  2. Copy your Client ID and Client Secret
  3. Enter them when the wizard asks (advanced mode), or run novareap configure

In simple mode, Spotify is skipped. YouTube fallback still works without it — just with slightly less accurate search queries.


Configuration

Default config location: ~/.config/novareap/config.json

{
  "download_dir": "~/Music/NovaReap",
  "tidal_quality": "master",
  "youtube_quality": "320",
  "concurrent_downloads": 3,
  "retry_attempts": 3,
  "retry_delay": 2.0,
  "skip_existing": true,
  "embed_metadata": true,
  "filename_template": "{artist} - {title}",
  "mode": "simple"
}

Troubleshooting

novareap doctor
Symptom Fix
python not recognised Reinstall Python and enable "Add to PATH"
ffmpeg not found Install FFmpeg, add to PATH, restart terminal
YouTube fallback fails pip install --upgrade yt-dlp
Metadata not embedded pip install mutagen
Spotify URLs not resolving Add Spotify credentials via novareap configure
Tidal auth broken Run novareap deauth then novareap auth to start fresh
Stuck on lossless but getting AAC Check your Tidal subscription tier — lossless requires HiFi Plus

Legal & disclaimer

NovaReap is intended strictly for personal, offline access to music you are legally entitled to download.

Downloads go through official platform APIs and require valid login credentials. The tool does not circumvent DRM or spoof protected streams.

Do not distribute copyrighted content. You are solely responsible for complying with each platform's Terms of Service and your local laws.

Distributed under the MIT License — see LICENSE. Provided as-is, without warranty.

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

novareap-1.1.tar.gz (32.6 kB view details)

Uploaded Source

Built Distribution

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

novareap-1.1-py3-none-any.whl (30.1 kB view details)

Uploaded Python 3

File details

Details for the file novareap-1.1.tar.gz.

File metadata

  • Download URL: novareap-1.1.tar.gz
  • Upload date:
  • Size: 32.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for novareap-1.1.tar.gz
Algorithm Hash digest
SHA256 910e2e496b2dd18ee7ee3f9c7728cab7f869fbc9528e1ee4af0dc0ab2cc774b8
MD5 5ca014c88e948cdeec62aaad19e56d88
BLAKE2b-256 a1e7d2244097df31684f01082a0c33ccccf3fa0a3477c02aace8e919774e184f

See more details on using hashes here.

File details

Details for the file novareap-1.1-py3-none-any.whl.

File metadata

  • Download URL: novareap-1.1-py3-none-any.whl
  • Upload date:
  • Size: 30.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for novareap-1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e01e2fd873b01dc491502f76db166186693d084a299e94ec7780feeae1fa5eb5
MD5 dea0e77311beda834be7448bb64bc2f9
BLAKE2b-256 96bd9329a48ff1c09f2d8c83a0b495287776662da3b697558e0f2d380e962de0

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