Add first draft of CONTRIBUTING.md
This commit is contained in:
47
CONTRIBUTING.md
Normal file
47
CONTRIBUTING.md
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# Contributing
|
||||||
|
|
||||||
|
## What this library is
|
||||||
|
|
||||||
|
- A headless Spotify client, allowing you to **authenticate and retrieve a decrypted audio stream for any track**.
|
||||||
|
- *Not* a standalone audio player: the **provided stream must be piped to another application** (like `ffplay`) or handled by a server to be played.
|
||||||
|
|
||||||
|
## Environment setup
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
- Python 3.10+
|
||||||
|
|
||||||
|
### Install runtime packages
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pip install -r requirements.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
### Install protoc
|
||||||
|
|
||||||
|
> This step is **only needed if you're changing any `.proto` serialization schema files**,
|
||||||
|
> which will subsequently require using the protoc compiler to generate updated versions of
|
||||||
|
> the `*_pb2.py` Python stubs that implement serialization/deserialization for those schemas.
|
||||||
|
|
||||||
|
- Go to the [protobuf release matching the version pinned in `requirements.txt`](https://github.com/protocolbuffers/protobuf/releases/tag/v3.20.1).
|
||||||
|
- Download and install the `protoc-*.zip` file meant for your platform.
|
||||||
|
|
||||||
|
After modifying the `.proto` files you need to, **make sure to follow [these steps](#protocol-buffer-generation) to regenerate the Python stubs**.
|
||||||
|
|
||||||
|
## Protocol buffer generation
|
||||||
|
|
||||||
|
> These steps are only necessary after changing `.proto` files.
|
||||||
|
|
||||||
|
- From the repository root, conveniently recompile all `.proto` schema files with this command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
find proto -name "*.proto" | xargs protoc -I=proto --python_out=librespot/proto
|
||||||
|
```
|
||||||
|
|
||||||
|
- Alternatively, to recompile a single file (e.g. `proto/metadata.proto`), run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
protoc -I=proto --python_out=librespot/proto proto/metadata.proto
|
||||||
|
```
|
||||||
|
|
||||||
|
- Commit both the source `.proto` and the regenerated Python output **together** so they can
|
||||||
|
be compared easily.
|
||||||
Reference in New Issue
Block a user