Welcome to the GitHub repository of Tekore! We provide a client for the Spotify Web API for Python, complete with all available endpoints and authentication methods, async support and loads of additional features. Tekore allows you to interact with the API effortlessly. Here's five lines to get you full access and start playing your top songs.
import tekore as tk
conf = (client_id, client_secret, redirect_uri)
token = tk.prompt_for_user_token(*conf, scope=tk.scope.every)
spotify = tk.Spotify(token)
tracks = spotify.current_user_top_tracks(limit=10)
spotify.playback_start_tracks([t.id for t in tracks.items])
See our homepage on PyPI for more information about the package and its versions. Visit our online documentation on Read The Docs for tutorials, examples, package reference and a detailed description of features. Join our Discord community to ask for help or discuss just about anything related to Tekore. You can also ask a question on Stack Overflow.
Contributing
New contributors are always welcome! If you've found a bug or would like to propose a feature, please submit an issue. If you'd like to get more involved, you can start by cloning the most recent version from GitHub and installing it as an editable package.
$ git clone https://github.com/felix-hilden/tekore.git
$ cd tekore
$ pip install -e .[dev]
The last command installs all the necessary dependencies for development. For specialised uses, sets of extras can be installed separately. tests
installs dependencies related to executing tests, docs
is for building documentation locally, and checks
contains tox
and tools for static checking. The install can be verified by running all essential tasks with tox.
$ tox
Now a subset of tests have been run, and documentation has been built. A list of all individual tasks can be viewed with their descriptions.
$ tox -a -v
Please have a look at the following sections for additional information regarding specific tasks and configuration.
Documentation
Documentation can be built locally with Sphinx.
$ cd docs
$ make html
The main page index.html
can be found in build/html
. If tox is installed, this is equivalent to running tox -e docs
.
Code style
A set of code style rules is followed. To check for violations, run flake8
.
$ flake8 tekore
Style checks for docstrings and documentation files are also available. To run all style checks use tox -e lint
.
Running tests
The repository contains a suite of test cases which can be studied and run to ensure the package works as intended.
$ pytest
For tox, this is the default command when running e.g. tox -e py
.
Tests against the live Web API use environment variables for credentials. These tests manipulate your data and player, but try to restore previous state insofar as it is possible. Please refer to the description of each test class for details. In order to run all tests successfully, one must specify:
SPOTIFY_CLIENT_ID
- client ID of a registered Spotify 3rd party applicationSPOTIFY_CLIENT_SECRET
- secret associated with that applicationSPOTIFY_REDIRECT_URI
- redirect URI whitelisted in application settingsSPOTIFY_USER_REFRESH
- user refresh token with all scopes
In addition, playback tests require an active Spotify device that does not have a private session enabled and an empty song queue.
Optionally TEKORE_TEST_SKIP_IS_FAIL
can be set to raise an error if some of the tests would be skipped because of the environment has not been configured.
To measure test coverage and view uncovered lines or branches run coverage
.
$ coverage run
$ coverage report
This can be achieved with tox by running tox -e coverage
.