8000 GitHub - cstaelen/tidarr: Selfhosted Tidal DL with ReactJS UI
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

cstaelen/tidarr

Repository files navigation

Self-hosted Tidal Media Downloader Docker Image

Tidarr is a Docker image that provides a web interface to download up to 24-bit 192.0 kHz media from Tidal (tracks, albums, playlists, music videos). Format on the fly with Beets, automatically update your Plex library, and push notifications with Gotify.

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

Table of Contents

Disclaimer

  • Need an official (shared ?) Tidal account
  • For educational purposes and personal use only
  • Do not forget to support your local artists 🙏❤️

Features

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

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
            - /any/folder/to/download/videos:/home/app/standalone/download/videos
        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 \
		-v /any/folder/to/download/videos:/home/app/standalone/download/videos \
    cstaelen/tidarr:latest

Tidal authentication

(if no tiddl.json file provided) :

Authorize your device using the UI token dialog

or

docker compose exec -it tidarr tiddl auth
docker compose exec tidarr cp -rf /root/tiddl.json /home/app/standalone/shared/tiddl.json

or

docker exec -it tidarr tiddl auth
docker exec tidarr cp -rf /root/tiddl.json /home/app/standalone/shared/tiddl.json

Options

Tidal search (optional)

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

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

docker exec tiddl config --print

How to get search token :

Download settings (optional)

-> You can set download options in /your/docker/path/to/tidarr/config/tiddl.json.

See default :

{
    "template": {
        "track": "{artist} - {title}",
        "video": "{artist} - {title}",
        "album": "{album_artist}/{album}/{number:02d}. {title}",
        "playlist": "{playlist}/{playlist_number:02d}. {artist} - {title}"
    },
    "download": {
      // Default high (16bit 44.1khz), max available: master (24bit 192khz max)
        // https://github.com/oskvr37/tiddl?tab=readme-ov-file#download-quality
        "quality": "high",
        // Should not be changed (otherwise downloads will fail) /!\
        "path": "/home/app/standalone/download/incomplete",
        "threads": 4,
        // Include or not singles while downloading "all releases"
        "singles_filter": "none" // "none", "only", "include"
    },
    // Will be automatically filled by in-app authentication
    "auth": {
        "token": "",
        "refresh_token": "",
        "expires": 0,
        "user_id": "",
        "country_code": ""
    },
    "omit_cache": false
}

For template format update, please see Tiddl formatting documentation

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>

Apprise API (optional)

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

environment:
  - ...
  - ENABLE_APPRISE_API=true
  - APPRISE_API_ENDPOINT=http://{apprise_api_url}:{port}/notify/{config_id}
  - APPRISE_API_TAG=tidarr # optional

If no tag is defined, default tag value will be "all".

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 or bug 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

Resources

0