A Python package for interacting with the Soundcharts API.
Project description
Soundcharts Module
A Python package for interacting with the Soundcharts API.
API Documentation
Full documentation of the API is available here: Soundcharts API Documentation
You will need a Soundcharts API subscription to use this package.
Features
- Easily pull data from Soundcharts' API.
- Every endpoint from the documentation is available as a Python function.
- For example, the "get audience" endpoint in the "playlist" category is accessible via
playlist.get_audience().
- For example, the "get audience" endpoint in the "playlist" category is accessible via
- Synchronous and Asynchronous support.
- Automatically loops through endpoints to get around API limitations, such as the limit of 100 items per request or cursors on premium endpoints.
- Configurable error handling.
Installation
pip install soundcharts
Usage
Synchronous Client
Best for standard scripts, Jupyter notebooks, or scheduled cron jobs.
from soundcharts import SoundchartsClient
sc = SoundchartsClient(app_id="your_app_id", api_key="your_api_key")
# Example with Billie Eilish's UUID
billie_metadata = sc.artist.get_artist_metadata("11e81bcc-9c1c-ce38-b96b-a0369fe50396")
print(billie_metadata)
Asynchronous Client
Recommended for high-performance applications, FastAPI, or when integrating with other asyncio libraries. This avoids blocking the event loop and allows for faster execution in concurrent environments.
import asyncio
from soundcharts import SoundchartsClientAsync
async def main():
sc = SoundchartsClientAsync(app_id="your_app_id", api_key="your_api_key")
# Use 'await' for all API calls
billie_uuid = "11e81bcc-9c1c-ce38-b96b-a0369fe50396"
billie_metadata = await sc.artist.get_artist_metadata(billie_uuid)
print(billie_metadata)
asyncio.run(main())
Error handling
You can set the severity of the console logs, file logs, and exceptions:
from soundcharts.client import SoundchartsClient
import logging
sc = SoundchartsClient( app_id="your_app_id",
api_key="your_api_key",
console_log_level=logging.INFO,
file_log_level=logging.WARNING,
exception_log_level=logging.ERROR)
Setting the level of the console or file log to logging.DEBUG will log each request send to the API.
Parallel processing
You can specify the number of requests to run in parallel. It's especially useful when looping through a lot of calls, like in this case fetching 3 months of Billie Eilish's radio airplay (about 3,000 calls):
from soundcharts.client import SoundchartsClient
import logging
sc = SoundchartsClient( app_id="your_app_id",
api_key="your_api_key",
parallel_requests=10)
billie = "11e81bcc-9c1c-ce38-b96b-a0369fe50396"
response = sc.artist.get_radio_spins(
billie, start_date="2025-01-01", end_date="2025-03-31", limit=None
)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file soundcharts-1.2.0.tar.gz.
File metadata
- Download URL: soundcharts-1.2.0.tar.gz
- Upload date:
- Size: 38.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2a5660efaae44f25bad695744a251be6ed8d201d31a01912253056766d151d4
|
|
| MD5 |
46a03d0306160e4f76de2421b238d007
|
|
| BLAKE2b-256 |
051dbaa85246f10a81e23b4b7ba83c61cd612cc5d28eee442881ea1164bc8c45
|
File details
Details for the file soundcharts-1.2.0-py3-none-any.whl.
File metadata
- Download URL: soundcharts-1.2.0-py3-none-any.whl
- Upload date:
- Size: 47.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8cee0b7352e2c602e2859ca4752b1ca609d28cd0179727693f55602d95fdcf6
|
|
| MD5 |
beb9feb3526929c321b48cc39c667690
|
|
| BLAKE2b-256 |
c09327c5490bab2e986ca718e9127308dae8c9d16e93c65d83de9f88be437f08
|