Music downloader and tagger for Tidal. For educational use only, and may break in the future.
RedSea is a music downloader and tagger for the Tidal music streaming service. It is designed partially as a Tidal API example and partially as a proof-of-concept of the Tidal
lossless download hack. This repository also hosts a wildly incomplete Python Tidal API implementation - it is contained in tidal_api.py
and only requires requests
to be
installed. Note that you will you have to implement the Tidal lossless download hack yourself -- you can find this in mediadownloader.py
.
- Python 3.5
- requests
- mutagen
- Run
pip install -r requirements.txt
to install dependencies - Rename
rs_config.txt
tors_config.json
- Run
redsea auth
(orpython redsea.py auth
) to authenticate
Run redsea -h
for an explanation of CLI args.
RedSea will take one or more media arguments when called - strings in the format :#[index]. Media IDs are a more concise way to represent a collection or track on Tidal.
type
is a single-character media type: it can be album, playlist, or track.
id
is a Tidal media identifier, which can be obtained from the URL of the media type.
a:34919559
- Download the album with ID34919559
.t:26230189 a:44632346
- Download track26230189
, then download album44632346
.p:272acf40-a98f-4c7d-a3ff-c55e0e4aa921
- Download playlist272acf40-a98f-4c7d-a3ff-c55e0e4aa921
.
-
Sometimes, tracks will be tagged with a useless version (for instance, "(album version)"), or have the same version twice "(album version)(album version)". This is because tracks in Tidal are not consistent in terms of metadata - sometimes a version may be included in the track title, included in the version field, or both.
-
Tracks may be tagged with an inaccurate release year; this may be because of Tidal only having the "rerelease" or "remastered" version but showing it as the original.
- Filename sanitisation is overzealous
- Playlists are treated like albums
session
: Automatically generated from authentication
country_code
: Automatically generated from authentication
auth_token
: Special Tidal authentication token
quality
: either LOW (96kbps M4A), HIGH (320kbps M4A), LOSSLESS (FLAC) - both lossy formats are VBR
path
: Base download directory
Format variables are {title}
, {artist}
, {album}
, {tracknumber}
.
album_format
: Base album directory - tracks and cover art are stored here. May have slashes in it, for instance {artist}/{album}.
track_format
: How tracks are formatted. The relevant extension is appended to the end.
keep_cover_jpg
: Whether to keep the cover.jpg file in the album directory
tries
: How many times to attempt to get a valid stream URL.
embed_album_art
: Whether to embed album art or not into the file.