Skip to main content

An async spotify api client

Project description

AsyncSpotify

Unit Tests Codacy Badge codecov

Documentation

The full documentation can be viewed here.

Why should you use this library

  • 100% Code coverage
  • Completely type annotated
  • Completely async
  • Scales up to (theoretically) unlimited requests per second (tested with 1000 simultaneous requests which lead to a 429)
  • Customize the timeout, maximal simultaneous request
  • Throws custom errors, so you can catch different errors easily + Token expiration + Rate limit violation + An invalid album id
  • Gets rid of the client credential workflow if you provide spotify cookies
    • Good for automated testing
  • Offers a hook which gets called if the token expires, so you can automatically update the token

Installation

You need at least python3.6 to install the package

pip install async-spotify

Example

For more in depth examples take a look here or visit the documentation.

from async_spotify import SpotifyApiClient
from async_spotify.authentification import SpotifyAuthorisationToken
from async_spotify.authentification.authorization_flows import AuthorizationCodeFlow
# Create a auth_code_flow object and load the auth_code_flow from env variables
auth_flow = AuthorizationCodeFlow()
auth_flow.load_from_env()

# Create a new Api client and pass the auth_code_flow
api_client = SpotifyApiClient(auth_flow, hold_authentication=True)

# Get the auth token with your code
code: str = "Your Spotify Code"
auth_token: SpotifyAuthorisationToken = await api_client.get_auth_token_with_code(code)

# Create a new client
await api_client.create_new_client(request_limit=1500)

# Start making queries with the internally saved token
album_tracks: dict = await api_client.albums.get_tracks('03dlqdFWY9gwJxGl3AREVy')

# If you pass a valid auth_token this auth_token will be used for making the requests
album_tracks: dict = await api_client.albums.get_tracks('03dlqdFWY9gwJxGl3AREVy', auth_token)

# Every argument mentioned by the Spotify API can be passed as kwarg. The client will figure out if your provided kwarg
# should be added to the request body, or the url
await api_client.player.play(context_uri="spotify:album:5ht7ItJgpBH7W6vJ5BqpPr", device_id="whatever_id")
#                                 ^                                                 ^
#                                URL                                               BODY

Tests

See here.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

async-spotify-0.4.4.tar.gz (28.5 kB view details)

Uploaded Source

File details

Details for the file async-spotify-0.4.4.tar.gz.

File metadata

  • Download URL: async-spotify-0.4.4.tar.gz
  • Upload date:
  • Size: 28.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for async-spotify-0.4.4.tar.gz
Algorithm Hash digest
SHA256 6ed9848a4e2d70c87ac07c0e386b52d84f1b845dfe932bc1b4451f239ec18731
MD5 21fb0e27a4423a3b687658033f747f54
BLAKE2b-256 2d8b27a0b564b59f7ecccf5bb768fd4b49c3e96b4bfe33c59db6cdbfadeb8138

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page