Metadata-Version: 2.1
Name: tidalapi
Version: 0.8.2
Summary: Unofficial API for TIDAL music streaming service.
Home-page: https://tidalapi.netlify.app
License: LGPL-3.0-or-later
Author: Thomas Amland
Author-email: thomas.amland@googlemail.com
Maintainer: tehkillerbee
Maintainer-email: tehkillerbee@users.noreply.github.com
Requires-Python: >=3.8,<4.0
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: isodate (>=0.7.2,<0.8.0)
Requires-Dist: mpegdash (>=0.4.0,<0.5.0)
Requires-Dist: python-dateutil (>=2.8.2,<3.0.0)
Requires-Dist: ratelimit (>=2.2.1,<3.0.0)
Requires-Dist: requests (>=2.32.3,<3.0.0)
Requires-Dist: typing-extensions (>=4.12.2,<5.0.0)
Project-URL: Documentation, https://tidalapi.netlify.app
Project-URL: Repository, https://github.com/tamland/python-tidal
Description-Content-Type: text/x-rst

tidalapi
========

.. image:: https://img.shields.io/pypi/v/tidalapi.svg
    :target: https://pypi.org/project/tidalapi

.. image:: https://api.netlify.com/api/v1/badges/f05c0752-4565-4940-90df-d2b3fe91c84b/deploy-status
    :target: https://tidalapi.netlify.com/

Unofficial Python API for TIDAL music streaming service.

Requires Python 3.9 or higher.

Installation
------------

Install from `PyPI <https://pypi.python.org/pypi/tidalapi/>`_ using ``pip``:

.. code-block:: bash

    $ pip install tidalapi

Usage
-------------

For examples on how to use the api, see the `examples <https://github.com/tamland/python-tidal/tree/master/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:

.. code-block:: bash
    
        $ pip install pipx
        $ pipx install poetry
        $ poetry install --no-root

Contributions
-------------

Issues, suggestions and PRs are always welcome and are much appreciated.

Maintainer(s)
-------------
* Current:
    * `tehkillerbee <https://github.com/tehkillerbee>`_

* Former:
    * `tamland <https://github.com/tamland>`_
    * `morguldir <https://github.com/morguldir>`_

.. :changelog:

History
=======
v0.8.2
------
* Fixed wrong determination of file extensions for stream metadata. - exislow_
* Moved LinkLogin and futures to login_oauth. - exislow_
* Added/updated docstrings for auth methods. - exislow_
* Methods for device authorization have been renamed considered private. - exislow_

v0.8.1
------
* Typings: get_urls() returned value shall be `[str]`. - exislow_
* Remove MQA legacy code leftovers, HIRES naming inconsistency  - exislow_
* Tests: Updated unit test(s) - tehkillerbee_

v0.8.0
------
* BREAKING: MQA, Sony 360 audio no longer supported July 24th 2024; removed references to these formats. - tehkillerbee_
* Bugfix: Logical loop of is_encrypted / encryption_key - TooYoungTooSimp_
* Tests: Added additional playlist, folder tests. - tehkillerbee_
* Feature: Add support for playlist merging. - tehkillerbee_
* Added trn to playlist object for convenience. - tehkillerbee_
* Set limits from argument in all relevant methods. - tehkillerbee_
* Feature: Use v2 endpoint for playlist creation. - tehkillerbee_
* Feature: Add support for playlist folders (#181) - tehkillerbee_
* Feature: Add track to user playlist, user tracks from ISRC (#96) - tehkillerbee_
* Feature: Add optional fn_print to Session::login_session_file - GioF71_
* Feature: Add support for moving playlist items (#116) - tehkillerbee_
* Feature: Allow adding items multiple times to the same playlist - tehkillerbee_
* Feature: Add support for adding items to a playlists at a specific position (#116) - tehkillerbee_
* Feature: Set UserPlaylist public/private. Add method for getting public user playlists. - tehkillerbee_
* Feature: Remove multiple items from UserPlaylist. (Fixes #259) - tehkillerbee_
* Remove deprecated username/pass login method (Fixes #279) - tehkillerbee_
* Populate the track/items.album attributes from the parent Album object. Updated tests (Fixes #281) - tehkillerbee_
* Added clarifications to video_url method. Check video URLs for all available video qualities (Fixes #257) - tehkillerbee_
* Tests: Fix all tests that previously failed. - tehkillerbee_
* Use enum to specify default audio / video quality - tehkillerbee_
* Bugfix: Recent TIDAL changes resulted in missing Mix not causing a ObjectNotFound exception. - tehkillerbee_
* Bugfix: Ensure manifest.codecs always uses a Codec type for both MPD and BTS. - tehkillerbee_
* Added additional tests to verify stream formats (Relates to #252) - tehkillerbee_
* BREAKING: Fix naming of getters to align with python naming convention and avoid confusion (Fixes #255) - tehkillerbee_
* Bugfix: Use correct internal type int for relevant IDs (Fixes #260) - tehkillerbee_
* Bugfix: Fix linting for audio_modes. Update tests (Fixes #261) - tehkillerbee_
* Feat.: Provide "Share Link", "Listen link" as an attribute to album/artist/media/playlist/. Update relevant tests (Fixes #266) - tehkillerbee_
* Allow switching authentication method oauth/pkce for tests. Default: oauth - tehkillerbee_
* Tests: Added track stream tests (BTS, MPD) - tehkillerbee_
* Bugfix: Always use last element in segment timeline. (Fixes #273) - tehkillerbee_
* Add method to get detailed request error response if an error occurred during request. - tehkillerbee_
* Tests: Add tests tests for ISRC, barcode methods and cleanup exception handling. - tehkillerbee_
* Feat.: Add support to get tracks by ISRC. - tehkillerbee_, M4TH1EU_
* Feat.: Add support to get albums by Barcode ID (UPC). - tehkillerbee_, M4TH1EU_
* Feat.: Add support for a custom base url in `request()` and `basic_request()` to use the new openapi. - M4TH1EU_

v0.7.6
------
* Fix: Set token type correctly for OAuth/PKCE authentication - tehkillerbee_
* Revert to using enums with str support for relevant classes - tehkillerbee_, exislow_
* Removed return types from method names for consistency, added deprecation warnings - exislow_

v0.7.5
------
* Fix: Use wide image when no square picture is available. - tehkillerbee_
* Feat.: Added HiRes page. - tehkillerbee_
* Feat.: Handle missing Stream fields gracefully. Get stream audio resolution (bit depth, rate) as tuple. - tehkillerbee_
* Feat.: Added misc helper functions for audio mode, get available audio mode for media. - tehkillerbee_
* Feat.: Added misc. fields to album. Get audio resolution for album + individual tracks. - tehkillerbee_
* Feat.: Added MPEG-DASH to HLS stream parsing, Added MPEG-DASH stream example. - tehkillerbee_
* Set default artist IMG if missing. Use default album IMG URI instead of direct URL. - tehkillerbee_
* Bugfix: Make sure is_pkce state is set when pkce_login_url() is used directly. - tehkillerbee_
* Tests: Added misc tests for ObjectNotFound - tehkillerbee_
* Error handling: Handle TooManyRequests exceptions gracefully. - tehkillerbee_
* Error handling: Handle ObjectNotFound exceptions gracefully.  - tehkillerbee_
* Tests: Fix misc tests broken by Tidal. - tehkillerbee_
* Bugfix: Fix pkce token refresh. - tehkillerbee_
* Bugfix: Load/store PKCE state from file using wrong client_id. - tehkillerbee_
* Feat.: Improved error handling (Missing albums, missing lyrics, missing track url etc.). - tehkillerbee_
* Bugfix: Page Recursion into Categories. - quodrum-glas_

v0.7.4
------
* Load/store OAuth/PKCE session to file - tehkillerbee_
* Add PKCE login for HiRes - exislow_, arnesongit_
* Include request response on error. Print as warning - tehkillerbee_
* Fix tests - tehkillerbee_
* Bugfixes (artist.get_similar) - tehkillerbee_
* Favourite mixes refactoring - jozefKruszynski_
* Add typings for Playlist, UserPlaylist, Pages - arusahni_
* Update favorites.tracks to accept order and orderDirection params - Jimmyscene_

v0.7.3
------
* Official support for HI_RES FLAC quality - tehkillerbee_
* Add helper functions to set audio/video quality for current session - tehkillerbee_
* Added missing WELCOME_MIX MixType - tehkillerbee_
* Various image bugfixes - tehkillerbee_
* Add "for_you" page - tehkillerbee_
* Various test, poetry bugfixes - 2e0byo_
* Add typings for Artists and Users - arusahni_
* Add media metadata - jozefKruszynski_
* Add option to limit track radio length - jozefKruszynski_
* Downgrade minimum required version of requests JoshMock_



v0.7.2
------
* (BREAKING!) Drop support for python3.8 and older
* Improved tests - 2e0byo_
* Add type to album object - jozefKruszynski_
* Add mix images and tests - jozefKruszynski_
* Add mypy and fix immediate typing errors - arusahni_
* New attribute to media.Track() class: 'full_name' - WilliamGuisan_
* Fix Track.stream() method - ssnailed_
* Fixed key error for gender when parsing user json - mkaufhol_
* Drop (almost) all user data we don't use. - 2e0byo_
* Add typing for media, genres, mixes, and albums - arusahni_
* Replace TypedDict and NamedTuple with dataclasses - arusahni_
* Fix circular Imports and Typing - PretzelVector_

v0.7.1
------
* Quick fix for "got key error 'picture'" error. - BlackLight_
* Bring back Radio support - bjesus_
* Added function for multiple deletions at once bloedboemmel_
* Use UTC instead of local time for expiry_time lutzbuerkle_

v0.7.0
------

* (BREAKING!) Removed obsolete parameter session_id from load_oauth_session - lutzbuerkle_
* (BREAKING!) Drop support for python2.7 - morguldir_
* (BREAKING!) Change the architecture of the library to allow for using more files, see the migration guide - morguldir_
* Add support for tidal pages (e.g. home, videos and explore in the web ui) - morguldir_
* Add support for parsing mixes and retrieving the media - morguldir_
* Get rid of the old genre and mood support, you can now find them in the pages instead - morguldir_
* Update almost all of the json parsing and classes to include more fields - morguldir_
* Add complete docstrings to many of the functions - morguldir_
* Tests now cover almost all of the code - morguldir_
* Pylint scores are now much higher - morguldir_
* Add option to retrieve master quality tracks (I can't test this, but I believe it works as of writing) - morguldir_
* Add a few documentation pages explaining the basics - morguldir_
* Add support for modifying playlists - morguldir_
* Add a parameter to always fetch the track album if it's not provided - divadsn_
* Add function to retrieve the year and date from either the release data or the stream start date - divadsn_
* Improve the performance of the internal get_items() function by using extend - BlackLight_
* Properly deal with the api returning non-json results - BlackLight_
* Add support for retrieving the reviews of an album - retired-guy_


v0.6.10
-------
* Update the client secret - 1nikolas_
* Use a track url endpoint compatible with the new secret - morguldir_

v0.6.9
------

* Update the client secret - morguldir_
* Fix token_refresh() not correctly including the client secret - morguldir_

v0.6.8
------

* Support OAuth login through login_oauth_simple() and login_oauth() - morguldir_
* Support loading an OAuth session through load_oauth_session() - morguldir_
* Include more info when a request fails - morguldir_

v0.6.7
------

* Fix wimp images not resolving - ktnrg45_
* Made the favorite playlists function also return created playlists - morguldir_

v0.6.6
------

* Update api token and slightly obfuscate it - morguldir_

v0.6.5
------

* Update api token - morguldir_

v0.6.4
------

* Add parameter to search() allowing for more results (up to 300) - morguldir_
* Fix get_track_url() not returning anything - morguldir_

v0.6.3
------

* Fix quality options using enum names instead of values - morguldir_
* Handle situations where tidal doesn't set the version tag - morguldir_

v0.6.2
------

* Update lossless token - morguldir_
* Always use the same api token - morguldir_
* Include additional info when logging fails - morguldir_
* Make user_id and country_code optional when using load_session() - morguldir_
* Add version tag for Track - Husky22_
* Switch to netlify for documentation - morguldir_

.. _morguldir: https://github.com/morguldir
.. _Husky22: https://github.com/Husky22
.. _ktnrg45: https://github.com/ktnrg45
.. _1nikolas: https://github.com/1nikolas
.. _divadsn: https://github.com/divadsn
.. _BlackLight: https://github.com/BlackLight
.. _lutzbuerkle: https://github.com/lutzbuerkle
.. _retired-guy: https://github.com/retired-guy
.. _bjesus: https://github.com/bjesus
.. _bloedboemmel: https://github.com/bloedboemmel
.. _2e0byo: https://github.com/2e0byo
.. _jozefKruszynski: https://github.com/jozefKruszynski
.. _arusahni: https://github.com/arusahni
.. _WilliamGuisan: https://github.com/WilliamGuisan
.. _ssnailed: https://github.com/ssnailed
.. _mkaufhol: https://github.com/mkaufhol
.. _PretzelVector: https://github.com/PretzelVector
.. _tehkillerbee: https://github.com/tehkillerbee
.. _JoshMock: https://github.com/JoshMock
.. _exislow: https://github.com/exislow
.. _arnesongit: https://github.com/arnesongit
.. _Jimmyscene: https://github.com/Jimmyscene
.. _quodrum-glas: https://github.com/quodrum-glas
.. _M4TH1EU: https://github.com/M4TH1EU
.. _GioF71: https://github.com/GioF71
.. _TooYoungTooSimp: https://github.com/TooYoungTooSimp




