Skip to content

cstaelen/tidarr

Repository files navigation

Selfhosted Tidal media downloader docker image

Tidarr is a docker image which provides a web interface to download 24 bit 192.0 kHz medias from Tidal (tracks/albums/playlists). Format on the fly with Beets, Automatically update your Plex library, Push notification with Gotify.

GitHub Stars GitHub Release GitHub Release Playwright CI Docker build Docker Pulls Buy Me A Coffee

Table of Contents

Features

  • Search by keywords
  • Search by url : artist url, album url, playlist url
  • Downloadable media : tracks, albums, playlists
  • Server side download list processing
  • UI build with React JS + Express JS API
  • Self-hostable using Docker with Linuxserver.io base image (uncompressed size: ~ 190 Mo)
  • Download from Tidal with Tiddl (python)
  • Tag import using Beets.io (python)
  • Push notifications using Gotify
  • Plex library update
  • Max quality : 24 bit 192.0 kHz (if available)
  • Admin password available

Companion

Getting Started

Example docker-compose.yml :

services:
    tidarr:
        image: cstaelen/tidarr
        container_name: 'tidarr'
        ports:
            - 8484:8484
        volumes:
            - /any/folder/to/tidarr/config:/home/app/standalone/shared
            - /any/folder/to/download/albums:/home/app/standalone/download/albums
            - /any/folder/to/download/tracks:/home/app/standalone/download/tracks
            - /any/folder/to/download/playlists:/home/app/standalone/download/playlists
        restart: 'unless-stopped'

or

docker run  \
		--rm \
		--name tidarr \
		-p 8484:8484 \
		-v /any/folder/to/tidarr/config/:/home/app/standalone/shared \
		-v /any/folder/to/download/albums:/home/app/standalone/download/albums \
		-v /any/folder/to/download/tracks:/home/app/standalone/download/tracks \
		-v /any/folder/to/download/playlists:/home/app/standalone/download/playlists \
    cstaelen/tidarr:latest

Tidal authentication

(if no .tiddl_config.json token file provided) :

docker compose exec -it tidarr tiddl

or

docker exec -it tidarr tiddl

Options

Tidal search (optional)

 environment:
  - ...
  - REACT_APP_TIDAL_COUNTRY_CODE=<country-code>
  - REACT_APP_TIDAL_SEARCH_TOKEN=<search_token>
  - REACT_APP_TIDARR_DEFAULT_QUALITY_FILTER=<"lossless" | "high" | "all">

N.B. <country-code> should match your Tidal account country code. You can check it using :

docker exec tidarr cat /root/.tiddl_config.json

How to get search token :

Download settings (optional)

 environment:
  - ...
  - TIDDL_FORMAT=<format> # default: {artist}/{album}/{title}
  - TIDDL_PLAYLIST_FORMAT=<format> # default: {playlist}/{playlist_number}-{artist}-{title}
  - TIDDL_QUALITY=<low|normal|high|master> # default: high (16bit 44.1khz), max available: master (24bit 192khz max)
  - TIDDL_FORCE_EXT=<flac|mp3|m4a> # default: unset, depending the track downloaded.

PUID PGID (optional)

environment:
  - ...
  - PUID=1234
  - PGID=123

Password protection (optional)

If not set, no password is required to access the app.

 environment:
  - ...
  - ADMIN_PASSWORD=<string> # if not set, no password are required to access

Services

Beets (optional)

Add to your docker-compose file in environment: section :

environment:
  - ...
  - ENABLE_BEETS=true

Beets options in </mounted/config/folder/>beets-config.yml:

Plex update (optional)

Add to your docker-compose file in environment: section :

environment:
  - ...
  - ENABLE_PLEX_UPDATE=true
  - PLEX_URL=<url|ip:port>
  - PLEX_LIBRARY=<music_library_id>
  - PLEX_TOKEN=<x-plex-token>
  - PLEX_PATH=/path/to/scan # optional - if not set, update whole library

Doc : https://www.plexopedia.com/plex-media-server/api/library/scan-partial/

Gotify (optional)

Add to your docker-compose file in environment: section :

environment:
  - ...
  - ENABLE_GOTIFY=true
  - GOTIFY_URL=<url|ip:port>
  - GOTIFY_TOKEN=<gotify_app_token>

Doc: https://github.com/oskvr37/tiddl

User requests

As I'am the only maintainer for now, user requested features can takes time.

  1. Feel free to create an issue with enhancement tag.
  2. Be my guest, fork and dev !

Donate

If you would like to support this project, please do not hesitate to make a donation. It contributes a lot to motivation, gives me the energy to continue maintaining the project and adding the features requested by the users :)

Buy Me A Coffee

Develop

Want more features and/or contribute ? Be my guest, fork and dev <3

Check docker environment variables in compose.yml before running :

make dev

Run tests :

make testing-build
make testing-run

Open http://localhost:3000 with your browser to see the result.

Purposes

  • Renovate old torrent dl media library with full FLAC
  • Just for coding
  • Just for fun

Disclaimer

  • Need an offical Tidal account
  • Private use only
  • Do not forget to support your local artists 🙏❤️

Resources