Skip to main content

A modern reimplementation of redele.

Project description

openFABA

openFABA is a command-line tool for inspecting, extracting, and exporting audio files for the FABA storytelling box. It allows you to convert standard MP3 files into FABA-compatible files for specific figures.

This project builds upon the reverse-engineering work by wansors. At the moment, openFABA supports only the original FABA device.

Disclaimer

openFABA is an independent project and is not affiliated with or endorsed by FABA.

This software is provided as is, without warranties of any kind. You are responsible for how you use it and for any consequences that may arise, including device malfunction or account-related actions. Some features may conflict with FABA’s terms of service or usage policies.

The goal of openFABA is to:

  • simplify the creation of custom, FABA-compatible figures
  • enable personalization of figures you already own

We do not endorse music piracy, copyright infringement, or any misuse that could negatively impact FABA or its ecosystem. FABA is a great company, and we encourage supporting them by purchasing their products.

Use this tool responsibly and at your own risk.

🚀 Prerequisites

Before working with this project, make sure you have uv installed. 👉 Install guide: uv docs

If you are a developer and want to contribute to this project, you may want to have make installed as well.

⚡ Installation

Install dependencies into a local virtual environment:

uv sync --all-groups

Then, to activate the virtual environment:

On Linux / macOS:

source .venv/bin/activate

On Windows (PowerShell):

.venv\Scripts\Activate.ps1
# If your PowerShell execution policy prevents running the script, run:
powershell -ExecutionPolicy Bypass -File .venv\Scripts\Activate.ps1

On Windows (CMD):

.venv\Scripts\activate.bat

🛠️ Usage

Create your own figure

Create a new FABA figure from a folder containing MP3 files. The target figure must not already exist in the FABA library, otherwise the command will fail to avoid accidental overwrites.

For example, to create a new FABA figure with ID 4742 using the songs in /home/user/songs and copy it to the FABA box mounted at /mnt/faba/MKI01, run:

openfaba insert \
  --figure-id 4742 \
  --source /home/user/songs \
  --faba-library /mnt/faba/MKI01

Write an NFC TAG with the figure ID and enjoy it! If you need help on how todo it, these FAQs from the original wansors' project have a lot of useful information.

Add songs to an existing figure

Append additional MP3 files to an already existing figure. New tracks are added after the existing ones and never overwrite previously stored audio.

openfaba extend \
  --figure-id 4742 \
  --source /home/user/new_songs \
  --faba-library /mnt/faba/MKI01

Replace a figure

Delete an existing figure and recreate it from scratch using a new set of MP3 files. This operation removes the previous contents of the figure.

openfaba replace \
  --figure-id 4742 \
  --source /home/user/songs \
  --faba-library /mnt/faba/MKI01

Listen to some FABA songs on your computer

Extract (deobfuscate) a single figure from a FABA box and convert it back to standard MP3 files so they can be played on a computer or mobile device.

For example, to extract the Italian red elephant Ele (figure ID 0010):

openfaba extract \
  --figure-id 0010 \
  --faba-library /mnt/faba/MKI01 \
  --output /home/user/elephant_ele

Obfuscate an entire MP3 library

Convert a directory tree of MP3 files into a FABA-compatible MKI library. Subfolders named K#### are interpreted as figure IDs; otherwise a default figure ID is used.

openfaba obfuscate \
  --mp3-library /home/user/mp3_library \
  --faba-library /mnt/faba/MKI01

Deobfuscate an entire FABA library

Convert all figures from a FABA MKI library back into MP3 files, preserving the original folder structure.

openfaba deobfuscate \
  --faba-library /mnt/faba/MKI01 \
  --mp3-library /home/user/output_mp3

🪙 Resources used to create this project

📦 Tools for Developers

Common development tasks are wrapped in the Makefile for convenience.

Linting, Formatting, and Type Checking

make qa

Runs Ruff for linting and formatting, and Mypy for type checking.

Running Unit Tests

Before running tests, override any required environment variables in the .env.test file.

make test

Executes the test suite using Pytest.

Building the Project

make build

Generates a distribution package inside the dist/ directory.

Cleaning Up

make clean

Removes build artifacts, caches, and temporary files to keep your project directory clean.

Updating project version

make version

Interactively prompts you to select the type of version update to apply (major, minor, patch, tag) and automatically updates the project version accordingly.

🤝 Contributing

Contributions are welcome! Please ensure all QA checks and tests pass before opening a pull request.


🚀 Project starter provided by Cookie Pyrate

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

openfaba-0.1.2.tar.gz (15.6 kB view details)

Uploaded Source

Built Distribution

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

openfaba-0.1.2-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

File details

Details for the file openfaba-0.1.2.tar.gz.

File metadata

  • Download URL: openfaba-0.1.2.tar.gz
  • Upload date:
  • Size: 15.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for openfaba-0.1.2.tar.gz
Algorithm Hash digest
SHA256 3d7dea8472b95e0f6017a938480ed3383300e774a066cb1ece1a3349396481c3
MD5 e8d581c09a3e236b9f2d3fcd5d2e1252
BLAKE2b-256 abec5e2e625301008538b5e892486f63af6114d8e7518bdd2dcd4363df863c38

See more details on using hashes here.

File details

Details for the file openfaba-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: openfaba-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 11.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for openfaba-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 43a44ffa07c1e4ae4bb3bb00c7f00086e4820b0f8d3e543d7976a2e383663d6e
MD5 8b189f862de21934336d1389b9345e52
BLAKE2b-256 455b07a933bea98475ee65a40623343a5bec3f9ed818e95bed207b381fc8405b

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