670f44b032a9f2e8d57bfff912b5fab0369d8f12
librespot-spotizerr
Spotizerr's librespot python integration
About The Project
This project is to further add more features for the spotizerr project, forked from librespot-python
Getting Started
Prerequisites
Installation
Stable Version
pip install librespot
Snapshot Version *Recommended
pip install git+https://github.com/Xoconoch/librespot-spotizerr
Usage
Use Zeroconf for Login (no premium required)
from librespot.zeroconf import ZeroconfServer
import time
import logging
import pathlib
zs = ZeroconfServer.Builder().create()
logging.warning("Transfer playback from desktop client to librespot-spotizerr via Spotify Connect in order to store session")
while True:
time.sleep(1)
if zs._ZeroconfServer__session:
logging.warning(f"Grabbed {zs._ZeroconfServer__session} for {zs._ZeroconfServer__session.username()}")
if pathlib.Path("credentials.json").exists():
logging.warning("Session stored in credentials.json. Now you can Ctrl+C")
break
Get Music Stream
*Currently, music streaming is supported, but it may cause unintended behavior.
from librespot.core import Session
from librespot.metadata import TrackId
from librespot.audio.decoders import AudioQuality, VorbisOnlyAudioQuality
session = Session.Builder() \
.user_pass("Username", "Password") \
.create()
track_id = TrackId.from_uri("spotify:track:xxxxxxxxxxxxxxxxxxxxxx")
stream = session.content_feeder().load(track_id, VorbisOnlyAudioQuality(AudioQuality.VERY_HIGH), False, None)
# stream.input_stream.stream().read() to get one byte of the music stream.
Other uses are examples or read this document for detailed specifications.
Debug
To display the debug information, you need to inject the following code at the top of the code.
import logging
logging.basicConfig(level=logging.DEBUG)
Contributing
Pull requests are welcome.
License
Distributed under the GPL yada yada, See LICENSE for more information.
Related Projects
- Librespot (Concept)
- Librespot-Java (Core)
Description
Languages
Python
100%