opensourceprojects.dev

A broadsheet for software that doesn't ask for your email

Streamrip: scriptable lossless downloads from Qobuz, Tidal, Deezer and SoundClou...
GitHub RepoImpressions3

Project Description

View on GitHub

Streamrip: A Scriptable Downloader for Qobuz, Tidal, Deezer, and SoundCloud

You've probably found yourself in this situation: you want to download an album or playlist from a streaming service, but the official apps don't make it easy to keep a local copy. Maybe you're building a music library, maybe you want offline access without relying on a subscription, or maybe you just want to script the whole thing. Streamrip is a command-line tool that handles this across four major streaming platforms.

What It Does

Streamrip is a scriptable stream downloader for Qobuz, Tidal, Deezer, and SoundCloud. It's written in Python and uses aiohttp for fast, concurrent downloads. You interact with it through a command called rip, which lets you download tracks, albums, playlists, discographies, and labels from any of the supported sources.

Beyond the basic download functionality, it handles a fair amount of the tedious stuff for you. There's a database that tracks downloaded track IDs so you don't end up with duplicates. It can automatically convert files to your preferred format. There's concurrency and rate limiting built in, interactive search across all sources, and integration with youtube-dl. Spotify and Apple Music playlists are supported indirectly through last.fm. The whole thing is configurable through a config file if you want to tweak behavior.

Why It's Cool

It actually respects that you might want to automate this. The word "scriptable" isn't just marketing—the entire tool is built around a CLI interface that you can chain into shell scripts, cron jobs, or whatever else you use to manage your music library. You're not clicking through a GUI; you're running commands.

The quality options are transparent and honest. Streamrip gives you a --quality flag that maps to five levels, from 128 kbps MP3 up to 24-bit/192 kHz. The README even includes a note that using quality level 4 is "generally a waste of space" because humans can't perceive the difference above 44.1 kHz—which is refreshingly candid for a tool that could easily oversell high-resolution audio.

The duplicate prevention is a small feature that saves a lot of headaches. Having a database that stores downloaded track IDs means you can re-run commands without worrying about accidentally downloading the same album twice. If you've ever managed a large music collection, you know how annoying duplicates can be.

It handles the messy reality of streaming services. Not every service offers every quality level. The README includes a table showing which sources support which quality IDs, so you know what you're getting before you start. Tidal offers MQA at quality level 3, Qobuz goes up to 192 kHz at level 4, and SoundCloud is mostly stuck at 128 kbps. This kind of clarity is helpful when you're deciding where to source your downloads.

The installation options are broad. You can install via pip, from the dev branch, through the AUR on Arch Linux, or via Homebrew. That kind of packaging coverage suggests the maintainers care about meeting users where they are.

How to Try It

First, make sure you have Python 3.10 or greater and pip installed. You'll also want ffmpeg—it's not strictly required, but some functionality will be limited without it.

Install via pip:

pip3 install streamrip --upgrade

If you run into issues, try the dev branch:

pip3 install git+https://github.com/nathom/streamrip.git@dev

Once installed, typing rip should show the main help page.

For Arch Linux users, there's an AUR package:

paru -S streamrip

Or for Homebrew:

brew install streamrip

Here's a basic example—downloading an album from Qobuz:

rip url https://www.qobuz.com/us-en/album/rumours-fleetwood-mac/0603497941032

You can download multiple albums at once:

rip url https://www.qobuz.com/us-en/album/back-in-black-ac-dc/0886444889841 https://www.qobuz.com/us-en/album/blue-train-john-coltrane/0060253764852

Or convert to MP3 during download:

rip --codec mp3 url https://open.qobuz.com/album/0060253780968

To set quality, use the --quality flag with a value from 0 to 4:

rip --quality 3 url https://tidal.com/browse/album/147569387

You can also search interactively—for example, finding playlists matching "rap" on Tidal:

rip search tidal playlist 'rap'

One important note: for Tidal and Qobuz, you need a premium subscription.

The repository is at github.com/nathom/streamrip.

Final Thoughts

Streamrip is a practical tool for anyone who wants to maintain a local music library from streaming services and prefers working from the command line. It's not trying to be a polished consumer app—it's a scriptable utility with a config file, a database, and sensible defaults. If you're comfortable with CLI tools and you've been looking for a way to automate downloads across multiple platforms, it's worth checking out. The fact that it supports four services and handles quality selection, format conversion, and duplicate prevention in one package makes it a solid choice for developers who'd rather script their music management than click through it.

Back to Projects
Project ID: 8e276d47-3df1-409a-b9b9-5fb76ed2fac5Last updated: October 4, 2026 at 02:47 AM