second commit

This commit is contained in:
2024-12-27 22:31:23 +09:00
parent 2353324570
commit 10a0f110ca
8819 changed files with 1307198 additions and 28 deletions

View File

@ -0,0 +1 @@
pip

View File

@ -0,0 +1,165 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.

View File

@ -0,0 +1,326 @@
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

View File

@ -0,0 +1,32 @@
tidalapi-0.8.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
tidalapi-0.8.2.dist-info/LICENSE,sha256=2n6rt7r999OuXp8iOqW9we7ORaxWncIbOwN1ILRGR2g,7651
tidalapi-0.8.2.dist-info/METADATA,sha256=f08ri81NZixLocalh5Vb3Gu-0hvlX41Q55sbJMamq-U,13855
tidalapi-0.8.2.dist-info/RECORD,,
tidalapi-0.8.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
tidalapi-0.8.2.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
tidalapi/__init__.py,sha256=P9nZPuVQcLHxXvlYpk3-ohrhULXIZs3U-D2KE4Ac5_0,639
tidalapi/__pycache__/__init__.cpython-311.pyc,,
tidalapi/__pycache__/album.cpython-311.pyc,,
tidalapi/__pycache__/artist.cpython-311.pyc,,
tidalapi/__pycache__/exceptions.cpython-311.pyc,,
tidalapi/__pycache__/genre.cpython-311.pyc,,
tidalapi/__pycache__/media.cpython-311.pyc,,
tidalapi/__pycache__/mix.cpython-311.pyc,,
tidalapi/__pycache__/page.cpython-311.pyc,,
tidalapi/__pycache__/playlist.cpython-311.pyc,,
tidalapi/__pycache__/request.cpython-311.pyc,,
tidalapi/__pycache__/session.cpython-311.pyc,,
tidalapi/__pycache__/types.cpython-311.pyc,,
tidalapi/__pycache__/user.cpython-311.pyc,,
tidalapi/album.py,sha256=N9P79Zxp7mZ-jodpj1U5Dfkr6xZQunRvKqmtarpXuKE,13309
tidalapi/artist.py,sha256=MPI6jaT_4wVdk609CQxP07Bl_xP9ntTCABwPKrEh8sc,10418
tidalapi/exceptions.py,sha256=H91bl31_5vQr252e0vYwd-e9ZBmLpUZpEwOjWDTP18s,557
tidalapi/genre.py,sha256=KL1WWhLwIQDtguMYFKCgwEhW7K6zOw3Cu0BOl_aKh6E,2833
tidalapi/media.py,sha256=mj2B4zsoHrtYDdJmjJHMl-uzzsY128zTwZIec1KpJI8,30766
tidalapi/mix.py,sha256=aG16vFOk0nIres4ds0Q0d3zeMnh-DHQFbCGBWSfDpPM,10028
tidalapi/page.py,sha256=rNoEwJtVa1XWHjGdcdlrDwaoIjr33CuoEFiBmpVMJiI,13926
tidalapi/playlist.py,sha256=xeCrZM_WnzSiZGyZR5oK-Jj5hzb31cWNj70_jwSu4v0,26617
tidalapi/request.py,sha256=uU1WXuVkcBS2p6XrjlFs0vuVKnOTZ8-T71LLqYZTq8g,10164
tidalapi/session.py,sha256=RE5I0STguUGp6wyxMb502S1w5YF9bbu59rrtR5m655I,45909
tidalapi/types.py,sha256=GcxDECkFXzla5ilcT1BhIErZssYh0LySGhp7uFyRlOE,127
tidalapi/user.py,sha256=n5GsRK5bqgsKCtrN7VP5MVm-pXb8w4msufy5zm_oY8o,20666

View File

@ -0,0 +1,4 @@
Wheel-Version: 1.0
Generator: poetry-core 1.9.1
Root-Is-Purelib: true
Tag: py3-none-any