/RedSea

Music downloader for Tidal, revived

Primary LanguagePython

RedSea

Easy to use music downloader and tagger for Tidal. For educational use only, and may break in the future. You still need a Tidal account, but you can just use the free trial month.

Introduction

RedSea is a music downloader and tagger for the Tidal music streaming service. It is designed partially as a Tidal API example. This repository also hosts a wildly incomplete Python Tidal API implementation - it is contained in config/tidal_api.py and only requires requests to be installed.

Requirements

  • Python 3.6
  • requests
  • mutagen
  • pycrypto
  • opencv

Setting up (with pip)

  1. Run pip install -r requirements.txt to install dependencies
  2. Run python redsea.py -h to view the help file
  3. Run python redsea.py urls to download lossless files from urls

Setting up (with Pipenv)

  1. Run pipenv install --three to install dependencies in a virtual env using Pipenv
  2. Run pipenv run python redsea.py -h to view the help file
  3. Run pipenv run python redsea.py urls to download lossless files from urls

How to use

usage: redsea.py [-h] [-id IDENTIFIANT -pwd PASSWORD] [-p PRESET] [-o DIR] [-a ACCOUNT] [-s] urls [urls ...]

A music downloader for Tidal.

positional arguments:
urls                    The URLs to download. You may need to wrap the URLs in
                        double quotes if you have issues downloading.

optional arguments:
-h, --help              show this help message and exit
-p PRESET, --preset PRESET
                        Select a download preset. Defaults to Lossless only.
                        See /config/settings.py for presets
                        
-id IDENTIFIANT, --identifiant IDENTIFIANT
                        Pass the Tidal identifiant of your account. Must be use with -pwd.

-pwd PASSWORD, --password PASSWORD
                        Pass the Tidal password of your account. Must be use with -id.

-s, --skip              Pass this flag to skip track and continue when a track
                        does not meet the requested quality                          
-o DIR, --outidr DIR 
                        Set DIR as the outupt directory. By default it's the
                        same as redsea.py

Issues

  • 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.

  • Downloading an artist URL actually downloads the content of "best tracks".

Config reference

Stock Presets

default: FLAC 44.1k / 16bit only

best_available: Download the highest available quality (MQA > FLAC > 320 > 96)

mqa_flac: Accept both MQA 24bit and FLAC 16bit

MQA: Only allow FLAC 44.1k / 24bit (includes 'folded' 96k content)

FLAC: FLAC 44.1k / 16bit only

320: AAC ~320 VBR only

96: AAC ~96 VBR only

Preset Configuration Variables

keep_cover_jpg: Whether to keep the cover.jpg file in the album directory

embed_album_art: Whether to embed album art or not into the file.

save_album_json: save the album metadata as a json file

tries: How many times to attempt to get a valid stream URL.

path: Base download directory

Format variables are {title}, {artist}, {album}, {tracknumber}.

track_format: How tracks are formatted. The relevant extension is appended to the end.

album_format: Base album directory - tracks and cover art are stored here. May have slashes in it, for instance {artist}/{album}.