Spotify Connector for Podcast Data
Project description
Spotify Connector
This is a simple library for connecting to the unofficial Spotify podcast API.
It can be used to export data from your dashboard at
https://podcasters.spotify.com/home.
Supported Data
- List of episodes
- Starts and streams
- Listeners
- Followers
- Gender
- Age
- Country
- Episode performance
Credentials
Before you can use the library, you must extract your Spotify credentials from the dashboard; they are not exposed through your Spotify settings.
You can use our web extension for that or take a look at the code to see how to do it manually.
You need three values:
sp_dc: Can be found in the Spotify cookies once you're logged in. It's a long string with around 160 characters.sp_key: Can also be found in the Spotify cookies once you're logged in. It's a UUID (36 characters).client_id: This is a static value and stays the same for everyone. It is05a1371ee5194c27860b3ff3ff3979d2. Spotify might change it in the future, so if you run into issues, please check your network requests while logged in to find the new value.
Installation
pip install spotifyconnector
Usage as a library
from spotifyconnector import SpotifyConnector
# Set up the connector
connector = SpotifyConnector(
base_url="https://generic.wg.spotify.com/podcasters/v0123"
client_id="05a1371ee5194c27860b3ff3ff3979d2", # login to spotify and monitor connection to get this id
podcast_id="your_spotify_podcast_id",
sp_dc="xxxxxxxxxxxxxxxxxx...xxx", # can be found in cookies after logged in (long string)
sp_key="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" # can be found in cookies after logged in
)
# Get podcast metadata
connector.metadata()
# Get the list of listeners of a podcast
listeners = connector.listeners()
# Get the aggregated listeners of a podcast (by age, country, gender)
aggregate = connector.aggregate()
# Iterate over all episodes (supports pagination)
for episode in connector.episodes():
# Do something with episode
pass
# Get the performance of an episode
performance = connector.performance("episode_id")
# ...
See __main.py__ for all endpoints.
Local Testing
You can run the script locally to test it:
make dev
To run the script with verbose logging:
export LOGURU_LEVEL=TRACE
make dev
Development
We use uv for virtualenv and dependency management. With uv installed:
- Install your locally checked-out code in editable mode, including all
runtime, optional, and dev dependencies into a
.venv/virtual environment:
uv sync --all-extras --group dev
Or simply:
make install
- Create an environment file and fill in the required values:
cp .env.example .env
- Run the script in the virtual environment:
uv run spotifyconnector
To add a new runtime dependency:
uv add $package
To add a new development-only dependency:
uv add --group dev $package
To build the package locally (sdist + wheel into dist/):
uv build
Releasing
Releases are published to PyPI automatically by GitHub Actions when a new GitHub release is created.
- Bump the
versionfield inpyproject.toml. - Commit the bump and open a PR; merge it once CI is green.
- Create a new GitHub release with a tag like
v0.8.3matching the version inpyproject.toml. TheDeployworkflow will build withuv buildand publish viatwineusing thePYPI_API_TOKENsecret.
Credits
This was inspired by the code at wdr-okr, extended and released to PyPi.
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 spotifyconnector-0.8.3.tar.gz.
File metadata
- Download URL: spotifyconnector-0.8.3.tar.gz
- Upload date:
- Size: 153.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8401d2b093de14277a466caa82b96e7361411e802ac0f0e5ebda60bca36e618
|
|
| MD5 |
f539bc6426a7ee1fd4dbb2f2236ad641
|
|
| BLAKE2b-256 |
a57db50e19a8efa3a1f5e1e207c066badf51e4874cb87aa051299f2ac89efcaf
|
File details
Details for the file spotifyconnector-0.8.3-py3-none-any.whl.
File metadata
- Download URL: spotifyconnector-0.8.3-py3-none-any.whl
- Upload date:
- Size: 10.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1b7502ae27f85d249ad7c6cce99863bf5e07ac4d477fa95fc34391e13c10bd42
|
|
| MD5 |
1ba6249107d644ac97cfa0541fcf5554
|
|
| BLAKE2b-256 |
bc8053cb8d35f35431fb3fb3c726e77a4db84067a88f27abc0025a807fbc5369
|