1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
# 🔰 TIDAL Downloader Next Generation! (tidal-dl-ng)
[](https://img.shields.io/github/v/release/exislow/tidal-dl-ng)
[](https://github.com/exislow/tidal-dl-ng/actions/workflows/on-release-master.yml)
[](https://img.shields.io/github/commit-activity/m/exislow/tidal-dl-ng)
[](https://img.shields.io/github/license/exislow/tidal-dl-ng)
This tool allows to download songs and videos from TIDAL. Multithreaded and multi-chunked downloads are supported.
⚠️ **Windows** Defender / **Anti Virus** software / web browser alerts, while you try to download the app binary: This is a **false positive**. Please read [this issue](https://github.com/exislow/tidal-dl-ng/issues/231), [PyInstaller (used by this project) statement ](https://github.com/pyinstaller/pyinstaller/blob/develop/.github/ISSUE_TEMPLATE/antivirus.md) and [the alternative installation solution](https://github.com/exislow/tidal-dl-ng/?tab=readme-ov-file#-installation--upgrade). ⚠️
**A paid plan is required!** Audio quality varies up to HiRes Lossless / TIDAL MAX 24-bit, 192 kHz depending on the song available. You can use the command line or GUI version of this tool.

```bash
$ tidal-dl-ng --help
Usage: tidal-dl-ng [OPTIONS] COMMAND [ARGS]...
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --version -v │
│ --help -h Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────╮
│ cfg Print or set an option. If no arguments are given, all options will │
│ be listed. If only one argument is given, the value will be printed │
│ for this option. To set a value for an option simply pass the value │
│ as the second argument │
│ dl │
│ gui │
│ login │
╰──────────────────────────────────────────────────────────────────────────────╯
```
If you like this projects and want to support it, you can buy me a coffee :-)
<a href="https://www.buymeacoffee.com/exislow" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/arial-orange.png" alt="Buy Me A Coffee" style="height: 51px !important;width: 217px !important;" ></a>
<a href="https://ko-fi.com/exislow" target="_blank" rel="noopener noreferrer"><img src="https://help.ko-fi.com/hc/article_attachments/11833788361117" alt="61e11d430afb112ea33c3aa5_Button-1-p-500"></a>
## 💻 Installation / Upgrade
**Requirements**: Python >= 3.12 (other versions might work but are not tested!)
```bash
pip install --upgrade tidal-dl-ng
# AND if you like to have the GUI as well
pip install --upgrade tidal-dl-ng[gui]
```
You can use the command line (CLI) version to download media:
```bash
tidal-dl-ng dl https://tidal.com/browse/track/46755209
# OR
tdn dl https://tidal.com/browse/track/46755209
```
But also the GUI:
```bash
tidal-dl-ng-gui
# OR
tdng
# OR
tidal-dl-ng gui
```
If you like to have the GUI version only, have a look at the
[release page](https://github.com/exislow/tidal-dl-ng/releases) and download the correct version for your platform.
## 🧁 Features
- Download Tracks, Videos, Albums, Playlists etc.
- Multithreaded and multi-chunked downloads
- Metadata for songs
- Adjustable audio and video download quality.
- FLAC extraction from MP4 containers
- Lyrics and album art / cover download
- Creates playlist files
- Can symlink tracks instead of having several copies, if added to different playlist
## ▶️ Getting started with development
### 🚰 Install dependencies
Clone this repository and install the dependencies:
```bash
poetry install --all-extras --with dev,docs
```
The main entry points are:
```bash
tidal_ng_dl/cli.py
tidal_ng_dl/gui.py
```
### 📺 GUI Builder
The GUI is build with `PySide6` using the [Qt Designer](https://doc.qt.io/qt-6/qtdesigner-manual.html):
```bash
PYSIDE_DESIGNER_PLUGINS=tidal_dl_ng/ui pyside6-designer
```
After all changes are saved you need to translate the Qt Designer `*.ui` file into Python code:
```
pyside6-uic tidal_dl_ng/ui/main.ui -o tidal_dl_ng/ui/main.py
```
### 🏗 Build the project
To build the project use this command:
```bash
make install
```
The CI/CD pipeline will be triggered when you open a pull request, merge to main, or when you create a new release.
To finalize the set-up for publishing to PyPi or Artifactory, see [here](https://fpgmaas.github.io/cookiecutter-poetry/features/publishing/#set-up-for-pypi).
For activating the automatic documentation with MkDocs, see [here](https://fpgmaas.github.io/cookiecutter-poetry/features/mkdocs/#enabling-the-documentation-on-github).
To enable the code coverage reports, see [here](https://fpgmaas.github.io/cookiecutter-poetry/features/codecov/).
## ‼️ Disclaimer
- For educational purposes only. I am not liable and responsible for any damage that happens.
- You should not use this method to distribute or pirate music.
- It may be illegal to use this app in your country.
## 🫂 Contributors
Thanks to all, who have contributed to this project!
This project is based on:
- https://fpgmaas.github.io/cookiecutter-poetry/
<a href="https://github.com/exislow/tidal-dl-ng/graphs/contributors"><img src="https://contributors-img.web.app/image?repo=exislow/tidal-dl-ng" /></a>
|