TonieToolbox 0.5.0a1__tar.gz → 0.5.1__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.
- {tonietoolbox-0.5.0a1/TonieToolbox.egg-info → tonietoolbox-0.5.1}/PKG-INFO +141 -98
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/README.md +141 -98
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox/__init__.py +1 -1
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox/__main__.py +88 -68
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox/audio_conversion.py +75 -7
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox/media_tags.py +5 -4
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox/recursive_processor.py +10 -11
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox/tonie_file.py +17 -29
- tonietoolbox-0.5.1/TonieToolbox/tonies_json.py +1368 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1/TonieToolbox.egg-info}/PKG-INFO +141 -98
- tonietoolbox-0.5.0a1/TonieToolbox/tonies_json.py +0 -579
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/LICENSE.md +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/MANIFEST.in +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox/artwork.py +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox/constants.py +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox/dependency_manager.py +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox/filename_generator.py +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox/logger.py +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox/ogg_page.py +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox/opus_packet.py +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox/tags.py +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox/teddycloud.py +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox/tonie_analysis.py +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox/tonie_header.proto +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox/tonie_header_pb2.py +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox/version_handler.py +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox.egg-info/SOURCES.txt +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox.egg-info/dependency_links.txt +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox.egg-info/entry_points.txt +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox.egg-info/requires.txt +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/TonieToolbox.egg-info/top_level.txt +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/pyproject.toml +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/setup.cfg +0 -0
- {tonietoolbox-0.5.0a1 → tonietoolbox-0.5.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: TonieToolbox
|
3
|
-
Version: 0.5.
|
3
|
+
Version: 0.5.1
|
4
4
|
Summary: Create files for the Tonie box and interact with TeddyCloud servers
|
5
5
|
Home-page: https://github.com/Quentendo64/TonieToolbox
|
6
6
|
Author: Quentendo64
|
@@ -31,14 +31,22 @@ Dynamic: home-page
|
|
31
31
|
Dynamic: license-file
|
32
32
|
Dynamic: requires-python
|
33
33
|
|
34
|
-
# TonieToolbox
|
35
|
-
### WIP - Work in Progress
|
36
|
-
Happy Testing :-P
|
34
|
+
# TonieToolbox 🎵📦
|
37
35
|
|
38
|
-
|
36
|
+
[](https://github.com/Quentendo64/TonieToolbox/actions)
|
37
|
+
[](https://github.com/Quentendo64/TonieToolbox/actions)
|
39
38
|
|
40
|
-
|
41
|
-
|
39
|
+
[](https://www.gnu.org/licenses/gpl-3.0)
|
40
|
+
[](https://badge.fury.io/py/tonietoolbox)
|
41
|
+
[](https://www.python.org/downloads/)
|
42
|
+
[](https://hub.docker.com/r/quentendo64/tonietoolbox)
|
43
|
+
|
44
|
+
A Toolkit for converting various audio formats into the Tonie-compatible TAF format (Tonie Audio Format) and interacting with [TeddyCloud powered by RevvoX](https://github.com/toniebox-reverse-engineering/teddycloud)
|
45
|
+
|
46
|
+
## 🚀 Get Started
|
47
|
+
|
48
|
+
→ [HOWTO Guide for Beginners](HOWTO.md)
|
49
|
+
→ [Contributing Guidelines](CONTRIBUTING.md)
|
42
50
|
|
43
51
|
## Table of Contents
|
44
52
|
|
@@ -64,6 +72,7 @@ A Python tool for converting audio files to Tonie box compatible format (TAF - T
|
|
64
72
|
- [Related Projects](#related-projects)
|
65
73
|
- [Contributing](#contributing)
|
66
74
|
- [Legal Notice](#legal-notice)
|
75
|
+
- [Support](#support)
|
67
76
|
|
68
77
|
## Overview
|
69
78
|
|
@@ -90,14 +99,14 @@ The tool provides several capabilities:
|
|
90
99
|
- opus-tools (specifically `opusenc` for encoding to opus format)
|
91
100
|
- mutagen (for reading audio file metadata, auto-installed when needed)
|
92
101
|
|
93
|
-
Make sure FFmpeg and opus-tools are installed on your system and accessible in your PATH
|
94
|
-
If the requirements are not found in PATH
|
102
|
+
***Make sure FFmpeg and opus-tools are installed on your system and accessible in your PATH.***
|
103
|
+
If the requirements are not found in PATH, TonieToolbox will download the missing requirements with --auto-download.
|
95
104
|
|
96
105
|
## Installation
|
97
106
|
|
98
107
|
### Install from PyPI (Recommended)
|
99
108
|
|
100
|
-
```
|
109
|
+
```shell
|
101
110
|
pip install tonietoolbox
|
102
111
|
```
|
103
112
|
|
@@ -105,7 +114,7 @@ This will install TonieToolbox and its dependencies, making the `tonietoolbox` c
|
|
105
114
|
|
106
115
|
### Install from Source
|
107
116
|
|
108
|
-
```
|
117
|
+
```shell
|
109
118
|
# Clone the repository
|
110
119
|
git clone https://github.com/Quentendo64/TonieToolbox.git
|
111
120
|
cd TonieToolbox
|
@@ -120,7 +129,7 @@ TonieToolbox is available as a Docker image, which comes with all dependencies p
|
|
120
129
|
|
121
130
|
#### Pull the Docker Image
|
122
131
|
|
123
|
-
```
|
132
|
+
```shell
|
124
133
|
# From Docker Hub
|
125
134
|
docker pull quentendo64/tonietoolbox:latest
|
126
135
|
|
@@ -130,13 +139,13 @@ docker pull ghcr.io/quentendo64/tonietoolbox:latest
|
|
130
139
|
|
131
140
|
#### Build the Docker Image Locally
|
132
141
|
|
133
|
-
```
|
142
|
+
```shell
|
134
143
|
docker build -t tonietoolbox .
|
135
144
|
```
|
136
145
|
|
137
146
|
Or using docker-compose:
|
138
147
|
|
139
|
-
```
|
148
|
+
```shell
|
140
149
|
docker-compose build
|
141
150
|
```
|
142
151
|
|
@@ -147,12 +156,14 @@ docker-compose build
|
|
147
156
|
**Convert a single audio file to Tonie format:**
|
148
157
|
|
149
158
|
If installed via pip:
|
150
|
-
|
159
|
+
|
160
|
+
```shell
|
151
161
|
tonietoolbox input.mp3
|
152
162
|
```
|
153
163
|
|
154
164
|
If installed from source:
|
155
|
-
|
165
|
+
|
166
|
+
```shell
|
156
167
|
python TonieToolbox.py input.mp3
|
157
168
|
```
|
158
169
|
|
@@ -160,7 +171,7 @@ This will create a file named `input.taf` in the `.\output` directory.
|
|
160
171
|
|
161
172
|
**Specify output filename:**
|
162
173
|
|
163
|
-
```
|
174
|
+
```shell
|
164
175
|
tonietoolbox input.mp3 my_tonie.taf
|
165
176
|
```
|
166
177
|
|
@@ -170,13 +181,13 @@ This will create a file named `my_tonie.taf` in the `.\output` directory.
|
|
170
181
|
|
171
182
|
You can specify a directory to convert all audio files within it:
|
172
183
|
|
173
|
-
```
|
184
|
+
```shell
|
174
185
|
tonietoolbox input_directory/
|
175
186
|
```
|
176
187
|
|
177
188
|
Or use a list file (.lst) containing paths to multiple audio files:
|
178
189
|
|
179
|
-
```
|
190
|
+
```shell
|
180
191
|
tonietoolbox playlist.lst
|
181
192
|
```
|
182
193
|
|
@@ -184,7 +195,7 @@ tonietoolbox playlist.lst
|
|
184
195
|
|
185
196
|
To process an entire folder structure with multiple audio folders:
|
186
197
|
|
187
|
-
```
|
198
|
+
```shell
|
188
199
|
tonietoolbox --recursive "Music/Albums"
|
189
200
|
```
|
190
201
|
|
@@ -192,7 +203,7 @@ This will scan all subfolders, identify those containing audio files, and create
|
|
192
203
|
|
193
204
|
By default, all generated TAF files are saved in the `.\output` directory. If you want to save each TAF file in its source directory instead:
|
194
205
|
|
195
|
-
```
|
206
|
+
```shell
|
196
207
|
tonietoolbox --recursive --output-to-source "Music/Albums"
|
197
208
|
```
|
198
209
|
|
@@ -202,26 +213,33 @@ Using TonieToolbox with Docker simplifies the setup process as all dependencies
|
|
202
213
|
|
203
214
|
**Convert a single audio file to Tonie format:**
|
204
215
|
|
216
|
+
**On Windows PowerShell/Unix/macOS:**
|
217
|
+
|
205
218
|
```bash
|
206
|
-
# Use docker run
|
207
219
|
docker run --rm -v "$(pwd)/input:/tonietoolbox/input" -v "$(pwd)/output:/tonietoolbox/output" quentendo64/tonietoolbox input/my-audio-file.mp3
|
220
|
+
```
|
208
221
|
|
209
|
-
|
222
|
+
**On Windows (CMD):**
|
223
|
+
|
224
|
+
```cmd
|
225
|
+
docker run --rm -v "%cd%\input:/tonietoolbox/input" -v "%cd%\output:/tonietoolbox/output" quentendo64/tonietoolbox input/my-audio-file.mp3
|
226
|
+
```
|
227
|
+
|
228
|
+
**Or using docker-compose**
|
229
|
+
|
230
|
+
```shell
|
210
231
|
docker-compose run --rm tonietoolbox input/my-audio-file.mp3
|
211
232
|
```
|
212
233
|
|
213
234
|
**Process folders recursively:**
|
214
235
|
|
215
236
|
```bash
|
216
|
-
# Use docker run
|
217
237
|
docker run --rm -v "$(pwd)/input:/tonietoolbox/input" -v "$(pwd)/output:/tonietoolbox/output" quentendo64/tonietoolbox --recursive input/folder
|
218
|
-
|
219
238
|
```
|
220
239
|
|
221
240
|
**Advanced options with Docker:**
|
222
241
|
|
223
242
|
```bash
|
224
|
-
# Convert with custom settings
|
225
243
|
docker run --rm -v "$(pwd)/input:/tonietoolbox/input" -v "$(pwd)/output:/tonietoolbox/output" quentendo64/tonietoolbox --recursive --use-media-tags --name-template "{album} - {artist}" --bitrate 128 input/folder
|
226
244
|
```
|
227
245
|
|
@@ -235,12 +253,13 @@ docker run --rm -v "$(pwd)/input:/tonietoolbox/input" -v "$(pwd)/output:/tonieto
|
|
235
253
|
|
236
254
|
Run the following command to see all available options:
|
237
255
|
|
238
|
-
```
|
256
|
+
```shell
|
239
257
|
tonietoolbox -h
|
240
258
|
```
|
241
259
|
|
242
260
|
Output:
|
243
|
-
|
261
|
+
|
262
|
+
```shell
|
244
263
|
usage: TonieToolbox.py [-h] [-v] [--upload URL] [--include-artwork] [--get-tags URL]
|
245
264
|
[--ignore-ssl-verify] [--special-folder FOLDER] [--path PATH]
|
246
265
|
[--show-progress] [--connection-timeout SECONDS]
|
@@ -299,6 +318,7 @@ optional arguments:
|
|
299
318
|
-C, --compare FILE2 Compare input file with another .taf file for debugging
|
300
319
|
-D, --detailed-compare
|
301
320
|
Show detailed OGG page differences when comparing files
|
321
|
+
--no-mono-conversion Do not convert mono audio to stereo (default: convert mono to stereo)
|
302
322
|
Media Tag Options:
|
303
323
|
-m, --use-media-tags Use media tags from audio files for naming
|
304
324
|
--name-template TEMPLATE
|
@@ -323,51 +343,51 @@ Logging Options:
|
|
323
343
|
|
324
344
|
### Common Usage Examples
|
325
345
|
|
326
|
-
#### Analyze a Tonie file
|
346
|
+
#### Analyze a Tonie file
|
327
347
|
|
328
|
-
```
|
348
|
+
```shell
|
329
349
|
tonietoolbox --info my_tonie.taf
|
330
350
|
```
|
331
351
|
|
332
|
-
#### Split a Tonie file into individual opus tracks
|
352
|
+
#### Split a Tonie file into individual opus tracks
|
333
353
|
|
334
|
-
```
|
354
|
+
```shell
|
335
355
|
tonietoolbox --split my_tonie.taf
|
336
356
|
```
|
337
357
|
|
338
|
-
#### Compare TAF files
|
358
|
+
#### Compare TAF files
|
339
359
|
|
340
360
|
Compare two TAF files for debugging purposes:
|
341
361
|
|
342
|
-
```
|
362
|
+
```shell
|
343
363
|
tonietoolbox file1.taf --compare file2.taf
|
344
364
|
```
|
345
365
|
|
346
366
|
For detailed comparison including OGG page differences:
|
347
367
|
|
348
|
-
```
|
368
|
+
```shell
|
349
369
|
tonietoolbox file1.taf --compare file2.taf --detailed-compare
|
350
370
|
```
|
351
371
|
|
352
|
-
#### Custom timestamp options
|
372
|
+
#### Custom timestamp options
|
353
373
|
|
354
|
-
```
|
374
|
+
```shell
|
355
375
|
tonietoolbox input.mp3 --timestamp 1745078762 # UNIX Timestamp
|
356
376
|
tonietoolbox input.mp3 --timestamp 0x6803C9EA # Bitstream time
|
357
377
|
tonietoolbox input.mp3 --timestamp ./reference.taf # Reference TAF for extraction
|
358
378
|
```
|
359
379
|
|
360
|
-
#### Set custom bitrate
|
380
|
+
#### Set custom bitrate
|
361
381
|
|
362
|
-
```
|
382
|
+
```shell
|
363
383
|
tonietoolbox input.mp3 --bitrate 128
|
364
384
|
```
|
365
385
|
|
366
|
-
#### Constant bitrate encoding
|
386
|
+
#### Constant bitrate encoding
|
367
387
|
|
368
388
|
For more predictable file sizes and consistent quality, use constant bitrate (CBR) encoding:
|
369
389
|
|
370
|
-
```
|
390
|
+
```shell
|
371
391
|
# Encode with constant bitrate at 96 kbps (default)
|
372
392
|
tonietoolbox input.mp3 --cbr
|
373
393
|
|
@@ -375,36 +395,36 @@ tonietoolbox input.mp3 --cbr
|
|
375
395
|
tonietoolbox input.mp3 --cbr --bitrate 128
|
376
396
|
```
|
377
397
|
|
378
|
-
#### Append Tonie tag
|
398
|
+
#### Append Tonie tag
|
379
399
|
|
380
400
|
You can append a hexadecimal tag to the filename, which is useful for organizing Tonie files:
|
381
401
|
|
382
|
-
```
|
402
|
+
```shell
|
383
403
|
# Add an 8-character hex tag to filename
|
384
404
|
tonietoolbox input.mp3 --append-tonie-tag 7F8A6B2E
|
385
405
|
|
386
406
|
# The output will be named "input-7F8A6B2E.taf"
|
387
407
|
```
|
388
408
|
|
389
|
-
#### Process a complex folder structure
|
409
|
+
#### Process a complex folder structure
|
390
410
|
|
391
411
|
Process an audiobook series with multiple folders:
|
392
412
|
|
393
|
-
```
|
394
|
-
tonietoolbox --recursive "
|
413
|
+
```shell
|
414
|
+
tonietoolbox --recursive "C:\Hörspiele\Die drei Fragezeichen\Folgen"
|
395
415
|
```
|
396
416
|
|
397
417
|
Process a music collection with nested album folders and save TAF files alongside the source directories:
|
398
418
|
|
399
|
-
```
|
400
|
-
tonietoolbox --recursive --output-to-source "
|
419
|
+
```shell
|
420
|
+
tonietoolbox --recursive --output-to-source "C:\Hörspiele\"
|
401
421
|
```
|
402
422
|
|
403
|
-
#### Automatic dependency download
|
423
|
+
#### Automatic dependency download
|
404
424
|
|
405
425
|
If FFmpeg or opusenc are not found in your PATH, TonieToolbox can automatically download them:
|
406
426
|
|
407
|
-
```
|
427
|
+
```shell
|
408
428
|
# Automatically download dependencies when needed
|
409
429
|
tonietoolbox input.mp3 --auto-download
|
410
430
|
|
@@ -412,36 +432,38 @@ tonietoolbox input.mp3 --auto-download
|
|
412
432
|
tonietoolbox input.mp3 --ffmpeg "C:\path\to\ffmpeg.exe" --opusenc "C:\path\to\opusenc.exe"
|
413
433
|
```
|
414
434
|
|
415
|
-
#### Keep temporary files
|
435
|
+
#### Keep temporary files
|
416
436
|
|
417
437
|
When troubleshooting or debugging, you can keep the temporary opus files:
|
418
438
|
|
419
|
-
```
|
439
|
+
```shell
|
420
440
|
# Keep temporary opus files in the temp folder
|
421
441
|
tonietoolbox input.mp3 --keep-temp
|
422
442
|
|
423
443
|
```
|
424
444
|
|
425
|
-
#### Working with list files
|
445
|
+
#### Working with list files
|
426
446
|
|
427
447
|
Create a text file (.lst) with paths to audio files for batch processing:
|
428
448
|
|
429
|
-
```
|
449
|
+
```text
|
430
450
|
# Contents of playlist.lst:
|
431
451
|
C:\Music\song1.mp3
|
432
452
|
"C:\Music\song2.flac"
|
433
453
|
C:\Music\song3.wav
|
434
454
|
"C:\Music Path With Spaces\song2.flac"
|
455
|
+
```
|
435
456
|
|
457
|
+
```shell
|
436
458
|
# Process the list file
|
437
459
|
tonietoolbox playlist.lst my_playlist.taf
|
438
460
|
```
|
439
461
|
|
440
|
-
#### TeddyCloud advanced options
|
462
|
+
#### TeddyCloud advanced options
|
441
463
|
|
442
464
|
Customize your TeddyCloud uploads with connection options:
|
443
465
|
|
444
|
-
```
|
466
|
+
```shell
|
445
467
|
# Upload with custom timeouts and retry parameters
|
446
468
|
tonietoolbox my_tonie.taf --upload https://teddycloud.example.com --connection-timeout 20 --read-timeout 600 --max-retries 5 --retry-delay 10
|
447
469
|
|
@@ -452,19 +474,19 @@ tonietoolbox my_tonie.taf --upload https://teddycloud.example.com --show-progres
|
|
452
474
|
tonietoolbox my_tonie.taf --upload https://teddycloud.example.com --special-folder library
|
453
475
|
```
|
454
476
|
|
455
|
-
#### Get available tags from TeddyCloud
|
477
|
+
#### Get available tags from TeddyCloud
|
456
478
|
|
457
479
|
To see which tags you can use with your TeddyCloud server:
|
458
480
|
|
459
|
-
```
|
481
|
+
```shell
|
460
482
|
tonietoolbox --get-tags https://teddycloud.example.com
|
461
483
|
```
|
462
484
|
|
463
|
-
#### Version checking and updates
|
485
|
+
#### Version checking and updates
|
464
486
|
|
465
487
|
TonieToolbox can check for newer versions and notify you when there are updates available:
|
466
488
|
|
467
|
-
```
|
489
|
+
```shell
|
468
490
|
# Skip checking for updates if you're offline or want faster startup
|
469
491
|
tonietoolbox input.mp3 --skip-update-check
|
470
492
|
|
@@ -475,29 +497,29 @@ tonietoolbox input.mp3 --force-refresh-cache
|
|
475
497
|
tonietoolbox --clear-version-cache
|
476
498
|
```
|
477
499
|
|
478
|
-
#### Legacy tag options
|
500
|
+
#### Legacy tag options
|
479
501
|
|
480
502
|
Use legacy hardcoded tags instead of dynamic TonieToolbox tags:
|
481
503
|
|
482
|
-
```
|
504
|
+
```shell
|
483
505
|
tonietoolbox input.mp3 --use-legacy-tags
|
484
506
|
```
|
485
507
|
|
486
|
-
#### Create custom JSON data
|
508
|
+
#### Create custom JSON data
|
487
509
|
|
488
510
|
When uploading to TeddyCloud, you can also update the custom Tonies JSON data with information about the uploaded file:
|
489
511
|
|
490
|
-
```
|
512
|
+
```shell
|
491
513
|
tonietoolbox input.mp3 --upload https://teddycloud.example.com --create-custom-json
|
492
514
|
```
|
493
515
|
|
494
516
|
This will fetch and update the custom Tonies JSON data in the TeddyCloud server with information from your audio files.
|
495
517
|
|
496
|
-
#### Logging and Troubleshooting
|
518
|
+
#### Logging and Troubleshooting
|
497
519
|
|
498
520
|
Control the verbosity of console output with different logging levels:
|
499
521
|
|
500
|
-
```
|
522
|
+
```shell
|
501
523
|
# Enable detailed debug information (useful for troubleshooting)
|
502
524
|
tonietoolbox input.mp3 --debug
|
503
525
|
|
@@ -513,7 +535,7 @@ tonietoolbox input.mp3 --silent
|
|
513
535
|
|
514
536
|
You can combine logging options with other commands:
|
515
537
|
|
516
|
-
```
|
538
|
+
```shell
|
517
539
|
# Debug mode while splitting a TAF file
|
518
540
|
tonietoolbox --split my_tonie.taf --debug
|
519
541
|
|
@@ -525,45 +547,45 @@ tonietoolbox --recursive "Music/Collection/" --quiet
|
|
525
547
|
|
526
548
|
TonieToolbox can read metadata tags from audio files (such as ID3 tags in MP3 files, Vorbis comments in FLAC/OGG files, etc.) and use them to create more meaningful filenames or display information about your audio collection.
|
527
549
|
|
528
|
-
#### View available tags in audio files
|
550
|
+
#### View available tags in audio files
|
529
551
|
|
530
552
|
To see what tags are available in your audio files:
|
531
553
|
|
532
|
-
```
|
554
|
+
```shell
|
533
555
|
tonietoolbox --show-tags input.mp3
|
534
556
|
```
|
535
557
|
|
536
558
|
This will display all readable tags from the file, which can be useful for creating naming templates.
|
537
559
|
|
538
|
-
#### Use media tags for file naming
|
560
|
+
#### Use media tags for file naming
|
539
561
|
|
540
562
|
To use the metadata from audio files when generating output filenames:
|
541
563
|
|
542
|
-
```
|
564
|
+
```shell
|
543
565
|
tonietoolbox input.mp3 --use-media-tags
|
544
566
|
```
|
545
567
|
|
546
568
|
For single files, this will use a default template of "{title} - {artist}" for the output filename.
|
547
569
|
|
548
|
-
#### Custom naming templates
|
570
|
+
#### Custom naming templates
|
549
571
|
|
550
572
|
You can specify custom templates for generating filenames based on the audio metadata:
|
551
573
|
|
552
|
-
```
|
574
|
+
```shell
|
553
575
|
tonietoolbox input.mp3 --use-media-tags --name-template "{artist} - {album} - {title}"
|
554
576
|
```
|
555
577
|
|
556
|
-
#### Recursive processing with media tags
|
578
|
+
#### Recursive processing with media tags
|
557
579
|
|
558
580
|
When processing folders recursively, media tags can provide more consistent naming:
|
559
581
|
|
560
|
-
```
|
582
|
+
```shell
|
561
583
|
tonietoolbox --recursive --use-media-tags "Music/Collection/"
|
562
584
|
```
|
563
585
|
|
564
586
|
This will attempt to use the album information from the audio files for naming the output files:
|
565
587
|
|
566
|
-
```
|
588
|
+
```shell
|
567
589
|
tonietoolbox --recursive --use-media-tags --name-template "{date} - {album} ({artist})" "Music/Collection/"
|
568
590
|
```
|
569
591
|
|
@@ -571,56 +593,59 @@ tonietoolbox --recursive --use-media-tags --name-template "{date} - {album} ({ar
|
|
571
593
|
|
572
594
|
TonieToolbox can upload files directly to a TeddyCloud server, which is an alternative to the official Tonie cloud for managing custom Tonies.
|
573
595
|
|
574
|
-
#### Upload a Tonie file to TeddyCloud
|
596
|
+
#### Upload a Tonie file to TeddyCloud
|
575
597
|
|
576
|
-
```
|
598
|
+
```shell
|
577
599
|
tonietoolbox --upload https://teddycloud.example.com my_tonie.taf
|
578
600
|
```
|
579
601
|
|
580
602
|
This will upload the specified Tonie file to the TeddyCloud server.
|
581
603
|
|
582
|
-
#### Upload a newly created Tonie file
|
604
|
+
#### Upload a newly created Tonie file
|
583
605
|
|
584
606
|
You can combine conversion and upload in a single command:
|
585
607
|
|
586
|
-
```
|
608
|
+
```shell
|
587
609
|
tonietoolbox input.mp3 --upload https://teddycloud.example.com
|
588
610
|
```
|
589
611
|
|
590
612
|
This will convert the input file to TAF format and then upload it to the TeddyCloud server.
|
591
613
|
|
592
|
-
#### Upload with custom path
|
614
|
+
#### Upload with custom path
|
593
615
|
|
594
|
-
```
|
616
|
+
```shell
|
595
617
|
tonietoolbox my_tonie.taf --upload https://teddycloud.example.com --path "/custom_audio"
|
596
|
-
The path
|
618
|
+
# The path must already exist in the TeddyCloud Library.
|
597
619
|
```
|
598
620
|
|
599
|
-
#### Upload with artwork
|
621
|
+
#### Upload with artwork
|
622
|
+
|
623
|
+
> **Note:** This function will only work if the `/custom_img` folder is mounted in the TeddyCloud Library. For an easy start and to handle this automatically (and much more), use [TeddyCloudStarter](https://github.com/Quentendo64/TeddyCloudStarter).
|
600
624
|
|
601
625
|
TonieToolbox can automatically find and upload cover artwork alongside your Tonie files:
|
602
626
|
|
603
|
-
```
|
627
|
+
```shell
|
604
628
|
tonietoolbox my_tonie.taf --upload https://teddycloud.example.com --include-artwork
|
605
629
|
```
|
606
630
|
|
607
631
|
This will:
|
632
|
+
|
608
633
|
1. Look for cover images (like "cover.jpg", "artwork.png", etc.) in the source directory
|
609
634
|
2. If no cover image is found, attempt to extract embedded artwork from the audio files
|
610
635
|
3. Upload the artwork to the "/custom_img" directory on the TeddyCloud server
|
611
636
|
4. The artwork will be uploaded with the same filename as the Tonie file for easier association
|
612
637
|
|
613
|
-
#### Recursive processing with uploads
|
638
|
+
#### Recursive processing with uploads
|
614
639
|
|
615
|
-
```
|
640
|
+
```shell
|
616
641
|
tonietoolbox --recursive "Music/Albums" --upload https://teddycloud.example.com --include-artwork
|
617
642
|
```
|
618
643
|
|
619
644
|
This will process all folders recursively, create TAF files, and upload both the TAF files and their cover artwork to the TeddyCloud server.
|
620
645
|
|
621
|
-
#### Upload with SSL certificate verification disabled
|
646
|
+
#### Upload with SSL certificate verification disabled
|
622
647
|
|
623
|
-
```
|
648
|
+
```shell
|
624
649
|
tonietoolbox my_tonie.taf --upload https://teddycloud.example.com --ignore-ssl-verify
|
625
650
|
```
|
626
651
|
|
@@ -632,11 +657,12 @@ Use this option if the TeddyCloud server uses a self-signed certificate.
|
|
632
657
|
|
633
658
|
To convert an entire audiobook series with proper metadata and upload to TeddyCloud:
|
634
659
|
|
635
|
-
```
|
636
|
-
tonietoolbox --recursive --use-media-tags --name-template "{
|
660
|
+
```shell
|
661
|
+
tonietoolbox --recursive --use-media-tags --name-template "{year} - {albumartist} - {album}" --bitrate 128 --upload https://teddycloud.example.com --include-artwork "C:\Hörspiele\Die Drei Fragezeichen"
|
637
662
|
```
|
638
663
|
|
639
664
|
This command will:
|
665
|
+
|
640
666
|
1. Recursively process the Die Drei Fragezeichen audioplays directory
|
641
667
|
2. Use a naming template based on source metadata
|
642
668
|
3. Encode at 128 kbps
|
@@ -646,23 +672,23 @@ This command will:
|
|
646
672
|
|
647
673
|
For a custom children's story collection with chapters:
|
648
674
|
|
649
|
-
```
|
675
|
+
```shell
|
650
676
|
tonietoolbox story_collection.lst kids_stories.taf --bitrate 96 --cbr --auto-download --use-media-tags --name-template "{title} Stories" --debug
|
651
677
|
```
|
652
678
|
|
653
679
|
This command:
|
680
|
+
|
654
681
|
1. Processes a list of story audio files
|
655
682
|
2. Names the output based on metadata
|
656
683
|
3. Uses constant bitrate encoding for consistent quality
|
657
684
|
4. Automatically downloads dependencies if needed
|
658
685
|
5. Shows detailed debug information during the process
|
659
686
|
|
660
|
-
|
661
687
|
### Advanced Media Tag Usage
|
662
688
|
|
663
689
|
For complex media tag processing:
|
664
690
|
|
665
|
-
```
|
691
|
+
```shell
|
666
692
|
# First check available tags
|
667
693
|
tonietoolbox --show-tags "C:\Music\Classical\Bach"
|
668
694
|
|
@@ -670,7 +696,7 @@ tonietoolbox --show-tags "C:\Music\Classical\Bach"
|
|
670
696
|
tonietoolbox "C:\Music\Classical\Bach" --use-media-tags --name-template "{composer} - {opus} in {key} ({conductor}, {orchestra})"
|
671
697
|
```
|
672
698
|
|
673
|
-
The first command shows what tags are available, allowing you to create precise naming templates for classical music collections
|
699
|
+
The first command shows what tags are available, allowing you to create precise naming templates for classical music collections.
|
674
700
|
|
675
701
|
## Technical Details
|
676
702
|
|
@@ -687,6 +713,7 @@ Located at the beginning of the file, structured as:
|
|
687
713
|
- Padding to fill the entire 4096 bytes (0x1000)
|
688
714
|
|
689
715
|
The Protocol Buffer structure contains:
|
716
|
+
|
690
717
|
```protobuf
|
691
718
|
message TonieHeader {
|
692
719
|
bytes dataHash = 1; // SHA1 hash of the audio data
|
@@ -700,6 +727,7 @@ message TonieHeader {
|
|
700
727
|
#### 2. Audio Data
|
701
728
|
|
702
729
|
The audio data consists of:
|
730
|
+
|
703
731
|
- Opus encoded audio in Ogg container format
|
704
732
|
- Every page after the header has a fixed size of 4096 bytes (0x1000)
|
705
733
|
- First page contains the Opus identification header
|
@@ -710,11 +738,17 @@ The audio data consists of:
|
|
710
738
|
#### 3. Special Requirements
|
711
739
|
|
712
740
|
For optimal compatibility with Tonie boxes:
|
713
|
-
|
741
|
+
|
742
|
+
- Audio should be stereo (2 channels)
|
714
743
|
- Sample rate must be 48 kHz
|
715
744
|
- Pages must be aligned to 4096 byte boundaries
|
716
745
|
- Bitrate of 96 kbps VBR is recommended
|
717
746
|
|
747
|
+
**Mono audio handling:**
|
748
|
+
|
749
|
+
- By default, TonieToolbox will automatically convert mono audio files to stereo for compatibility.
|
750
|
+
- To disable this behavior (and require your input to already be stereo), use the `--no-mono-conversion` flag.
|
751
|
+
|
718
752
|
### File Analysis
|
719
753
|
|
720
754
|
When using the `--info` flag, TonieToolbox checks and displays detailed information about a .TAF (Tonie Audio File):
|
@@ -746,7 +780,8 @@ This is particularly useful for debugging when creating TAF files with different
|
|
746
780
|
This project is inspired by and builds upon the work of other Tonie-related open source projects:
|
747
781
|
|
748
782
|
- [opus2tonie](https://github.com/bailli/opus2tonie) - A command line utility to convert opus files to the Tonie audio format
|
749
|
-
- [teddycloud](https://github.com/toniebox-reverse-engineering/teddycloud) - Self-hosted alternative to the Tonie cloud for managing custom
|
783
|
+
- [teddycloud](https://github.com/toniebox-reverse-engineering/teddycloud) - Self-hosted alternative to the Tonie cloud / Boxine cloud for managing custom content
|
784
|
+
- [TeddyCloudStarter](https://github.com/Quentendo64/TeddyCloudStarter) - A Wizard for Docker-based deployment of [teddycloud](https://github.com/toniebox-reverse-engineering/teddycloud)
|
750
785
|
|
751
786
|
## Contributing
|
752
787
|
|
@@ -756,10 +791,18 @@ Contributions are welcome! Please feel free to submit a Pull Request.
|
|
756
791
|
|
757
792
|
This project is an independent, community-driven effort created for educational and personal use purposes.
|
758
793
|
|
759
|
-
- tonies®, toniebox®, Hörfigur® are registered trademarks of [tonies GmbH](https://tonies.com).
|
794
|
+
- tonies®, toniebox®, and Hörfigur® are registered trademarks of [tonies GmbH](https://tonies.com).
|
760
795
|
- This project is not affiliated with, endorsed by, or connected to tonies GmbH in any way.
|
761
796
|
- TonieToolbox is provided "as is" without warranty of any kind, either express or implied.
|
762
797
|
- Users are responsible for ensuring their usage complies with all applicable copyright and intellectual property laws.
|
763
798
|
- This tool is intended for personal use with legally owned content only.
|
764
799
|
|
765
800
|
By using TonieToolbox, you acknowledge that the authors of this software take no responsibility for any potential misuse or any damages that might result from the use of this software.
|
801
|
+
|
802
|
+
## Support
|
803
|
+
|
804
|
+
If you need help, have questions, or want to report a bug, please use the following channels:
|
805
|
+
|
806
|
+
- [GitHub Issues](https://github.com/Quentendo64/TonieToolbox/issues) for bug reports and feature requests
|
807
|
+
- [GitHub Discussions](https://github.com/Quentendo64/TonieToolbox/discussions) for general questions and community support
|
808
|
+
- [HOWTO Guide](HOWTO.md) for common usage instructions
|