Giter VIP home page Giter VIP logo

python-tidal's Introduction

tidalapi

image

image

Unofficial Python API for TIDAL music streaming service.

Requires Python 3.9 or higher.

Installation

Install from PyPI using pip:

$ pip install tidalapi

Usage

For examples on how to use the api, see the examples directory.

Documentation

Documentation is available at https://tidalapi.netlify.app/

Development

This project uses poetry for dependency management and packaging. To install dependencies and setup the project for development, run:

$ pip install pipx
$ pipx install poetry
$ poetry install --no-root

python-tidal's People

Contributors

2e0byo avatar alik604 avatar arusahni avatar bjesus avatar blacklight avatar bloedboemmel avatar dependabot[bot] avatar divadsn avatar exislow avatar husky22 avatar jimmyscene avatar joshmock avatar jozefkruszynski avatar logic avatar lutzbuerkle avatar mkaufhol avatar mones88 avatar morguldir avatar mtyszkiewicz avatar nvllsvm avatar quodrum-glas avatar ssnailed avatar tamland avatar tehkillerbee avatar theli-ua avatar ugomeguerditchian avatar williamguisan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

python-tidal's Issues

Guard against artist having no or null role

When browsing through "My Music" "Favourite artists" "Similar artists", some entries like the following are returned:

{"picture": "32699e72-af85-4ee6-ac60-0788d919a731", "name": "The Who", "url": "http://www.tidal.com/artist/24915", "banner": null, "popularity": 0, "relationType": "SIMILAR_ARTIST", "type": null, "id": 24915}

This in turns causes an exception in _parse_artist:

None is not a valid Role

I'm not sure how this should best be handled (either allow null roles or catch the problem?). In my copy, I changed the method to:

def _parse_artist(json_obj):
    artist = Artist(id=json_obj['id'], name=json_obj['name'])
    try:
        artist.role = Role(json_obj['type'])
    except:
        pass
    return artist

Update release on pypi

Hi,

can you please release a new version on pypi.
The last release is several years old, and i am interested in using some features not available in the 0.5.0 version.

MQA

Are you going to add this quality?

Problems when using this library with telerik fiddler

I have this sample code and it works nicely without Telerik Fiddler
image
But i would like to see all requests which the library sends so I have to use it.
First, i had to downgrade urllib because I had issues
https://stackoverflow.com/questions/66642705/why-requests-raise-this-exception-check-hostname-requires-server-hostname
Then I still get errors but I unable to solve them.
image

This looks like a solution but I'm unable to find where do I need to put that parameter.I'm kinda new to python,help me please
image

How to get user_id when using load_session method?

When I log in u sin session.login and putting in my username and password I get my user_id back.

But when using session.load_session I need to provided a session_id and a user_id. But I don't have the user_id in that case.

I have a renderer (from Linn). I am writing a control point for these players, using upnp. The renderer has the login details stored (username and password). The controlpoint can use upnp to make the renderer login to Tidal. The renderer then provides a session_id to the controlpoint. But for the controlpoint to load the session in tidalapi I also need the user_id, which I don't have!

Is there some way to query the Tidal api for this, providing only session_id or username?

Thanks!

Album art not setting / not downloading properly

code :-

def download(url, file_name):
	with open(file_name, "wb") as file:
		response = get(url) 											
		file.write(response.content)

track = session._map_request('tracks/'+str(track_id), params={'limit': 100}, ret='tracks')
download(track.album.image, 'music/'+name+'.png')

anything wrong in this code?

How can i print all my playlist IDs

How can i print the playlist IDs for my account? I've tried the following but its not working

This: 3a219459-d2a8-40b6-b0ae-c5af2h6fb9b3 in
https://listen.tidal.com/playlist/3a219459-d2a8-40b6-b0ae-c5af2h6fb9b3

import tidalapi
import sys
import argparse
session = tidalapi.Session()
session.login('<email_addr>', '<password>!')
playlists = session.get_user_playlists(user_id=????????)

print(playlists)
print(playlists.uuid)
print(playlists.name)
print(playlists.title)
print(playlists.id)

Unable to login

Hello,

I am unable to sign into my Tidal account following the example usage.
This is my code:

import tidalapi

session = tidalapi.Session()
user = 'myemail'
pw = 'mypw'

session.login(user, pw)

First I got the following error:

{"status":401,"subStatus":6004,"userMessage":"Invalid token"}
Traceback (most recent call last):
  File "test.py", line 7, in <module>
    session.login(user, pw)
  File "C:\Users\alper\AppData\Local\Programs\Python\Python37-32\lib\site-packages\tidalapi\__init__.py", line 87, in login
    request.raise_for_status()
  File "C:\Users\alper\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\models.py", line 941, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://api.tidalhifi.com/v1/login/username?token=pl4Vc0hemlAXD0mN

After looking up my personal API token and editing the __init__ file I get this error:

{"status":401,"subStatus":3009,"userMessage":null}
Traceback (most recent call last):
  File "test.py", line 7, in <module>
    session.login(user, pw)
  File "C:\Users\alper\AppData\Local\Programs\Python\Python37-32\lib\site-packages\tidalapi\__init__.py", line 87, in login
    request.raise_for_status()
  File "C:\Users\alper\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\models.py", line 941, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://api.tidalhifi.com/v1/login/username?token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Hope someone can help me out :)

add_track returns 404 Client Error: Not Found for url

when attemtping to use add_track to favorites when favorites already has 49 items returns the following error

Traceback (most recent call last):
  File ".\tidal_add_tracks.py", line 16, in <module>
    TidalUser2.add_track(track.id)
  File "C:\Users\AppData\Local\Programs\Python\Python37\lib\site-packages\tidalapi\__init__.py", line 392, in add_track
    return self._session.request('POST', self._base_url + '/tracks', data={'trackId': track_id}).ok
  File "C:\Users\AppData\Local\Programs\Python\Python37\lib\site-packages\tidalapi\__init__.py", line 124, in request
    request.raise_for_status()
  File "C:\Users\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\models.py", line 941, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://api.tidalhifi.com/v1/users/UserID/favorites/tracks?sessionId=SESSIONID&countryCode=&limit=10000

List of functions to move over to 0.7.0

We want to make sure we move over every function to the new format

  • get_album(album_id)

    • tests
  • get_album_items(album_id)

    • tests
  • get_album_tracks(album_id)

    • tests

The way we did this function was just removing the tracks from the playlist, is is probably not that useful.

get_album_videos(album_id)
tests

  • get_artist(artist_id)

    • tests
  • get_artist_albums(artist_id)

    • tests
  • get_artist_albums_ep_singles(artist_id)

    • tests
  • get_artist_albums_other(artist_id)

    • tests
  • get_artist_bio(artist_id)

    • tests
  • get_artist_radio(artist_id)

    • tests
  • get_artist_similar(artist_id)

    • tests
  • get_artist_top_tracks(artist_id)

    • tests
  • get_artist_videos(artist_id)

    • tests
  • get_genre_items(genre_id, content_type)

    • tests
  • get_genres()

    • tests

This was just get_track_url

get_media_url(track_id)
tests

These have been deprecated by TIDAL and will be added later

get_mood_playlists(mood_id)
~ tests~

get_moods()
tests

get_featured()
tests

get_featured_items(content_type, group)
tests

  • get_playlist(playlist_id)

    • tests
  • get_playlist_items(playlist_id)

    • tests
  • get_playlist_tracks(playlist_id)

    • tests

No actual endpoint

get_playlist_videos(playlist_id)
tests

  • get_track(track_id)

    • tests
  • get_track_radio(track_id)

    • tests
  • get_track_url(track_id)

    • tests
  • get_user(user_id)

    • tests
  • get_user_playlists(user_id)

    • tests
  • get_video(video_id)

    • tests
  • get_video_url(video_id)

    • tests
  • load_session(session_id, country_code=None, user_id=None)

    • tests
  • login(username, password)

    • tests
  • request(method, path, params=None, data=None)

    • tests
  • search(field, value, limit=50)

    • tests

class tidalapi.User(session, id)

  • playlists()
    • tests

class tidalapi.Favorites(session, user_id)

  • add_album(album_id)

    • tests
  • add_artist(artist_id)

    • tests
  • add_track(track_id)

    • tests
  • add_video(video_id)

    • tests
  • albums()

    • tests
  • artists()

    • tests
  • playlists()

    • tests
  • videos()

    • tests
  • remove_album(album_id)

    • tests
  • remove_artist(artist_id)

    • tests
  • remove_track(track_id)

    • tests
  • tracks()

    • tests

AttributeError: 'session'

Hi, sorry I am a newbie.

I am getting this error by executing the example code snippet.

"AttributeError: partially initialized module 'tidalapi' has no attribute 'session' (most likely due to a circular import)"
What am I doing wrong and can't import tidalapi.Session()?

Lossless Quality Error

When setting the quality to lossless and logging in to a session, you will get a 401 Unauthorized with a return body of "Invalid token". I am not sure where / how to get an updated token where the quality is set to lossless but I wanted to notify you that this is happening.

getting 401 Unauthorized

pip list
tidalapi       0.6.2
C:\Users\user\Desktop>python
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 22:39:24) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tidalapi
>>> session = tidalapi.Session()
>>> session.login('[email protected]', 'xxxxxxxxx')
{"status":401,"subStatus":6004,"userMessage":"Invalid token"}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\site-packages\tidalapi\__init__.py", line 83, in login
    request.raise_for_status()
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\site-packages\requests\models.py", line 940, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://api.tidalhifi.com/v1/login/username?token=kgsOxxxxxxYrNP
>>>

How to get user_id from session

I am using this APIs but I am stuck when I'm trying to get user's playlists. to get user's playlist i need to pass user_id in "get_user_playlists(user_id)" this endpoint of user class.

Thanks in advance!!

New login method recommended

Because static tokens won't work forever (thanks for being "open", Tidal...) it should be taken into consideration to migrate one of the supported new login methods. Maybe the best would be somehow through browser based oauth2 (if it's possible).

Ability to retrieve created attribute from favorite tracks list

It appears that the API is retrieving the "item" object inside of the "items" array. The problem with this is that I'm trying to retrieve the "date added" attribute of a favorite track and I'm seemingly unable to do so with the 0.7.x library.
I did take a look at the code and see if I could add this feature myself but I'm not exactly sure how to do this.

Example JSON data of the users//favorites/tracks output, showing the "created" key:

{
   "limit":10,
   "offset":0,
   "totalNumberOfItems":331,
   "items":[
      {
         "created":"2019-12-27T14:30:29.824+0000",
         "item":{
            "id":102655820,
            "title":"100 Bad Days",
            "duration":213,
            "replayGain":-9.34,
            "peak":0.994263,
            "allowStreaming":true,
            "streamReady":true,
            "streamStartDate":"2019-01-30T00:00:00.000+0000",
            "premiumStreamingOnly":false,
            "trackNumber":1,
            "volumeNumber":1,
            "version":null,
            "popularity":11,
            "copyright":"(P) 2019 AJR Productions under exclusive license to Black Butter Limited",
            "url":"http://www.tidal.com/track/102655820",
            "isrc":"QMRSZ1900001",
            "editable":false,
            "explicit":false,
            "audioQuality":"LOSSLESS",
            "audioModes":[
               "STEREO"
            ],
            "artist":{
               "id":5073699,
               "name":"AJR",
               "type":"MAIN"
            },
            "artists":[
               {
                  "id":5073699,
                  "name":"AJR",
                  "type":"MAIN"
               }
            ],
            "album":{
               "id":102655819,
               "title":"100 Bad Days",
               "cover":"dec5bf9c-5573-4db5-9944-aa72051af368",
               "videoCover":null
            },
            "mixes":{
               "MASTER_TRACK_MIX":"014830637ccb8da5ffab01af5d3ce5",
               "TRACK_MIX":"001995746cb8ee26395ebd5bb3b78e"
            }
         }
      },

503 wimpmusic images

Tidal with wimp merger is finally complete.

>>> session.get_album(101993190).picture(2000, 2000)
'http://images.osl.wimpmusic.com/im/im?w=2000&h=2000&albumid=101993190'
>>> import requests
>>> requests.get('http://images.osl.wimpmusic.com/im/im?w=2000&h=2000&albumid=101993190')
<Response [503]>

Patch

Is there a way to get influencers for an artist?

Hi, I'm looking to get fetch the "influencers" section from the tidal artist page. I was wondering if there was an endpoint available from the tidal api for this? I can't seem to find any info.

I can see that there's no function for this in this wrapper currently, but curious if this is something that could potentially be implemented.

Don't working get_media_url

Was a problem in Code.

Error:
Traceback (most recent call last): File "tidal.py", line 94, in <module> url = session.get_media_url(track_id=track.id) File "/usr/local/lib/python3.6/dist-packages/tidalapi/__init__.py", line 240, in get_media_url r = self.request('GET', 'tracks/%s/streamUrl' % track_id, params) File "/usr/local/lib/python3.6/dist-packages/tidalapi/__init__.py", line 109, in request request.raise_for_status() File "/usr/local/lib/python3.6/dist-packages/requests/models.py", line 940, in raise_for_status raise HTTPError(http_error_msg, response=self) requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://api.tidalhifi.com/v1/tracks/92309800/streamUrl?sessionId=????????-????-????-????-????????????&countryCode=IT&limit=999&soundQuality=Quality.lossless

Update to latest token

I have noticed that other (illegal?) tidal tools has updated their token although I am not exactly sure where this token has been obtained. After updating my python-tidal installation to this token, the plugin works again: hZ9wuySZCmpLLiui

HELP - Search

Hey, i wanted to ask, how to parse the <tidalapi.models.SearchResult object at 0x...>.
I haven't found any documentation about it :(
I just don't know what to do after the session.search...

Here is a part of my code:

query = "python"
session = tidalapi.Session()
session.login('username', 'password')
tracks = session.search("track", query, 1)
print(tracks)

Thanks for helping me out (:

Login method no more works

Using tidalapi 0.6.3:

import tidalapi
session = tidalapi.Session()
session.login('[email protected]', '***************')

produces HTTP error 401:

{"status":401,"subStatus":6004,"userMessage":"Invalid token"}
Traceback (most recent call last):
  File "<console>", line 0, in <module>
  File "D:\develop\Python\lib\site-packages\tidalapi\__init__.py", line 83, in login
    request.raise_for_status()
  File "D:\develop\Python\lib\site-packages\requests\models.py", line 893, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://api.tidalhifi.com/v1/login/username?token=kgsOOmYk3zShYrNP

I suppose the deprecated login endpoint https://api.tidalhifi.com/v1/login/username is no more handled.
(If I try to login using same credentials through Tidal web, the sign in is completed.

tidalapi.models.Album object at 0x...

Hi,
I am trying to import all my favorite albums into an excel.
For now I have this:

import tidalapi

session = tidalapi.Session()

session.login('@', 'pass')

favorites = tidalapi.Favorites(session, session.user.id)

albums = favorites.albums()
for alb in albums:
    print(alb)

The output is the following:

<tidalapi.models.Album object at 0x7f4a5659edf0>
<tidalapi.models.Album object at 0x7f4a5659ef10>
<tidalapi.models.Album object at 0x7f4a565a1070>

How can I output the album name as a string?

403 Client Error: Forbidden for url: https://api.tidalhifi.com/v1/login/username

Not sure if it not the same problem as discribed here:
#65
But, then I try use simple example usage:

import tidalapi

session = tidalapi.Session()
session.login('[email protected]', 'mypassword')
tracks = session.get_album_tracks(album_id=16909093)
for track in tracks:
    print(track.name)

I get this error:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>ERROR: The request could not be satisfied</TITLE>
</HEAD><BODY>
<H1>403 ERROR</H1>
<H2>The request could not be satisfied.</H2>
<HR noshade size="1px">
Request blocked.
We can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.
<BR clear="all">
If you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation.
<BR clear="all">
<HR noshade size="1px">
<PRE>
Generated by cloudfront (CloudFront)
Request ID: sKUMth11MHMiKf0cWbBmNelWPrCh3HF8OpQWjnZqxmCK_MuhJ1JpjA==
</PRE>
<ADDRESS>
</ADDRESS>
</BODY></HTML>
Traceback (most recent call last):
  File "\Python\test.py", line 4, in <module>
    session.login('[email protected]', 'mypassword')
  File "\Python\tidalapi\__init__.py", line 98, in login
    request.raise_for_status()
  File "\Python\lib\site-packages\requests\models.py", line 941, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://api.tidalhifi.com/v1/login/username

Is any solutions for this?
Thanks!

Oauth2 logins not working

tidalapi v0.7.0 Rewrite

import tidalapi
session = tidalapi.Session()
session.login_oauth()

generates HTTP 400/authorization_pending error resulting to "You took too long to log in" exception. Is there something wrong on client side or is the method not yet ready?

400 Client error when searching for track, v0.7.0

Hi, I'm attempting to write a quick script to covert a spotify playlist. I have a list of tuples consisting of [track title, artist, album].

Here's the snippet of code I'm running into issues with(please ignore my odd delim that gets stripped):

session = tidalapi.Session()

try:
    session.login_oauth()
except:
    print("Couldn't login to Tidal, here's the link")
    session.login_oauth_simple()
    exit()

for track in tracklist:
    query = ' '.join(track.split('<^>')[0:1])
    print(query)
    print(session.search(query, [tidalapi.media.Track]))

What I'm getting back is:

query text: So, I Say Goodbye...
Traceback (most recent call last):
  File "spotipy_test.py", line 34, in <module>
    print(session.search(query, [tidalapi.media.Track]))
  File "/usr/local/lib/python3.6/dist-packages/tidalapi-0.7.0-py3.6.egg/tidalapi/session.py", line 433, in search
  File "/usr/local/lib/python3.6/dist-packages/tidalapi-0.7.0-py3.6.egg/tidalapi/request.py", line 78, in request
  File "/home/sawyer/.local/lib/python3.6/site-packages/requests/models.py", line 943, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: https://api.tidal.com/v1/search?limit=50&query=So%2C+I+Say+Goodbye...&offset=0&types=tracks`

I'm not sure if this is an issue with my input data or an issue with the api endpoint. I adjusted the code to continue on failure and none of the 200 tracks passed.

I understand 0.7.x is still WIP so I apologize if this is known.

Get Playlist Creator Always None

When I try getting the playlist creator it always returns None. Is there something I'm doing wrong or is this normal behaviour?

Can't login anymore?

I wonder if it's just me, but I can't login using python-tidal anymore. I'm getting this error:

Traceback (most recent call last):
  File "sync.py", line 6, in <module>
   mysession.login('*******', '*******)
  File "/home/*******/env/lib/python3.8/site-packages/tidalapi/__init__.py", line 77, in login
    r.raise_for_status()
  File "/home/*******/env/lib/python3.8/site-packages/requests/models.py", line 940, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://api.tidalhifi.com/v1/login/username?token=*******

Logging in through the browser at listen.tidal.com with the exact same credentials works normally. What happened?

Any progress update on 0.7.x branch?

I'm curious about the current state of the 0.7.x branch development, as there hasn't been any updates for a while. Especially the Tidal explore page is something I really miss (like top songs, recommendations, genres, moods, etc)

what about adding some more playlist and track attributes

inside the Init

def _parse_playlist(json_obj):
    
    kwargs = {
        'id': json_obj['uuid'],
        'name': json_obj['title'],
        'description': json_obj['description'],
        'num_tracks': int(json_obj['numberOfTracks']),
        'num_videos': int(json_obj['numberOfVideos']),          # new
        'last_updated': json_obj['lastUpdated'],                 # new
        'created': json_obj['created'],                         # new
        'type': json_obj['type'],                               # new
        'public_playlist': json_obj['publicPlaylist'],           # new
        'popularity': json_obj['popularity'],                   # new
        'last_item_added_at': json_obj['lastItemAddedAt'],         # new
        'duration': int(json_obj['duration']),
        'is_public': json_obj['publicPlaylist'],
        # TODO 'creator': _parse_user(json_obj['creator']),
    }
    return Playlist(**kwargs)
def _parse_media(json_obj):
    artist = _parse_artist(json_obj['artist'])
    artists = _parse_artists(json_obj['artists'])
    album = None
    if json_obj['album']:
        album = _parse_album(json_obj['album'], artist, artists)

    kwargs = {
        'id': json_obj['id'],
        'name': json_obj['title'],
        'duration': json_obj['duration'],
        'track_num': json_obj['trackNumber'],
        'disc_num': json_obj['volumeNumber'],
        'version': json_obj.get('version'),
        'popularity': json_obj['popularity'],
        'item_uuid': json_obj.get('itemUuid'),                          # new
        'date_added': json_obj.get('dateAdded'),                        # new
        'audio_quality': json_obj['audioQuality'],                      # new
        'premium_streaming_only': json_obj['premiumStreamingOnly'],     # new
        'stream_start_date': json_obj['streamStartDate'],               # new
        'isrc': json_obj['isrc'],                                       # new
        'artist': artist,
        'artists': artists,
        'album': album,
        'available': bool(json_obj['streamReady']),
        'type': json_obj.get('type'),
    }

    if kwargs['type'] == 'Music Video':
        return Video(**kwargs)
    return Track(**kwargs)

cannot get track url

git clone https://github.com/tamland/python-tidal.git cd python-tidal python setup.py install --user

res = session.search('artist', 'queen') band = res.artists[0].name artist_id = res.artists[0].id albums = session.get_artist_albums(artist_id) for a in albums: album = session.get_album(a.id) album_id = a.id album_name = a.name tracks = session.get_album_tracks(album_id) for t in tracks: track = session.get_track(t.id) session.get_track_url(track.id) != None
still no output

Will there be any changes in syntax with the 0.7 release?

I'm currently writing a GUI Tidal program for Linux with Python and GTK3 using your API, and I'm wondering if there will be any significant changes in the usage of the API or not. If there are going to be major changes, then I'd rather wait for the next release, but otherwise I'd like to begin coding.

session.get_track_url(track.id) does nothing

res = session.search('artist', 'queen') band = res.artists[0].name artist_id = res.artists[0].id albums = session.get_artist_albums(artist_id) for a in albums: album = session.get_album(a.id) album_id = a.id album_name = a.name tracks = session.get_album_tracks(album_id) for t in tracks: track = session.get_track(t.id) session.get_track_url(track.id)

returns nothing.
no error at all.
I can list tracks and its names and query the api but not track_url

Login fails

Hi,

When trying to login with I get following error:

{"status":401,"subStatus":8003,"userMessage":"Client not found"}

Subscription is active and login via web works as expected.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.