open-index/open-npm huggingface dataset:
npm package: @semohr/tagtor
Description: <div align="center">     <h1>TagTor</h1>     <p align="center">         <em>JS, Python & Rust parser for the TRAKTOR4 metadata tag</em>     </p>     <p align="center">         <img src="https://github.com/semohr/tagtor/actions/workflows/test.yml/badge.svg
Latest version: 0.2.4

<div align="center">
    <h1>TagTor</h1>
    <p align="center">
        <em>JS, Python & Rust parser for the TRAKTOR4 metadata tag</em>
    </p>
    <p align="center">
        <img src="https://github.com/semohr/tagtor/actions/workflows/test.yml/badge.svg?branch=main" alt="test_status">
        <img src="https://img.shields.io/github/last-commit/semohr/tagtor?style=flat&color=0080ff" alt="last-commit">
        <img src="https://img.shields.io/github/license/semohr/tagtor?style=flat&color=0080ff" alt="license">
        <img src="https://img.shields.io/badge/Rust-000001.svg?style=flat&logo=Rust&logoColor=white" alt="Rust">
    </p>
    <p align="center">
        <a href="https://pypi.org/project/tagtor/"><img src="https://img.shields.io/pypi/v/tagtor?color=00ff00" alt="PyPi"></a>
        <a href="https://www.npmjs.com/package/@semohr/tagtor"><img src="https://img.shields.io/npm/v/@semohr/tagtor?color=00ff00" alt="NPM"></a>
    </p>
</div>
<hr>

---
## About

This is a parser for the TRAKTOR4 metadata tag, written in Rust. Wrapped for use in JavaScript, Python are available.

At the moment writing is not supported as the TRAKTOR4 metadata has an CHECKSUM field which is not trivial to calculate. If you have an idea how to do this, please open an issue or a pull request! Help is very welcome!

## Usage

### Python

```python
import mutagen
from tagtor import parse_frame
# Get traktor4 metadata from a file somehow (example using mutagen)
f = mutagen.File('path/to/file.mp3')
traktor4_metadata = bytes(f.tags.getall("PRIV")[0])

# Parse the metadata
frame = parse_frame(traktor4_metadata)
```

### JavaScript

```javascript
import { parse_frame } from 'tagtor';

// Get traktor4 metadata from a file somehow
const traktor4_metadata = getTraktor4MetadataFromFile();
// Parse the metadata
const frame = parse_frame(traktor4_metadata);
```

See type information to understand the structure of the returned `frame` object.

### Rust

```rust
use tagtor::parse_frame;

// Get traktor4 metadata from a file somehow
let traktor4_metadata = get_traktor4_metadata_from_file();
// Parse the metadata
let frame = parse_frame(traktor4_metadata).unwrap();
```

Using wasm32 as target will pull in wasm-bindgen and tsify.

## Development

This rust project can be compiled to a JavaScript module using `wasm-pack`:

```bash
wasm-pack build
```

Alternatively, you can also compile it as python module using `maturin`:

```bash
maturin build --release --features python-binding
# Or 
maturin develop --features python-binding
```