Skip to main content

A Spotipy-compatible wrapper using SpotAPI

Project description

PyPI - Downloads Downloads

SpotipyFree

A lightweight drop-in replacement for Spotipy without using the spotify api. This project was build because spotify removed access to its API for non-premium users. This project doesn't use ANY Spotify APIs.


Features

  • Drop-in style response compatible with spotipy

  • No Spotify account required

  • Returns playback data structured like the official Spotify API


Current Status

This project is experimental.

Currently implemented:

  • search()
  • track()
  • playlist()
  • playlist_items()
  • artist()
  • artist_albums()
  • album()
  • album_tracks()
  • current_user_recently_played() - must first run startRecentlyPlayedListener
  • current_user_saved_tracks()
  • current_user_saved_tracks_contains()
  • current_user_playlists()
  • current_playback()
  • current_user()
  • me()
  • seek_track()
  • next_track()
  • previous_track()
  • start_playback()
  • pause_playback()

There is also a feature to host the api as a Flask endpoint.

Installation

Bash

pip install spotipyFree


Usage without login

from SpotipyFree import Spotify

sp = Spotify()

search = sp.search("Blinding Light - Weekend")
artist = sp.artist("3Bd1cgCjtCI32PYvDC3ynO")
artistAlbums = sp.artist_albums("3Bd1cgCjtCI32PYvDC3ynO", include_groups="album,single,compilation")
playlist = sp.playlist_items("6lnfkAgnVtNzvj8KScLSkj")
track = sp.track("67Hna13dNDkZvBpTXRIaOJ")
album = sp.album("4m2880jivSbbyEGAKfITCa")
albumTracks = sp.album_tracks("4m2880jivSbbyEGAKfITCa")

Usage with login

sp = Spotify()
sp.login()

status = spotapi.player.PlayerStatus(sp.user_auth)
sp.startRecentlyPlayedListener()
state = status.state.__dict__
saved = sp.current_user_saved_tracks()
me = sp.me()

Usage with web API

Hosting the web api:

python -c "import SpotipyFree.web as web; web.runWebAPI()"

Using the web api

import json
import requests

BASE_URL = "http://127.0.0.1:5000"

url = f"{BASE_URL}/search"
response = requests.post(url, json=["Blinding Light - Weekend"])

print(f"Status: {response.status_code}")
print(response.json())

This project is in no way affiliated with Spotify.

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

spotipyfree-1.9.4.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

spotipyfree-1.9.4-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

Details for the file spotipyfree-1.9.4.tar.gz.

File metadata

  • Download URL: spotipyfree-1.9.4.tar.gz
  • Upload date:
  • Size: 16.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for spotipyfree-1.9.4.tar.gz
Algorithm Hash digest
SHA256 d2f5dd257c945b2bea94c5703d62bd65586dd83a661ac92bed0c9f631ed35854
MD5 52cd29f9a035f0f40bc7936f687c246d
BLAKE2b-256 8adb10dd0d0afad04e6cd2e3ca9e25e44a7162935f2fe5d72f082ea2e04978ee

See more details on using hashes here.

File details

Details for the file spotipyfree-1.9.4-py3-none-any.whl.

File metadata

  • Download URL: spotipyfree-1.9.4-py3-none-any.whl
  • Upload date:
  • Size: 18.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for spotipyfree-1.9.4-py3-none-any.whl
Algorithm Hash digest
SHA256 4dc9ea37d87cec3629a9544aa023ee8e55523a2d8ab1b3a61faae4a1c2147e7a
MD5 51c774552b5360e3eaf3b42fd5bff68c
BLAKE2b-256 bb5678060c97e58b44fa9625bd2b2f18055365e0147a26ec19ea6a40dbfc1fde

See more details on using hashes here.

Supported by

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