Skip to main content

A library for building Native Format Scores.

Project description

# nf-grapher-python

This is a Python3 library for building Native Format Scores.

> **Note**: Currently this library supports _building_ Native Format Scores for the Native Format Smart Player, however reading or deserializing scores from JSON is currently unsupported.

## Requirements

- Python3
- virtualenv

## Installing

```bash
pip install nf_grapher
```

## Getting Started

Setup a virtual environment with the following:

```bash
virtualenv -p python3 e
source ./e/bin/activate
```

You can use whatever environment name you'd like, `e` is used here because it's short.

## Structure

This python library is divided into 3 modules. `nf_grapher.score` contains all the Score level objects
defined by the Native Format Score schema. `nf_grapher.typed` contains useful "typed" nodes defined
by the [smart player contract](../smart-player-contract.json). Because Python is not
statically typed, these types are not yet enforced. `nf_grapher.encoder` contains a function `encode`
for serializing grapher objects into JSON.

## Tests

Run tests with the following command:

```bash
python -m unittest discover -v
```

## Example Usage

```python
from nf_grapher.score import *
from nf_grapher.typed import *
from nf_grapher.encoder import encode

# Build a source node for a Spotify track
# Start from 5.6 seconds into the track and play for 5.6 seconds
source = FileNode('spotify:track:4RDKrwyA9YouzL1LxvMaxH', offset=5.6e+9, duration=5.6e+9)

# Create a 5.6 second loop from the beginning of the track
loop = LoopNode(when=0, duration=5.6e+9)

# Create the full score
score = Score(Graph(
nodes=[source, loop],
edges=[source.connect(loop)]
))

print(encode(score))
```

You can see a list of all supported typed nodes by using the Python `help` feature in a REPL.
For instance,

```bash
python
>>> from nf_grapher import typed
>>> help(typed)
```


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

nf_grapher-1.2.12.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

nf_grapher-1.2.12-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

Details for the file nf_grapher-1.2.12.tar.gz.

File metadata

  • Download URL: nf_grapher-1.2.12.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.4

File hashes

Hashes for nf_grapher-1.2.12.tar.gz
Algorithm Hash digest
SHA256 e655f5714803820902d7d2854dec2a17fb13d569d8543c3ae6dc9b967f1b0eae
MD5 148770301cd18bb46ec319bdd8af323a
BLAKE2b-256 38d9ef590662cd4b2ca17910ef7ae6a732e88b1852c2d8b7817fb49193db625a

See more details on using hashes here.

File details

Details for the file nf_grapher-1.2.12-py3-none-any.whl.

File metadata

  • Download URL: nf_grapher-1.2.12-py3-none-any.whl
  • Upload date:
  • Size: 14.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.4

File hashes

Hashes for nf_grapher-1.2.12-py3-none-any.whl
Algorithm Hash digest
SHA256 bbda1492a4c9c36e980ab4e9e0f5619573a39c67dc75c35096c513487310e939
MD5 d8beeb69082c543cbebfa8a62ac549b9
BLAKE2b-256 e4fd37c6fdc1ee98ccd3ef34b5678d14bfa41991c91ddde9c5665cc894534525

See more details on using hashes here.

Supported by

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