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.
- Need an official (shared ?) Tidal account
- For educational purposes and personal use only
- Do not forget to support your local artists 🙏❤️
- 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
- Song recognition : Shazarr project (Android)
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
(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
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 :
-> 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
environment:
- ...
- PUID=1234
- PGID=123
If not set, no password is required to access the app.
environment:
- ...
- ADMIN_PASSWORD=<string> # if not set, no password are required to access
Add to your docker-compose file in environment:
section :
environment:
- ...
- ENABLE_BEETS=true
Beets options in </mounted/config/folder/>beets-config.yml
:
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
- PlexToken : your Plex token : https://www.plexopedia.com/plex-media-server/general/plex-token/
- Library ID : In Plex server web ui, go to your music library tab and check
source=
in the URL http://192.168.1.20:32400/web/index.html#!/media/abcdef12345678/com.plexapp.plugins.library?**source=3** - Folder (optional) : path to folder to scan url (if not set, all music library will be scanned)
Doc : https://www.plexopedia.com/plex-media-server/api/library/scan-partial/
Add to your docker-compose file in environment:
section :
environment:
- ...
- ENABLE_GOTIFY=true
- GOTIFY_URL=<url|ip:port>
- GOTIFY_TOKEN=<gotify_app_token>
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".
As I'am the only maintainer for now, user requested features can takes time.
- Feel free to create an issue with
enhancement
orbug
tag. - Be my guest, fork and dev !
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 :)
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.
- Renovate old torrent dl media library with full FLAC
- Just for coding
- Just for fun