tidal-hifi
The web version of Tidal running in electron with hifi support thanks to widevine.
Top Related Projects
Quick Overview
The Mastermindzh/tidal-hifi repository is a Node.js library that provides a high-quality audio streaming experience for the TIDAL music service. It aims to offer a seamless and reliable way to access TIDAL's lossless and high-resolution audio content through a simple and intuitive API.
Pros
- High-Quality Audio Streaming: The library supports TIDAL's lossless and high-resolution audio formats, ensuring a superior listening experience.
- Comprehensive API: The library provides a comprehensive API that covers a wide range of TIDAL's features, including search, playlist management, and more.
- Cross-Platform Compatibility: The library is written in Node.js, making it compatible with various platforms and environments.
- Active Development and Community: The project has an active development team and a growing community of contributors, ensuring ongoing improvements and support.
Cons
- Dependency on TIDAL Subscription: Users must have an active TIDAL subscription to use the library, which may be a limitation for some.
- Limited Documentation: The project's documentation could be more comprehensive, which may make it challenging for new users to get started.
- Potential Legal Concerns: The use of the TIDAL API may be subject to legal restrictions or terms of service, which users should be aware of.
- Performance Considerations: The library's performance may vary depending on the user's hardware and network conditions, which could be a concern for some use cases.
Getting Started
To get started with the Mastermindzh/tidal-hifi library, follow these steps:
- Install the library using npm:
npm install tidal-hifi
- Import the library and create a new TIDAL client:
const TidalClient = require('tidal-hifi');
const client = new TidalClient({
username: 'your-tidal-username',
password: 'your-tidal-password'
});
- Authenticate the client and retrieve the user's information:
await client.login();
const user = await client.getUser();
console.log(user);
- Search for and retrieve album information:
const searchResults = await client.search('Radiohead', 'album');
const album = await client.getAlbum(searchResults.albums[0].id);
console.log(album);
- Stream an album's tracks:
for (const track of album.tracks) {
const streamUrl = await client.getStreamUrl(track.id);
console.log(`Streaming track: ${track.title} (${streamUrl})`);
}
By following these steps, you can get started with the Mastermindzh/tidal-hifi library and begin exploring the TIDAL music service through a high-quality, Node.js-based interface.
Competitor Comparisons
A scriptable music downloader for Qobuz, Tidal, SoundCloud, and Deezer
Pros of Streamrip
- Streamrip supports a wider range of audio streaming services, including Spotify, Apple Music, and YouTube, in addition to Tidal.
- Streamrip provides a command-line interface, which may be preferred by some users over a graphical user interface.
- Streamrip has a larger user community and more active development compared to Tidal-HiFi.
Cons of Streamrip
- Tidal-HiFi is specifically designed for Tidal, which may provide a more streamlined and optimized experience for Tidal users.
- Streamrip may have a steeper learning curve due to its command-line interface, compared to the more user-friendly Tidal-HiFi.
- Streamrip may not offer the same level of audio quality and fidelity as Tidal-HiFi, which is focused on high-quality Tidal streaming.
Code Comparison
Tidal-HiFi (Mastermindzh/tidal-hifi):
def get_track_info(self, track_id):
"""
Get information about a track.
:param track_id: The ID of the track.
:return: A dictionary containing the track information.
"""
url = f"{self.api_url}/tracks/{track_id}"
response = self.session.get(url)
response.raise_for_status()
return response.json()
Streamrip (nathom/streamrip):
def get_track_info(self, track_id):
"""
Get information about a track.
:param track_id: The ID of the track.
:return: A dictionary containing the track information.
"""
url = f"{self.api_url}/tracks/{track_id}"
response = self.session.get(url)
response.raise_for_status()
return response.json()
As you can see, the code for the get_track_info
function is very similar between the two projects, with the main difference being the project names and the API URLs used.
🎧 Open source Spotify client that doesn't require Premium nor uses Electron! Available for both desktop & mobile!
Pros of Spotube
- Spotube is a cross-platform desktop application, allowing users to access Spotify on multiple operating systems.
- Spotube provides a clean and modern user interface, making it easy to navigate and use.
- Spotube supports various audio quality settings, including high-quality streaming.
Cons of Spotube
- Spotube is a Spotify client, which means it relies on Spotify's API and is subject to any changes or limitations imposed by Spotify.
- Spotube may not have the same level of customization and control as Tidal-Hifi, which is a standalone music player.
- Spotube's development may be more dependent on Spotify's roadmap and priorities, potentially limiting its long-term independence.
Code Comparison
Tidal-Hifi (Mastermindzh/tidal-hifi):
const tidal = new TidalApi({
sessionId: 'YOUR_SESSION_ID',
countryCode: 'YOUR_COUNTRY_CODE'
});
tidal.login()
.then(() => {
console.log('Logged in successfully!');
})
.catch((error) => {
console.error('Error logging in:', error);
});
Spotube (KRTirtho/spotube):
const spotifyApi = new SpotifyWebApi({
clientId: 'YOUR_CLIENT_ID',
clientSecret: 'YOUR_CLIENT_SECRET',
redirectUri: 'YOUR_REDIRECT_URI'
});
spotifyApi.authorizationCodeGrant('YOUR_AUTHORIZATION_CODE')
.then(function(data) {
console.log('Some useful info:', data.body);
}, function(err) {
console.log('Something went wrong!', err.message);
});
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
TIDAL Hi-Fi (Max quality)
The web version of listen.tidal.com running in electron with Hi-Fi (High & Max) support thanks to widevine.
Table of Contents
- TIDAL Hi-Fi (Max quality)
Features
- HiFi playback (High & Max settings)
- Notifications
- Custom theming
- Custom hotkeys (source)
- Better icons thanks to Papirus-icon-theme
- Settings feature to disable certain functionality. (
ctrl+=
orctrl+0
) - API for status, playback and settings (see the /docs route)
- Disabled audio & visual ads, unlocked lyrics, suggested track, track info, and unlimited skips thanks to uBlockOrigin custom filters (source)
- AlbumArt in integrations (best-effort)
- Custom integrations
- ListenBrainz integration
- Songwhip.com integration (hotkey
ctrl + w
) - Discord RPC integration (showing "now listening", "Browsing", etc)
- Flatpak version only works if both Discord and Tidal-HiFi are flatpaks
- MPRIS integration
- UI + Json config (
~/.config/tidal-hifi/
, or~/.var/app/com.mastermindzh.tidal-hifi/
for Flatpak)
Contributions
To contribute you can use the standard GitHub features (issues, prs, etc.) or join the discord server to talk with like-minded individuals.
Why did I create TIDAL Hi-Fi?
I moved from Spotify over to Tidal and found Linux support to be lacking. When I started this project there weren't any Linux apps that offered Tidal's "hifi" options nor any scripts to control it. I made this app to support the highest quality audio available on the Linux platform. It used to be "hifi" but now is "High & Max".
Why not extend existing projects?
Whilst there are a handful of projects attempting to run Tidal on Electron they are all unappealing to me because of various reasons:
- Lack of maintainers/developers. (no hotfixes, no issues being handled etc)
- Most are simple web wrappers, not my cup of tea.
- Some are DE-oriented. I want this to work on WM's too.
- None have Widevine working at the moment
Sometimes it's just easier to start over, cover my own needs and after that making it available to the public :)
Installation
Dependencies
Note that you need a notification library such as libnotify or dunst for the software to work properly.
Using releases
Various packaged versions of the software are available on the releases tab.
Snap
To install with snap
you need to download the pre-packaged snap-package from this repository, found under releases:
-
Download
wget <URI> #for instance: https://github.com/Mastermindzh/tidal-hifi/releases/download/1.0/tidal-hifi_1.0.0_amd64.snap
-
Install
snap install --dangerous <path> #for instance: tidal-hifi_1.0.0_amd64.snap
Arch Linux
Arch Linux users can use the AUR to install TIDAL Hi-Fi:
trizen tidal-hifi-git
Flatpak
To install via Flatpak run the following command:
flatpak install flathub com.mastermindzh.tidal-hifi
Nix
To install with Nix run the following command:
nix-env -iA nixpkgs.tidal-hifi
Using source
To install and work with the code on this project follow these steps:
git clone https://github.com/Mastermindzh/tidal-hifi.git
cd tidal-hifi
npm install
npm run watch
to watch for auto-reload of Typescript/SCSS changes.npm run compile
can be used to trigger it once
npm watchStart
to auto watch for any updates files and reload Tidal Hi-Finpm start
can be used to run Tidal Hi-Fi manually once
Integrations
TIDAL Hi-Fi comes with several integrations out of the box.
You can find these in the settings menu (ctrl + =
by default) under the "integrations" tab.
Integrations with other projects that are not included natively:
- i3 blocks config - My dotfiles where I use this app to fetch currently playing music (direct commit)
- neptune third party plugins & theming
Known bugs
DRM not working on Windows (error S6007)
Most Windows users run into DRM issues when trying to use TIDAL Hi-Fi. Nothing I can do about that I'm afraid... Tidal is working on removing/changing DRM so when they finish with that we can give it another shot.
Until then you'll have to use the official app unfortunately.
Special thanks to
- Castlabs For maintaining Electron with Widevine CDM installation, Verified Media Path (VMP), and persistent licenses (StorageID)
Donations
You can find my Github sponsorship page at: https://github.com/sponsors/Mastermindzh
Images
Settings window
User setups
Some of our users are kind enough to share their usage pictures. If you want to see them or possibly even add one please do so in the following issue: #3 - image thread.
Top Related Projects
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot