Skip to content

Instantly share code, notes, and snippets.

@Cajivah
Forked from nsyntych/tidal_login.py
Last active November 3, 2025 23:37
Show Gist options
  • Save Cajivah/df5bd06448a2f3bf09534b23d0928043 to your computer and use it in GitHub Desktop.
Save Cajivah/df5bd06448a2f3bf09534b23d0928043 to your computer and use it in GitHub Desktop.
Login to tidal API using PKCE and update strawberry player settings to support Hi-Res Lossless playback
#!/usr/bin/python3
import tidalapi
import json
from pathlib import Path
from configparser import ConfigParser
strawberry_conf_file_path = str(Path.home()) + "/.config/strawberry/strawberry.conf"
strawberry_conf_file = ConfigParser()
strawberry_conf_file.read(strawberry_conf_file_path)
session = tidalapi.Session()
session.login_pkce()
creds = {
"token_type": session.token_type,
"session_id": session.session_id,
"access_token": session.access_token,
"refresh_token": session.refresh_token,
}
strawberry_conf_file["Tidal"]["type"] = "2"
strawberry_conf_file["Tidal"]["streamurl"] = "2"
strawberry_conf_file["Tidal"]["oauth"] = "true"
strawberry_conf_file["Tidal"]["enabled"] = "true"
strawberry_conf_file["Tidal"]["client_id"] = session.config.client_id_pkce
strawberry_conf_file["Tidal"]["quality"] = "HI_RES_LOSSLESS"
strawberry_conf_file["Tidal"]["country_code"] = "PL"
strawberry_conf_file["Tidal"]["token_type"] = "Bearer"
strawberry_conf_file["Tidal"]["access_token"] = creds["access_token"]
strawberry_conf_file["Tidal"]["refresh_token"] = creds["refresh_token"]
with open(strawberry_conf_file_path, "w") as configfile:
strawberry_conf_file.write(configfile)
print(json.dumps(creds, indent=4))
@mull3s
Copy link

mull3s commented Oct 11, 2025

Yes I did try to create a developer account to get a clientID to test its functionality, but it does not seem to work. The only method that seems to work right now is to download an older android app version of tidal and process files from an associated folder on your phone. This is limited to 44.1khz/16bit FLAC files from my testing, which is the standard for high quality audio.

To get Hi-Res I connected Qobuz. Strawberry has integration in the settings, you need your: username+password, App ID, and App secret. To get the latter 2 I used "qobuz-dl" which has a script for extracting them: https://github.com/vitiko98/qobuz-dl. let me know if you run into any trouble @spirillen .

@spirillen
Copy link

spirillen commented Oct 12, 2025

@mull3s thx for the hint, but I can only see what appears to be the app-secret in cat etc/aau_token (using miniconda), I can't find the app-id in there

For other, the info are stored in /home/$USER/.config/qobuz-dl/config.ini

Well, I could log in, retrieve the lists (album|artist|tracks) but when trying to play...

image

Maybe we should move this to the strawberry repo...

Update: moved to strawberrymusicplayer/strawberry#1832 @Cajivah you can delete these OT now if you like to

@mull3s
Copy link

mull3s commented Oct 13, 2025

@spirillen Yes that may be the case. We might need to move this there. As for the app secret and ID I believe in the python file I also printed the values so it returns them that is now I got it.

As for the problem you got with tidal, I had the same exact issue. Login and list retrieval successful, but that error popped when I tried to play anything.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment