openfaba 0.1.2__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. openfaba-0.2.0/PKG-INFO +151 -0
  2. openfaba-0.2.0/README.md +138 -0
  3. {openfaba-0.1.2 → openfaba-0.2.0}/pyproject.toml +2 -2
  4. {openfaba-0.1.2 → openfaba-0.2.0}/src/openfaba/__init__.py +1 -1
  5. openfaba-0.2.0/src/openfaba.egg-info/PKG-INFO +151 -0
  6. openfaba-0.1.2/PKG-INFO +0 -231
  7. openfaba-0.1.2/README.md +0 -218
  8. openfaba-0.1.2/src/openfaba.egg-info/PKG-INFO +0 -231
  9. {openfaba-0.1.2 → openfaba-0.2.0}/LICENSE +0 -0
  10. {openfaba-0.1.2 → openfaba-0.2.0}/setup.cfg +0 -0
  11. {openfaba-0.1.2 → openfaba-0.2.0}/src/openfaba/cli.py +0 -0
  12. {openfaba-0.1.2 → openfaba-0.2.0}/src/openfaba/consts.py +0 -0
  13. {openfaba-0.1.2 → openfaba-0.2.0}/src/openfaba/io.py +0 -0
  14. {openfaba-0.1.2 → openfaba-0.2.0}/src/openfaba/main.py +0 -0
  15. {openfaba-0.1.2 → openfaba-0.2.0}/src/openfaba/media.py +0 -0
  16. {openfaba-0.1.2 → openfaba-0.2.0}/src/openfaba/py.typed +0 -0
  17. {openfaba-0.1.2 → openfaba-0.2.0}/src/openfaba/utils.py +0 -0
  18. {openfaba-0.1.2 → openfaba-0.2.0}/src/openfaba.egg-info/SOURCES.txt +0 -0
  19. {openfaba-0.1.2 → openfaba-0.2.0}/src/openfaba.egg-info/dependency_links.txt +0 -0
  20. {openfaba-0.1.2 → openfaba-0.2.0}/src/openfaba.egg-info/entry_points.txt +0 -0
  21. {openfaba-0.1.2 → openfaba-0.2.0}/src/openfaba.egg-info/requires.txt +0 -0
  22. {openfaba-0.1.2 → openfaba-0.2.0}/src/openfaba.egg-info/top_level.txt +0 -0
  23. {openfaba-0.1.2 → openfaba-0.2.0}/tests/test_cli.py +0 -0
  24. {openfaba-0.1.2 → openfaba-0.2.0}/tests/test_main.py +0 -0
  25. {openfaba-0.1.2 → openfaba-0.2.0}/tests/test_media.py +0 -0
@@ -0,0 +1,151 @@
1
+ Metadata-Version: 2.4
2
+ Name: openfaba
3
+ Version: 0.2.0
4
+ Summary: A modern reimplementation of redele.
5
+ Author-email: Gustavo Viera López <gvieralopez@gmail.com>
6
+ License: MIT
7
+ Requires-Python: >=3.13
8
+ Description-Content-Type: text/markdown
9
+ License-File: LICENSE
10
+ Requires-Dist: typer>=0.9.0
11
+ Requires-Dist: mutagen>=1.47.0
12
+ Dynamic: license-file
13
+
14
+ # openFABA
15
+
16
+ **openFABA** converts regular MP3 files into the special format used by the FABA storytelling
17
+ box and also lets you extract playable MP3s back from a FABA device. This project builds upon the
18
+ reverse-engineering work by [wansors](https://github.com/wansors/myfaba-hacks/blob/main/python/redele.py).
19
+ At the moment, **openFABA** supports **only the original FABA device**.
20
+
21
+
22
+ > 🚨 **Disclaimer — Use responsibly**
23
+ >
24
+ > **openFABA** is an independent project and is **not affiliated with or endorsed by FABA**.
25
+ > This software is provided *as is*, with no warranties.
26
+ >
27
+ > You are responsible for how you use this tool and for any consequences that may arise,
28
+ > including device malfunction or account-related actions. Some features may conflict
29
+ > with FABA’s terms of service or usage policies.
30
+ >
31
+ > This project aims to simplify the creation of custom, FABA-compatible figures and to
32
+ > personalize figures you already own. We do **not** endorse piracy, copyright
33
+ > infringement, or misuse that could negatively impact FABA or its ecosystem.
34
+ > Please support FABA by purchasing their products.
35
+
36
+
37
+ ## Quick start
38
+
39
+ Make sure you have Python 3.13 or higher and install the tool from PyPI:
40
+
41
+ ```bash
42
+ pip install openfaba
43
+ ```
44
+
45
+ If you are a developer, want to run tests, install from source or follow developer
46
+ instructions see the developers guide: [DEVELOPERS.md](DEVELOPERS.md)
47
+
48
+ ## Usage
49
+
50
+ **openFABA** supports the following commands:
51
+
52
+ - `insert` — create a new figure from MP3s and add to a FABA library
53
+ - `extend` — add songs to an existing figure (appends; never overwrites)
54
+ - `replace` — remove and recreate a figure's songs from a new set of MP3s
55
+ - `extract` — deobfuscate all songs from a figure back into MP3 files
56
+ - `obfuscate` / `deobfuscate` — convert entire libraries to/from FABA format
57
+
58
+ Next, you can find an example of usage for each of them.
59
+
60
+ ### Create a new figure:
61
+
62
+ Create a new FABA figure from a folder containing MP3 files. The target figure must
63
+ not already exist in the FABA library, otherwise the command will fail to avoid
64
+ accidental overwrites.
65
+
66
+ For example, to create a new FABA figure with ID `4742` using the songs in `/home/user/songs`
67
+ and copy it to the FABA box mounted at `/mnt/faba/MKI01`, run:
68
+
69
+ ```bash
70
+ openfaba insert --figure-id 4742 --source /home/user/songs --faba-library /mnt/faba/MKI01
71
+ ```
72
+
73
+ Write an NFC TAG with the data 02190530**4742**00 and enjoy it! If you need help on how todo it,
74
+ [these FAQs](https://github.com/wansors/myfaba-hacks/blob/main/FAQ.md) from the original
75
+ wansors' project have a lot of useful information.
76
+
77
+ ### Add songs to an existing figure:
78
+
79
+ Append additional MP3 files to an already existing figure. New tracks are added after the
80
+ existing ones and never overwrite previously stored audio.
81
+
82
+ ```bash
83
+ openfaba extend --figure-id 4742 --source /home/user/new_songs --faba-library /mnt/faba/MKI01
84
+ ```
85
+
86
+ ### Replace a figure completely:
87
+
88
+ Delete an existing figure's sounds and recreate them from scratch using a new set of MP3
89
+ files. This operation removes the previous contents of the figure.
90
+
91
+ ```bash
92
+ openfaba replace --figure-id 4742 --source /home/user/songs --faba-library /mnt/faba/MKI01
93
+ ```
94
+
95
+ ### Listen to some FABA songs from a given figure on your computer:
96
+
97
+ Extract (deobfuscate) a single figure from a FABA box and convert it back to standard MP3
98
+ files so they can be played on a computer or mobile device.
99
+
100
+ For example, to extract the Italian red elephant **Ele** (figure ID `0010`):
101
+
102
+ ```bash
103
+ openfaba extract --figure-id 0010 --faba-library /mnt/faba/MKI01 --output /home/user/elephant_ele
104
+ ```
105
+
106
+ ### Deobfuscate a FABA library back to MP3s:
107
+
108
+ Convert all figures from a FABA MKI library back into MP3 files, preserving the original
109
+ folder structure.
110
+
111
+ ```bash
112
+ openfaba deobfuscate --faba-library /mnt/faba/MKI01 --mp3-library /home/user/output_mp3
113
+ ```
114
+
115
+ ### Obfuscate a whole MP3 library into MKI structure:
116
+
117
+ Convert a directory tree of MP3 files into a FABA-compatible MKI library. Subfolders named
118
+ `K####` are interpreted as figure IDs; otherwise a default figure ID is used.
119
+
120
+ ```bash
121
+ openfaba obfuscate --mp3-library /home/user/mp3_library --faba-library /mnt/faba/MKI01
122
+ ```
123
+
124
+ ## Roadmap
125
+
126
+ - **Add a CSV with figure metadata** — provide a machine-readable `figures.csv` that lists
127
+ each figure ID, name, language, source URL and other metadata for either users and tools
128
+ reference.
129
+ - **Add a `details` command** — add a `openfaba details <figure-id>` command
130
+ that looks up and prints human-friendly metadata from the CSV (name, tracks,
131
+ language, notes, and source link).
132
+ - **Auto-update script (scraper)** — include a script that can periodically fetch
133
+ metadata from MyFaba and update `figures.csv`; documented in `DEVELOPERS.md`.
134
+ - **Multi-device support (FABA+)** — plan and expose an abstraction layer so the
135
+ obfuscation/deobfuscation pipeline can target multiple FABA-compatible devices
136
+ (different file layouts or obfuscation).
137
+ - **UI** — explore a small GUI with similar functionality of current CLI.
138
+
139
+ ---
140
+
141
+ ## Resources
142
+
143
+ - [myfaba-hacks GitHub repository](https://github.com/wansors/myfaba-hacks)
144
+ - [Hacking MyFaba article](https://medium.com/@wansors/hacking-myfaba-an-educational-journey-into-storytelling-box-customization-cc6fc5db719d)
145
+ - [Myfaba Store](https://www.myfaba.it/prodotti-sonori/acquista-per-tipologia/personaggi-sonori/)
146
+
147
+
148
+ ---
149
+
150
+ If you'd like the full developer guide (installation from source, tests, linters,
151
+ and build steps), open [DEVELOPERS.md](DEVELOPERS.md).
@@ -0,0 +1,138 @@
1
+ # openFABA
2
+
3
+ **openFABA** converts regular MP3 files into the special format used by the FABA storytelling
4
+ box and also lets you extract playable MP3s back from a FABA device. This project builds upon the
5
+ reverse-engineering work by [wansors](https://github.com/wansors/myfaba-hacks/blob/main/python/redele.py).
6
+ At the moment, **openFABA** supports **only the original FABA device**.
7
+
8
+
9
+ > 🚨 **Disclaimer — Use responsibly**
10
+ >
11
+ > **openFABA** is an independent project and is **not affiliated with or endorsed by FABA**.
12
+ > This software is provided *as is*, with no warranties.
13
+ >
14
+ > You are responsible for how you use this tool and for any consequences that may arise,
15
+ > including device malfunction or account-related actions. Some features may conflict
16
+ > with FABA’s terms of service or usage policies.
17
+ >
18
+ > This project aims to simplify the creation of custom, FABA-compatible figures and to
19
+ > personalize figures you already own. We do **not** endorse piracy, copyright
20
+ > infringement, or misuse that could negatively impact FABA or its ecosystem.
21
+ > Please support FABA by purchasing their products.
22
+
23
+
24
+ ## Quick start
25
+
26
+ Make sure you have Python 3.13 or higher and install the tool from PyPI:
27
+
28
+ ```bash
29
+ pip install openfaba
30
+ ```
31
+
32
+ If you are a developer, want to run tests, install from source or follow developer
33
+ instructions see the developers guide: [DEVELOPERS.md](DEVELOPERS.md)
34
+
35
+ ## Usage
36
+
37
+ **openFABA** supports the following commands:
38
+
39
+ - `insert` — create a new figure from MP3s and add to a FABA library
40
+ - `extend` — add songs to an existing figure (appends; never overwrites)
41
+ - `replace` — remove and recreate a figure's songs from a new set of MP3s
42
+ - `extract` — deobfuscate all songs from a figure back into MP3 files
43
+ - `obfuscate` / `deobfuscate` — convert entire libraries to/from FABA format
44
+
45
+ Next, you can find an example of usage for each of them.
46
+
47
+ ### Create a new figure:
48
+
49
+ Create a new FABA figure from a folder containing MP3 files. The target figure must
50
+ not already exist in the FABA library, otherwise the command will fail to avoid
51
+ accidental overwrites.
52
+
53
+ For example, to create a new FABA figure with ID `4742` using the songs in `/home/user/songs`
54
+ and copy it to the FABA box mounted at `/mnt/faba/MKI01`, run:
55
+
56
+ ```bash
57
+ openfaba insert --figure-id 4742 --source /home/user/songs --faba-library /mnt/faba/MKI01
58
+ ```
59
+
60
+ Write an NFC TAG with the data 02190530**4742**00 and enjoy it! If you need help on how todo it,
61
+ [these FAQs](https://github.com/wansors/myfaba-hacks/blob/main/FAQ.md) from the original
62
+ wansors' project have a lot of useful information.
63
+
64
+ ### Add songs to an existing figure:
65
+
66
+ Append additional MP3 files to an already existing figure. New tracks are added after the
67
+ existing ones and never overwrite previously stored audio.
68
+
69
+ ```bash
70
+ openfaba extend --figure-id 4742 --source /home/user/new_songs --faba-library /mnt/faba/MKI01
71
+ ```
72
+
73
+ ### Replace a figure completely:
74
+
75
+ Delete an existing figure's sounds and recreate them from scratch using a new set of MP3
76
+ files. This operation removes the previous contents of the figure.
77
+
78
+ ```bash
79
+ openfaba replace --figure-id 4742 --source /home/user/songs --faba-library /mnt/faba/MKI01
80
+ ```
81
+
82
+ ### Listen to some FABA songs from a given figure on your computer:
83
+
84
+ Extract (deobfuscate) a single figure from a FABA box and convert it back to standard MP3
85
+ files so they can be played on a computer or mobile device.
86
+
87
+ For example, to extract the Italian red elephant **Ele** (figure ID `0010`):
88
+
89
+ ```bash
90
+ openfaba extract --figure-id 0010 --faba-library /mnt/faba/MKI01 --output /home/user/elephant_ele
91
+ ```
92
+
93
+ ### Deobfuscate a FABA library back to MP3s:
94
+
95
+ Convert all figures from a FABA MKI library back into MP3 files, preserving the original
96
+ folder structure.
97
+
98
+ ```bash
99
+ openfaba deobfuscate --faba-library /mnt/faba/MKI01 --mp3-library /home/user/output_mp3
100
+ ```
101
+
102
+ ### Obfuscate a whole MP3 library into MKI structure:
103
+
104
+ Convert a directory tree of MP3 files into a FABA-compatible MKI library. Subfolders named
105
+ `K####` are interpreted as figure IDs; otherwise a default figure ID is used.
106
+
107
+ ```bash
108
+ openfaba obfuscate --mp3-library /home/user/mp3_library --faba-library /mnt/faba/MKI01
109
+ ```
110
+
111
+ ## Roadmap
112
+
113
+ - **Add a CSV with figure metadata** — provide a machine-readable `figures.csv` that lists
114
+ each figure ID, name, language, source URL and other metadata for either users and tools
115
+ reference.
116
+ - **Add a `details` command** — add a `openfaba details <figure-id>` command
117
+ that looks up and prints human-friendly metadata from the CSV (name, tracks,
118
+ language, notes, and source link).
119
+ - **Auto-update script (scraper)** — include a script that can periodically fetch
120
+ metadata from MyFaba and update `figures.csv`; documented in `DEVELOPERS.md`.
121
+ - **Multi-device support (FABA+)** — plan and expose an abstraction layer so the
122
+ obfuscation/deobfuscation pipeline can target multiple FABA-compatible devices
123
+ (different file layouts or obfuscation).
124
+ - **UI** — explore a small GUI with similar functionality of current CLI.
125
+
126
+ ---
127
+
128
+ ## Resources
129
+
130
+ - [myfaba-hacks GitHub repository](https://github.com/wansors/myfaba-hacks)
131
+ - [Hacking MyFaba article](https://medium.com/@wansors/hacking-myfaba-an-educational-journey-into-storytelling-box-customization-cc6fc5db719d)
132
+ - [Myfaba Store](https://www.myfaba.it/prodotti-sonori/acquista-per-tipologia/personaggi-sonori/)
133
+
134
+
135
+ ---
136
+
137
+ If you'd like the full developer guide (installation from source, tests, linters,
138
+ and build steps), open [DEVELOPERS.md](DEVELOPERS.md).
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "openfaba"
3
- version = "0.1.2"
3
+ version = "0.2.0"
4
4
  description = "A modern reimplementation of redele."
5
5
  readme = "README.md"
6
6
  requires-python = ">= 3.13"
@@ -110,7 +110,7 @@ env_override_existing_values = 1
110
110
  env_files = [".env.test"]
111
111
 
112
112
  [tool.bumpver]
113
- current_version = "0.1.2"
113
+ current_version = "0.2.0"
114
114
  version_pattern = "MAJOR.MINOR.PATCH[-TAGNUM]"
115
115
 
116
116
  [tool.bumpver.file_patterns]
@@ -1,6 +1,6 @@
1
1
  import logging
2
2
 
3
- __version__ = "0.1.2"
3
+ __version__ = "0.2.0"
4
4
 
5
5
  logging.basicConfig(level=logging.INFO)
6
6
  logger = logging.getLogger(__name__)
@@ -0,0 +1,151 @@
1
+ Metadata-Version: 2.4
2
+ Name: openfaba
3
+ Version: 0.2.0
4
+ Summary: A modern reimplementation of redele.
5
+ Author-email: Gustavo Viera López <gvieralopez@gmail.com>
6
+ License: MIT
7
+ Requires-Python: >=3.13
8
+ Description-Content-Type: text/markdown
9
+ License-File: LICENSE
10
+ Requires-Dist: typer>=0.9.0
11
+ Requires-Dist: mutagen>=1.47.0
12
+ Dynamic: license-file
13
+
14
+ # openFABA
15
+
16
+ **openFABA** converts regular MP3 files into the special format used by the FABA storytelling
17
+ box and also lets you extract playable MP3s back from a FABA device. This project builds upon the
18
+ reverse-engineering work by [wansors](https://github.com/wansors/myfaba-hacks/blob/main/python/redele.py).
19
+ At the moment, **openFABA** supports **only the original FABA device**.
20
+
21
+
22
+ > 🚨 **Disclaimer — Use responsibly**
23
+ >
24
+ > **openFABA** is an independent project and is **not affiliated with or endorsed by FABA**.
25
+ > This software is provided *as is*, with no warranties.
26
+ >
27
+ > You are responsible for how you use this tool and for any consequences that may arise,
28
+ > including device malfunction or account-related actions. Some features may conflict
29
+ > with FABA’s terms of service or usage policies.
30
+ >
31
+ > This project aims to simplify the creation of custom, FABA-compatible figures and to
32
+ > personalize figures you already own. We do **not** endorse piracy, copyright
33
+ > infringement, or misuse that could negatively impact FABA or its ecosystem.
34
+ > Please support FABA by purchasing their products.
35
+
36
+
37
+ ## Quick start
38
+
39
+ Make sure you have Python 3.13 or higher and install the tool from PyPI:
40
+
41
+ ```bash
42
+ pip install openfaba
43
+ ```
44
+
45
+ If you are a developer, want to run tests, install from source or follow developer
46
+ instructions see the developers guide: [DEVELOPERS.md](DEVELOPERS.md)
47
+
48
+ ## Usage
49
+
50
+ **openFABA** supports the following commands:
51
+
52
+ - `insert` — create a new figure from MP3s and add to a FABA library
53
+ - `extend` — add songs to an existing figure (appends; never overwrites)
54
+ - `replace` — remove and recreate a figure's songs from a new set of MP3s
55
+ - `extract` — deobfuscate all songs from a figure back into MP3 files
56
+ - `obfuscate` / `deobfuscate` — convert entire libraries to/from FABA format
57
+
58
+ Next, you can find an example of usage for each of them.
59
+
60
+ ### Create a new figure:
61
+
62
+ Create a new FABA figure from a folder containing MP3 files. The target figure must
63
+ not already exist in the FABA library, otherwise the command will fail to avoid
64
+ accidental overwrites.
65
+
66
+ For example, to create a new FABA figure with ID `4742` using the songs in `/home/user/songs`
67
+ and copy it to the FABA box mounted at `/mnt/faba/MKI01`, run:
68
+
69
+ ```bash
70
+ openfaba insert --figure-id 4742 --source /home/user/songs --faba-library /mnt/faba/MKI01
71
+ ```
72
+
73
+ Write an NFC TAG with the data 02190530**4742**00 and enjoy it! If you need help on how todo it,
74
+ [these FAQs](https://github.com/wansors/myfaba-hacks/blob/main/FAQ.md) from the original
75
+ wansors' project have a lot of useful information.
76
+
77
+ ### Add songs to an existing figure:
78
+
79
+ Append additional MP3 files to an already existing figure. New tracks are added after the
80
+ existing ones and never overwrite previously stored audio.
81
+
82
+ ```bash
83
+ openfaba extend --figure-id 4742 --source /home/user/new_songs --faba-library /mnt/faba/MKI01
84
+ ```
85
+
86
+ ### Replace a figure completely:
87
+
88
+ Delete an existing figure's sounds and recreate them from scratch using a new set of MP3
89
+ files. This operation removes the previous contents of the figure.
90
+
91
+ ```bash
92
+ openfaba replace --figure-id 4742 --source /home/user/songs --faba-library /mnt/faba/MKI01
93
+ ```
94
+
95
+ ### Listen to some FABA songs from a given figure on your computer:
96
+
97
+ Extract (deobfuscate) a single figure from a FABA box and convert it back to standard MP3
98
+ files so they can be played on a computer or mobile device.
99
+
100
+ For example, to extract the Italian red elephant **Ele** (figure ID `0010`):
101
+
102
+ ```bash
103
+ openfaba extract --figure-id 0010 --faba-library /mnt/faba/MKI01 --output /home/user/elephant_ele
104
+ ```
105
+
106
+ ### Deobfuscate a FABA library back to MP3s:
107
+
108
+ Convert all figures from a FABA MKI library back into MP3 files, preserving the original
109
+ folder structure.
110
+
111
+ ```bash
112
+ openfaba deobfuscate --faba-library /mnt/faba/MKI01 --mp3-library /home/user/output_mp3
113
+ ```
114
+
115
+ ### Obfuscate a whole MP3 library into MKI structure:
116
+
117
+ Convert a directory tree of MP3 files into a FABA-compatible MKI library. Subfolders named
118
+ `K####` are interpreted as figure IDs; otherwise a default figure ID is used.
119
+
120
+ ```bash
121
+ openfaba obfuscate --mp3-library /home/user/mp3_library --faba-library /mnt/faba/MKI01
122
+ ```
123
+
124
+ ## Roadmap
125
+
126
+ - **Add a CSV with figure metadata** — provide a machine-readable `figures.csv` that lists
127
+ each figure ID, name, language, source URL and other metadata for either users and tools
128
+ reference.
129
+ - **Add a `details` command** — add a `openfaba details <figure-id>` command
130
+ that looks up and prints human-friendly metadata from the CSV (name, tracks,
131
+ language, notes, and source link).
132
+ - **Auto-update script (scraper)** — include a script that can periodically fetch
133
+ metadata from MyFaba and update `figures.csv`; documented in `DEVELOPERS.md`.
134
+ - **Multi-device support (FABA+)** — plan and expose an abstraction layer so the
135
+ obfuscation/deobfuscation pipeline can target multiple FABA-compatible devices
136
+ (different file layouts or obfuscation).
137
+ - **UI** — explore a small GUI with similar functionality of current CLI.
138
+
139
+ ---
140
+
141
+ ## Resources
142
+
143
+ - [myfaba-hacks GitHub repository](https://github.com/wansors/myfaba-hacks)
144
+ - [Hacking MyFaba article](https://medium.com/@wansors/hacking-myfaba-an-educational-journey-into-storytelling-box-customization-cc6fc5db719d)
145
+ - [Myfaba Store](https://www.myfaba.it/prodotti-sonori/acquista-per-tipologia/personaggi-sonori/)
146
+
147
+
148
+ ---
149
+
150
+ If you'd like the full developer guide (installation from source, tests, linters,
151
+ and build steps), open [DEVELOPERS.md](DEVELOPERS.md).
openfaba-0.1.2/PKG-INFO DELETED
@@ -1,231 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: openfaba
3
- Version: 0.1.2
4
- Summary: A modern reimplementation of redele.
5
- Author-email: Gustavo Viera López <gvieralopez@gmail.com>
6
- License: MIT
7
- Requires-Python: >=3.13
8
- Description-Content-Type: text/markdown
9
- License-File: LICENSE
10
- Requires-Dist: typer>=0.9.0
11
- Requires-Dist: mutagen>=1.47.0
12
- Dynamic: license-file
13
-
14
- # openFABA
15
-
16
- **openFABA** is a command-line tool for inspecting, extracting, and exporting audio
17
- files for the **FABA** storytelling box. It allows you to convert standard MP3 files
18
- into FABA-compatible files for specific figures.
19
-
20
- This project builds upon the reverse-engineering work by
21
- [wansors](https://github.com/wansors/myfaba-hacks/blob/main/python/redele.py).
22
- At the moment, openFABA supports **only the original FABA device**.
23
-
24
- ### Disclaimer
25
-
26
- openFABA is an independent project and is **not affiliated with or endorsed by FABA**.
27
-
28
- This software is provided *as is*, without warranties of any kind. You are responsible
29
- for how you use it and for any consequences that may arise, including device malfunction
30
- or account-related actions. Some features may conflict with FABA’s terms of service or
31
- usage policies.
32
-
33
- The goal of openFABA is to:
34
-
35
- * simplify the creation of custom, FABA-compatible figures
36
- * enable personalization of figures you already own
37
-
38
- We do **not** endorse music piracy, copyright infringement, or any misuse that could
39
- negatively impact FABA or its ecosystem. FABA is a great company, and we encourage
40
- supporting them by purchasing their products.
41
-
42
- Use this tool responsibly and at your own risk.
43
-
44
-
45
- ## 🚀 Prerequisites
46
-
47
- Before working with this project, make sure you have [uv](https://docs.astral.sh/uv/) installed. 👉 Install guide: [uv docs](https://docs.astral.sh/uv/getting-started/installation/)
48
-
49
- If you are a developer and want to contribute to this project, you may want to have
50
- [make](https://www.gnu.org/software/make/) installed as well.
51
-
52
-
53
- ## ⚡ Installation
54
-
55
- Install dependencies into a local virtual environment:
56
-
57
- ```bash
58
- uv sync --all-groups
59
- ```
60
-
61
- Then, to activate the virtual environment:
62
-
63
- On Linux / macOS:
64
-
65
- ```bash
66
- source .venv/bin/activate
67
- ```
68
-
69
- On Windows (PowerShell):
70
-
71
- ```powershell
72
- .venv\Scripts\Activate.ps1
73
- # If your PowerShell execution policy prevents running the script, run:
74
- powershell -ExecutionPolicy Bypass -File .venv\Scripts\Activate.ps1
75
- ```
76
-
77
- On Windows (CMD):
78
-
79
- ```cmd
80
- .venv\Scripts\activate.bat
81
- ```
82
-
83
- ## 🛠️ Usage
84
-
85
- ### Create your own figure
86
-
87
- Create a new FABA figure from a folder containing MP3 files. The target figure must
88
- not already exist in the FABA library, otherwise the command will fail to avoid
89
- accidental overwrites.
90
-
91
- For example, to create a new FABA figure with ID `4742` using the songs in `/home/user/songs`
92
- and copy it to the FABA box mounted at `/mnt/faba/MKI01`, run:
93
-
94
- ```bash
95
- openfaba insert \
96
- --figure-id 4742 \
97
- --source /home/user/songs \
98
- --faba-library /mnt/faba/MKI01
99
- ```
100
-
101
- Write an NFC TAG with the figure ID and enjoy it! If you need help on how todo it,
102
- [these FAQs](https://github.com/wansors/myfaba-hacks/blob/main/FAQ.md) from the original
103
- wansors' project have a lot of useful information.
104
-
105
- ### Add songs to an existing figure
106
-
107
- Append additional MP3 files to an already existing figure. New tracks are added after the
108
- existing ones and never overwrite previously stored audio.
109
-
110
- ```bash
111
- openfaba extend \
112
- --figure-id 4742 \
113
- --source /home/user/new_songs \
114
- --faba-library /mnt/faba/MKI01
115
- ```
116
-
117
-
118
- ### Replace a figure
119
-
120
- Delete an existing figure and recreate it from scratch using a new set of MP3 files. This
121
- operation removes the previous contents of the figure.
122
-
123
- ```bash
124
- openfaba replace \
125
- --figure-id 4742 \
126
- --source /home/user/songs \
127
- --faba-library /mnt/faba/MKI01
128
- ```
129
-
130
-
131
- ### Listen to some FABA songs on your computer
132
-
133
- Extract (deobfuscate) a single figure from a FABA box and convert it back to standard MP3
134
- files so they can be played on a computer or mobile device.
135
-
136
- For example, to extract the Italian red elephant **Ele** (figure ID `0010`):
137
-
138
- ```bash
139
- openfaba extract \
140
- --figure-id 0010 \
141
- --faba-library /mnt/faba/MKI01 \
142
- --output /home/user/elephant_ele
143
- ```
144
-
145
-
146
- ### Obfuscate an entire MP3 library
147
-
148
- Convert a directory tree of MP3 files into a FABA-compatible MKI library. Subfolders named
149
- `K####` are interpreted as figure IDs; otherwise a default figure ID is used.
150
-
151
- ```bash
152
- openfaba obfuscate \
153
- --mp3-library /home/user/mp3_library \
154
- --faba-library /mnt/faba/MKI01
155
- ```
156
-
157
-
158
- ### Deobfuscate an entire FABA library
159
-
160
- Convert all figures from a FABA MKI library back into MP3 files, preserving the original
161
- folder structure.
162
-
163
- ```bash
164
- openfaba deobfuscate \
165
- --faba-library /mnt/faba/MKI01 \
166
- --mp3-library /home/user/output_mp3
167
- ```
168
-
169
- ## 🪙 Resources used to create this project
170
-
171
- - [myfaba-hacks GitHub repository](https://github.com/wansors/myfaba-hacks)
172
- - [Hacking MyFaba Medium Article](https://medium.com/@wansors/hacking-myfaba-an-educational-journey-into-storytelling-box-customization-cc6fc5db719d)
173
- - [Myfaba Store](https://www.myfaba.it/prodotti-sonori/acquista-per-tipologia/personaggi-sonori/)
174
-
175
-
176
- ## 📦 Tools for Developers
177
-
178
- Common development tasks are wrapped in the `Makefile` for convenience.
179
-
180
- ### Linting, Formatting, and Type Checking
181
-
182
- ```bash
183
- make qa
184
- ```
185
-
186
- Runs **Ruff** for linting and formatting, and **Mypy** for type checking.
187
-
188
- ### Running Unit Tests
189
-
190
- Before running tests, override any required environment variables in the `.env.test` file.
191
-
192
- ```bash
193
- make test
194
- ```
195
-
196
- Executes the test suite using **Pytest**.
197
-
198
- ### Building the Project
199
-
200
- ```bash
201
- make build
202
- ```
203
-
204
- Generates a distribution package inside the `dist/` directory.
205
-
206
- ### Cleaning Up
207
-
208
- ```bash
209
- make clean
210
- ```
211
-
212
- Removes build artifacts, caches, and temporary files to keep your project directory clean.
213
-
214
- ### Updating project version
215
-
216
- ```bash
217
- make version
218
- ```
219
-
220
- Interactively prompts you to select the type of version update to apply (major, minor, patch, tag)
221
- and automatically updates the project version accordingly.
222
-
223
-
224
- ## 🤝 Contributing
225
-
226
- Contributions are welcome!
227
- Please ensure all QA checks and tests pass before opening a pull request.
228
-
229
- ---
230
-
231
- <sub>🚀 Project starter provided by [Cookie Pyrate](https://github.com/gvieralopez/cookie-pyrate)</sub>
openfaba-0.1.2/README.md DELETED
@@ -1,218 +0,0 @@
1
- # openFABA
2
-
3
- **openFABA** is a command-line tool for inspecting, extracting, and exporting audio
4
- files for the **FABA** storytelling box. It allows you to convert standard MP3 files
5
- into FABA-compatible files for specific figures.
6
-
7
- This project builds upon the reverse-engineering work by
8
- [wansors](https://github.com/wansors/myfaba-hacks/blob/main/python/redele.py).
9
- At the moment, openFABA supports **only the original FABA device**.
10
-
11
- ### Disclaimer
12
-
13
- openFABA is an independent project and is **not affiliated with or endorsed by FABA**.
14
-
15
- This software is provided *as is*, without warranties of any kind. You are responsible
16
- for how you use it and for any consequences that may arise, including device malfunction
17
- or account-related actions. Some features may conflict with FABA’s terms of service or
18
- usage policies.
19
-
20
- The goal of openFABA is to:
21
-
22
- * simplify the creation of custom, FABA-compatible figures
23
- * enable personalization of figures you already own
24
-
25
- We do **not** endorse music piracy, copyright infringement, or any misuse that could
26
- negatively impact FABA or its ecosystem. FABA is a great company, and we encourage
27
- supporting them by purchasing their products.
28
-
29
- Use this tool responsibly and at your own risk.
30
-
31
-
32
- ## 🚀 Prerequisites
33
-
34
- Before working with this project, make sure you have [uv](https://docs.astral.sh/uv/) installed. 👉 Install guide: [uv docs](https://docs.astral.sh/uv/getting-started/installation/)
35
-
36
- If you are a developer and want to contribute to this project, you may want to have
37
- [make](https://www.gnu.org/software/make/) installed as well.
38
-
39
-
40
- ## ⚡ Installation
41
-
42
- Install dependencies into a local virtual environment:
43
-
44
- ```bash
45
- uv sync --all-groups
46
- ```
47
-
48
- Then, to activate the virtual environment:
49
-
50
- On Linux / macOS:
51
-
52
- ```bash
53
- source .venv/bin/activate
54
- ```
55
-
56
- On Windows (PowerShell):
57
-
58
- ```powershell
59
- .venv\Scripts\Activate.ps1
60
- # If your PowerShell execution policy prevents running the script, run:
61
- powershell -ExecutionPolicy Bypass -File .venv\Scripts\Activate.ps1
62
- ```
63
-
64
- On Windows (CMD):
65
-
66
- ```cmd
67
- .venv\Scripts\activate.bat
68
- ```
69
-
70
- ## 🛠️ Usage
71
-
72
- ### Create your own figure
73
-
74
- Create a new FABA figure from a folder containing MP3 files. The target figure must
75
- not already exist in the FABA library, otherwise the command will fail to avoid
76
- accidental overwrites.
77
-
78
- For example, to create a new FABA figure with ID `4742` using the songs in `/home/user/songs`
79
- and copy it to the FABA box mounted at `/mnt/faba/MKI01`, run:
80
-
81
- ```bash
82
- openfaba insert \
83
- --figure-id 4742 \
84
- --source /home/user/songs \
85
- --faba-library /mnt/faba/MKI01
86
- ```
87
-
88
- Write an NFC TAG with the figure ID and enjoy it! If you need help on how todo it,
89
- [these FAQs](https://github.com/wansors/myfaba-hacks/blob/main/FAQ.md) from the original
90
- wansors' project have a lot of useful information.
91
-
92
- ### Add songs to an existing figure
93
-
94
- Append additional MP3 files to an already existing figure. New tracks are added after the
95
- existing ones and never overwrite previously stored audio.
96
-
97
- ```bash
98
- openfaba extend \
99
- --figure-id 4742 \
100
- --source /home/user/new_songs \
101
- --faba-library /mnt/faba/MKI01
102
- ```
103
-
104
-
105
- ### Replace a figure
106
-
107
- Delete an existing figure and recreate it from scratch using a new set of MP3 files. This
108
- operation removes the previous contents of the figure.
109
-
110
- ```bash
111
- openfaba replace \
112
- --figure-id 4742 \
113
- --source /home/user/songs \
114
- --faba-library /mnt/faba/MKI01
115
- ```
116
-
117
-
118
- ### Listen to some FABA songs on your computer
119
-
120
- Extract (deobfuscate) a single figure from a FABA box and convert it back to standard MP3
121
- files so they can be played on a computer or mobile device.
122
-
123
- For example, to extract the Italian red elephant **Ele** (figure ID `0010`):
124
-
125
- ```bash
126
- openfaba extract \
127
- --figure-id 0010 \
128
- --faba-library /mnt/faba/MKI01 \
129
- --output /home/user/elephant_ele
130
- ```
131
-
132
-
133
- ### Obfuscate an entire MP3 library
134
-
135
- Convert a directory tree of MP3 files into a FABA-compatible MKI library. Subfolders named
136
- `K####` are interpreted as figure IDs; otherwise a default figure ID is used.
137
-
138
- ```bash
139
- openfaba obfuscate \
140
- --mp3-library /home/user/mp3_library \
141
- --faba-library /mnt/faba/MKI01
142
- ```
143
-
144
-
145
- ### Deobfuscate an entire FABA library
146
-
147
- Convert all figures from a FABA MKI library back into MP3 files, preserving the original
148
- folder structure.
149
-
150
- ```bash
151
- openfaba deobfuscate \
152
- --faba-library /mnt/faba/MKI01 \
153
- --mp3-library /home/user/output_mp3
154
- ```
155
-
156
- ## 🪙 Resources used to create this project
157
-
158
- - [myfaba-hacks GitHub repository](https://github.com/wansors/myfaba-hacks)
159
- - [Hacking MyFaba Medium Article](https://medium.com/@wansors/hacking-myfaba-an-educational-journey-into-storytelling-box-customization-cc6fc5db719d)
160
- - [Myfaba Store](https://www.myfaba.it/prodotti-sonori/acquista-per-tipologia/personaggi-sonori/)
161
-
162
-
163
- ## 📦 Tools for Developers
164
-
165
- Common development tasks are wrapped in the `Makefile` for convenience.
166
-
167
- ### Linting, Formatting, and Type Checking
168
-
169
- ```bash
170
- make qa
171
- ```
172
-
173
- Runs **Ruff** for linting and formatting, and **Mypy** for type checking.
174
-
175
- ### Running Unit Tests
176
-
177
- Before running tests, override any required environment variables in the `.env.test` file.
178
-
179
- ```bash
180
- make test
181
- ```
182
-
183
- Executes the test suite using **Pytest**.
184
-
185
- ### Building the Project
186
-
187
- ```bash
188
- make build
189
- ```
190
-
191
- Generates a distribution package inside the `dist/` directory.
192
-
193
- ### Cleaning Up
194
-
195
- ```bash
196
- make clean
197
- ```
198
-
199
- Removes build artifacts, caches, and temporary files to keep your project directory clean.
200
-
201
- ### Updating project version
202
-
203
- ```bash
204
- make version
205
- ```
206
-
207
- Interactively prompts you to select the type of version update to apply (major, minor, patch, tag)
208
- and automatically updates the project version accordingly.
209
-
210
-
211
- ## 🤝 Contributing
212
-
213
- Contributions are welcome!
214
- Please ensure all QA checks and tests pass before opening a pull request.
215
-
216
- ---
217
-
218
- <sub>🚀 Project starter provided by [Cookie Pyrate](https://github.com/gvieralopez/cookie-pyrate)</sub>
@@ -1,231 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: openfaba
3
- Version: 0.1.2
4
- Summary: A modern reimplementation of redele.
5
- Author-email: Gustavo Viera López <gvieralopez@gmail.com>
6
- License: MIT
7
- Requires-Python: >=3.13
8
- Description-Content-Type: text/markdown
9
- License-File: LICENSE
10
- Requires-Dist: typer>=0.9.0
11
- Requires-Dist: mutagen>=1.47.0
12
- Dynamic: license-file
13
-
14
- # openFABA
15
-
16
- **openFABA** is a command-line tool for inspecting, extracting, and exporting audio
17
- files for the **FABA** storytelling box. It allows you to convert standard MP3 files
18
- into FABA-compatible files for specific figures.
19
-
20
- This project builds upon the reverse-engineering work by
21
- [wansors](https://github.com/wansors/myfaba-hacks/blob/main/python/redele.py).
22
- At the moment, openFABA supports **only the original FABA device**.
23
-
24
- ### Disclaimer
25
-
26
- openFABA is an independent project and is **not affiliated with or endorsed by FABA**.
27
-
28
- This software is provided *as is*, without warranties of any kind. You are responsible
29
- for how you use it and for any consequences that may arise, including device malfunction
30
- or account-related actions. Some features may conflict with FABA’s terms of service or
31
- usage policies.
32
-
33
- The goal of openFABA is to:
34
-
35
- * simplify the creation of custom, FABA-compatible figures
36
- * enable personalization of figures you already own
37
-
38
- We do **not** endorse music piracy, copyright infringement, or any misuse that could
39
- negatively impact FABA or its ecosystem. FABA is a great company, and we encourage
40
- supporting them by purchasing their products.
41
-
42
- Use this tool responsibly and at your own risk.
43
-
44
-
45
- ## 🚀 Prerequisites
46
-
47
- Before working with this project, make sure you have [uv](https://docs.astral.sh/uv/) installed. 👉 Install guide: [uv docs](https://docs.astral.sh/uv/getting-started/installation/)
48
-
49
- If you are a developer and want to contribute to this project, you may want to have
50
- [make](https://www.gnu.org/software/make/) installed as well.
51
-
52
-
53
- ## ⚡ Installation
54
-
55
- Install dependencies into a local virtual environment:
56
-
57
- ```bash
58
- uv sync --all-groups
59
- ```
60
-
61
- Then, to activate the virtual environment:
62
-
63
- On Linux / macOS:
64
-
65
- ```bash
66
- source .venv/bin/activate
67
- ```
68
-
69
- On Windows (PowerShell):
70
-
71
- ```powershell
72
- .venv\Scripts\Activate.ps1
73
- # If your PowerShell execution policy prevents running the script, run:
74
- powershell -ExecutionPolicy Bypass -File .venv\Scripts\Activate.ps1
75
- ```
76
-
77
- On Windows (CMD):
78
-
79
- ```cmd
80
- .venv\Scripts\activate.bat
81
- ```
82
-
83
- ## 🛠️ Usage
84
-
85
- ### Create your own figure
86
-
87
- Create a new FABA figure from a folder containing MP3 files. The target figure must
88
- not already exist in the FABA library, otherwise the command will fail to avoid
89
- accidental overwrites.
90
-
91
- For example, to create a new FABA figure with ID `4742` using the songs in `/home/user/songs`
92
- and copy it to the FABA box mounted at `/mnt/faba/MKI01`, run:
93
-
94
- ```bash
95
- openfaba insert \
96
- --figure-id 4742 \
97
- --source /home/user/songs \
98
- --faba-library /mnt/faba/MKI01
99
- ```
100
-
101
- Write an NFC TAG with the figure ID and enjoy it! If you need help on how todo it,
102
- [these FAQs](https://github.com/wansors/myfaba-hacks/blob/main/FAQ.md) from the original
103
- wansors' project have a lot of useful information.
104
-
105
- ### Add songs to an existing figure
106
-
107
- Append additional MP3 files to an already existing figure. New tracks are added after the
108
- existing ones and never overwrite previously stored audio.
109
-
110
- ```bash
111
- openfaba extend \
112
- --figure-id 4742 \
113
- --source /home/user/new_songs \
114
- --faba-library /mnt/faba/MKI01
115
- ```
116
-
117
-
118
- ### Replace a figure
119
-
120
- Delete an existing figure and recreate it from scratch using a new set of MP3 files. This
121
- operation removes the previous contents of the figure.
122
-
123
- ```bash
124
- openfaba replace \
125
- --figure-id 4742 \
126
- --source /home/user/songs \
127
- --faba-library /mnt/faba/MKI01
128
- ```
129
-
130
-
131
- ### Listen to some FABA songs on your computer
132
-
133
- Extract (deobfuscate) a single figure from a FABA box and convert it back to standard MP3
134
- files so they can be played on a computer or mobile device.
135
-
136
- For example, to extract the Italian red elephant **Ele** (figure ID `0010`):
137
-
138
- ```bash
139
- openfaba extract \
140
- --figure-id 0010 \
141
- --faba-library /mnt/faba/MKI01 \
142
- --output /home/user/elephant_ele
143
- ```
144
-
145
-
146
- ### Obfuscate an entire MP3 library
147
-
148
- Convert a directory tree of MP3 files into a FABA-compatible MKI library. Subfolders named
149
- `K####` are interpreted as figure IDs; otherwise a default figure ID is used.
150
-
151
- ```bash
152
- openfaba obfuscate \
153
- --mp3-library /home/user/mp3_library \
154
- --faba-library /mnt/faba/MKI01
155
- ```
156
-
157
-
158
- ### Deobfuscate an entire FABA library
159
-
160
- Convert all figures from a FABA MKI library back into MP3 files, preserving the original
161
- folder structure.
162
-
163
- ```bash
164
- openfaba deobfuscate \
165
- --faba-library /mnt/faba/MKI01 \
166
- --mp3-library /home/user/output_mp3
167
- ```
168
-
169
- ## 🪙 Resources used to create this project
170
-
171
- - [myfaba-hacks GitHub repository](https://github.com/wansors/myfaba-hacks)
172
- - [Hacking MyFaba Medium Article](https://medium.com/@wansors/hacking-myfaba-an-educational-journey-into-storytelling-box-customization-cc6fc5db719d)
173
- - [Myfaba Store](https://www.myfaba.it/prodotti-sonori/acquista-per-tipologia/personaggi-sonori/)
174
-
175
-
176
- ## 📦 Tools for Developers
177
-
178
- Common development tasks are wrapped in the `Makefile` for convenience.
179
-
180
- ### Linting, Formatting, and Type Checking
181
-
182
- ```bash
183
- make qa
184
- ```
185
-
186
- Runs **Ruff** for linting and formatting, and **Mypy** for type checking.
187
-
188
- ### Running Unit Tests
189
-
190
- Before running tests, override any required environment variables in the `.env.test` file.
191
-
192
- ```bash
193
- make test
194
- ```
195
-
196
- Executes the test suite using **Pytest**.
197
-
198
- ### Building the Project
199
-
200
- ```bash
201
- make build
202
- ```
203
-
204
- Generates a distribution package inside the `dist/` directory.
205
-
206
- ### Cleaning Up
207
-
208
- ```bash
209
- make clean
210
- ```
211
-
212
- Removes build artifacts, caches, and temporary files to keep your project directory clean.
213
-
214
- ### Updating project version
215
-
216
- ```bash
217
- make version
218
- ```
219
-
220
- Interactively prompts you to select the type of version update to apply (major, minor, patch, tag)
221
- and automatically updates the project version accordingly.
222
-
223
-
224
- ## 🤝 Contributing
225
-
226
- Contributions are welcome!
227
- Please ensure all QA checks and tests pass before opening a pull request.
228
-
229
- ---
230
-
231
- <sub>🚀 Project starter provided by [Cookie Pyrate](https://github.com/gvieralopez/cookie-pyrate)</sub>
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes