TonieToolbox 0.2.2__py3-none-any.whl → 0.3.0__py3-none-any.whl
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/__init__.py +1 -1
- TonieToolbox/__main__.py +407 -7
- TonieToolbox/dependency_manager.py +95 -5
- TonieToolbox/media_tags.py +637 -0
- TonieToolbox/recursive_processor.py +96 -11
- TonieToolbox/teddycloud.py +580 -0
- {tonietoolbox-0.2.2.dist-info → tonietoolbox-0.3.0.dist-info}/METADATA +158 -5
- {tonietoolbox-0.2.2.dist-info → tonietoolbox-0.3.0.dist-info}/RECORD +12 -10
- {tonietoolbox-0.2.2.dist-info → tonietoolbox-0.3.0.dist-info}/WHEEL +1 -1
- {tonietoolbox-0.2.2.dist-info → tonietoolbox-0.3.0.dist-info}/entry_points.txt +0 -0
- {tonietoolbox-0.2.2.dist-info → tonietoolbox-0.3.0.dist-info}/licenses/LICENSE.md +0 -0
- {tonietoolbox-0.2.2.dist-info → tonietoolbox-0.3.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: TonieToolbox
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.3.0
|
4
4
|
Summary: Convert audio files to Tonie box compatible format
|
5
5
|
Home-page: https://github.com/Quentendo64/TonieToolbox
|
6
6
|
Author: Quentendo64
|
@@ -46,12 +46,15 @@ A Python tool for converting audio files to Tonie box compatible format (TAF - T
|
|
46
46
|
- [Basic Usage](#basic-usage)
|
47
47
|
- [Advanced Options](#advanced-options)
|
48
48
|
- [Common Usage Examples](#common-usage-examples)
|
49
|
+
- [Media Tags](#media-tags)
|
50
|
+
- [TeddyCloud Upload](#teddycloud-upload)
|
49
51
|
- [Technical Details](#technical-details)
|
50
52
|
- [TAF File Structure](#taf-tonie-audio-format-file-structure)
|
51
53
|
- [File Analysis](#file-analysis)
|
52
54
|
- [File Comparison](#file-comparison)
|
53
55
|
- [Related Projects](#related-projects)
|
54
56
|
- [Contributing](#contributing)
|
57
|
+
- [Legal Notice](#legal-notice)
|
55
58
|
|
56
59
|
## Overview
|
57
60
|
|
@@ -67,15 +70,19 @@ The tool provides several capabilities:
|
|
67
70
|
- Split Tonie files into individual opus tracks
|
68
71
|
- Compare two TAF files for debugging differences
|
69
72
|
- Support various input formats through FFmpeg conversion
|
73
|
+
- Extract and use audio media tags (ID3, Vorbis Comments, etc.) for better file naming
|
74
|
+
- Upload Tonie files directly to a TeddyCloud server
|
75
|
+
- Automatically upload cover artwork alongside Tonie files
|
70
76
|
|
71
77
|
## Requirements
|
72
78
|
|
73
79
|
- Python 3.6 or higher
|
74
|
-
- FFmpeg (for converting non-opus audio files)
|
80
|
+
- FFmpeg (for converting non-opus audio files)
|
75
81
|
- opus-tools (specifically `opusenc` for encoding to opus format)
|
82
|
+
- mutagen (for reading audio file metadata, auto-installed when needed)
|
76
83
|
|
77
84
|
Make sure FFmpeg and opus-tools are installed on your system and accessible in your PATH.
|
78
|
-
If the requirements are not found in PATH. TonieToolbox will download the missing requirements.
|
85
|
+
If the requirements are not found in PATH. TonieToolbox will download the missing requirements with --auto-download.
|
79
86
|
|
80
87
|
## Installation
|
81
88
|
|
@@ -164,9 +171,14 @@ tonietoolbox -h
|
|
164
171
|
|
165
172
|
Output:
|
166
173
|
```
|
167
|
-
usage: TonieToolbox.py [-h] [-v] [
|
174
|
+
usage: TonieToolbox.py [-h] [-v] [--upload URL] [--include-artwork] [--get-tags URL]
|
175
|
+
[--ignore-ssl-verify] [--special-folder FOLDER] [--path PATH]
|
176
|
+
[--show-progress] [--connection-timeout SECONDS]
|
177
|
+
[--read-timeout SECONDS] [--max-retries RETRIES]
|
178
|
+
[--retry-delay SECONDS] [-t TIMESTAMP] [-f FFMPEG] [-o OPUSENC]
|
168
179
|
[-b BITRATE] [-c] [-a TAG] [-n] [-i] [-s] [-r] [-O]
|
169
|
-
[-A] [-k] [-C FILE2] [-D] [-
|
180
|
+
[-A] [-k] [-C FILE2] [-D] [-m] [--name-template TEMPLATE]
|
181
|
+
[--show-tags] [-d] [-T] [-q] [-Q]
|
170
182
|
SOURCE [TARGET]
|
171
183
|
|
172
184
|
Create Tonie compatible file from Ogg opus file(s).
|
@@ -175,6 +187,24 @@ positional arguments:
|
|
175
187
|
SOURCE input file or directory or a file list (.lst)
|
176
188
|
TARGET the output file name (default: ---ID---)
|
177
189
|
|
190
|
+
TeddyCloud Options:
|
191
|
+
--upload URL Upload to TeddyCloud instance (e.g., https://teddycloud.example.com). Supports .taf, .jpg, .jpeg, .png files.
|
192
|
+
--include-artwork Upload cover artwork image alongside the Tonie file when using --upload
|
193
|
+
--get-tags URL Get available tags from TeddyCloud instance
|
194
|
+
--ignore-ssl-verify Ignore SSL certificate verification (for self-signed certificates)
|
195
|
+
--special-folder FOLDER
|
196
|
+
Special folder to upload to (currently only "library" is supported)
|
197
|
+
--path PATH Path where to write the file on TeddyCloud server
|
198
|
+
--show-progress Show progress bar during file upload (default: enabled)
|
199
|
+
--connection-timeout SECONDS
|
200
|
+
Connection timeout in seconds (default: 10)
|
201
|
+
--read-timeout SECONDS
|
202
|
+
Read timeout in seconds (default: 300)
|
203
|
+
--max-retries RETRIES
|
204
|
+
Maximum number of retry attempts (default: 3)
|
205
|
+
--retry-delay SECONDS
|
206
|
+
Delay between retry attempts in seconds (default: 5)
|
207
|
+
|
178
208
|
optional arguments:
|
179
209
|
-h, --help show this help message and exit
|
180
210
|
-v, --version show program version and exit
|
@@ -198,6 +228,12 @@ optional arguments:
|
|
198
228
|
-D, --detailed-compare
|
199
229
|
Show detailed OGG page differences when comparing files
|
200
230
|
|
231
|
+
Media Tag Options:
|
232
|
+
-m, --use-media-tags Use media tags from audio files for naming
|
233
|
+
--name-template TEMPLATE
|
234
|
+
Template for naming files using media tags. Example: "{album} - {artist}"
|
235
|
+
--show-tags Show available media tags from input files
|
236
|
+
|
201
237
|
Version Check Options:
|
202
238
|
-S, --skip-update-check
|
203
239
|
Skip checking for updates
|
@@ -269,6 +305,111 @@ Process a music collection with nested album folders and save TAF files alongsid
|
|
269
305
|
tonietoolbox --recursive --output-to-source "\Hörspiele\"
|
270
306
|
```
|
271
307
|
|
308
|
+
### Media Tags
|
309
|
+
|
310
|
+
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.
|
311
|
+
|
312
|
+
#### View available tags in audio files:
|
313
|
+
|
314
|
+
To see what tags are available in your audio files:
|
315
|
+
|
316
|
+
```
|
317
|
+
tonietoolbox --show-tags input.mp3
|
318
|
+
```
|
319
|
+
|
320
|
+
This will display all readable tags from the file, which can be useful for creating naming templates.
|
321
|
+
|
322
|
+
#### Use media tags for file naming:
|
323
|
+
|
324
|
+
To use the metadata from audio files when generating output filenames:
|
325
|
+
|
326
|
+
```
|
327
|
+
tonietoolbox input.mp3 --use-media-tags
|
328
|
+
```
|
329
|
+
|
330
|
+
For single files, this will use a default template of "{title} - {artist}" for the output filename.
|
331
|
+
|
332
|
+
#### Custom naming templates:
|
333
|
+
|
334
|
+
You can specify custom templates for generating filenames based on the audio metadata:
|
335
|
+
|
336
|
+
```
|
337
|
+
tonietoolbox input.mp3 --use-media-tags --name-template "{artist} - {album} - {title}"
|
338
|
+
```
|
339
|
+
|
340
|
+
#### Recursive processing with media tags:
|
341
|
+
|
342
|
+
When processing folders recursively, media tags can provide more consistent naming:
|
343
|
+
|
344
|
+
```
|
345
|
+
tonietoolbox --recursive --use-media-tags "Music/Collection/"
|
346
|
+
```
|
347
|
+
|
348
|
+
This will attempt to use the album information from the audio files for naming the output files:
|
349
|
+
|
350
|
+
```
|
351
|
+
tonietoolbox --recursive --use-media-tags --name-template "{date} - {album} ({artist})" "Music/Collection/"
|
352
|
+
```
|
353
|
+
|
354
|
+
### TeddyCloud Upload
|
355
|
+
|
356
|
+
TonieToolbox can upload files directly to a TeddyCloud server, which is an alternative to the official Tonie cloud for managing custom Tonies.
|
357
|
+
|
358
|
+
#### Upload a Tonie file to TeddyCloud:
|
359
|
+
|
360
|
+
```
|
361
|
+
tonietoolbox --upload https://teddycloud.example.com my_tonie.taf
|
362
|
+
```
|
363
|
+
|
364
|
+
This will upload the specified Tonie file to the TeddyCloud server.
|
365
|
+
|
366
|
+
#### Upload a newly created Tonie file:
|
367
|
+
|
368
|
+
You can combine conversion and upload in a single command:
|
369
|
+
|
370
|
+
```
|
371
|
+
tonietoolbox input.mp3 --upload https://teddycloud.example.com
|
372
|
+
```
|
373
|
+
|
374
|
+
This will convert the input file to TAF format and then upload it to the TeddyCloud server.
|
375
|
+
|
376
|
+
#### Upload with custom path:
|
377
|
+
|
378
|
+
```
|
379
|
+
tonietoolbox my_tonie.taf --upload https://teddycloud.example.com --path "/custom_audio"
|
380
|
+
The path needs to be existing in the TeddyCloud Library.
|
381
|
+
```
|
382
|
+
|
383
|
+
#### Upload with artwork:
|
384
|
+
|
385
|
+
TonieToolbox can automatically find and upload cover artwork alongside your Tonie files:
|
386
|
+
|
387
|
+
```
|
388
|
+
tonietoolbox my_tonie.taf --upload https://teddycloud.example.com --include-artwork
|
389
|
+
```
|
390
|
+
|
391
|
+
This will:
|
392
|
+
1. Look for cover images (like "cover.jpg", "artwork.png", etc.) in the source directory
|
393
|
+
2. If no cover image is found, attempt to extract embedded artwork from the audio files
|
394
|
+
3. Upload the artwork to the "/custom_img" directory on the TeddyCloud server
|
395
|
+
4. The artwork will be uploaded with the same filename as the Tonie file for easier association
|
396
|
+
|
397
|
+
#### Recursive processing with uploads:
|
398
|
+
|
399
|
+
```
|
400
|
+
tonietoolbox --recursive "Music/Albums" --upload https://teddycloud.example.com --include-artwork
|
401
|
+
```
|
402
|
+
|
403
|
+
This will process all folders recursively, create TAF files, and upload both the TAF files and their cover artwork to the TeddyCloud server.
|
404
|
+
|
405
|
+
#### Upload with SSL certificate verification disabled:
|
406
|
+
|
407
|
+
```
|
408
|
+
tonietoolbox my_tonie.taf --upload https://teddycloud.example.com --ignore-ssl-verify
|
409
|
+
```
|
410
|
+
|
411
|
+
Use this option if the TeddyCloud server uses a self-signed certificate.
|
412
|
+
|
272
413
|
## Technical Details
|
273
414
|
|
274
415
|
### TAF (Tonie Audio Format) File Structure
|
@@ -348,3 +489,15 @@ This project is inspired by and builds upon the work of other Tonie-related open
|
|
348
489
|
## Contributing
|
349
490
|
|
350
491
|
Contributions are welcome! Please feel free to submit a Pull Request.
|
492
|
+
|
493
|
+
## Legal Notice
|
494
|
+
|
495
|
+
This project is an independent, community-driven effort created for educational and personal use purposes.
|
496
|
+
|
497
|
+
- tonies®, toniebox®, Hörfigur® are registered trademarks of [tonies GmbH](https://tonies.com).
|
498
|
+
- This project is not affiliated with, endorsed by, or connected to tonies GmbH in any way.
|
499
|
+
- TonieToolbox is provided "as is" without warranty of any kind, either express or implied.
|
500
|
+
- Users are responsible for ensuring their usage complies with all applicable copyright and intellectual property laws.
|
501
|
+
- This tool is intended for personal use with legally owned content only.
|
502
|
+
|
503
|
+
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.
|
@@ -1,21 +1,23 @@
|
|
1
|
-
TonieToolbox/__init__.py,sha256=
|
2
|
-
TonieToolbox/__main__.py,sha256=
|
1
|
+
TonieToolbox/__init__.py,sha256=1DGgQLdpAkK84simgtWndHZBKXuXCb-jPnMK_wvNOWc,96
|
2
|
+
TonieToolbox/__main__.py,sha256=Y6-gjbjNbKhpEvV6wi8BpZSUXXezxfgZT5g8HfMeO4E,34078
|
3
3
|
TonieToolbox/audio_conversion.py,sha256=ra72qsE8j2GEP_4kqDT9m6aKlnnREZhZAlpf7y83pA0,11202
|
4
4
|
TonieToolbox/constants.py,sha256=QQWQpnCI65GByLlXLOkt2n8nALLu4m6BWp0zuhI3M04,2021
|
5
|
-
TonieToolbox/dependency_manager.py,sha256=
|
5
|
+
TonieToolbox/dependency_manager.py,sha256=EvVUO4T1CrhUXlrVk9HBgCRDER3b1BRNdgkZLSpCTho,27921
|
6
6
|
TonieToolbox/filename_generator.py,sha256=RqQHyGTKakuWR01yMSnFVMU_HfLw3rqFxKhXNIHdTlg,3441
|
7
7
|
TonieToolbox/logger.py,sha256=Up9fBVkOZwkY61_645bX4tienCpyVSkap-FeTV0v730,1441
|
8
|
+
TonieToolbox/media_tags.py,sha256=XzCuBcaqBPiSCBip8rWrJ3hTHDwEEN1flyPywM7CMsg,22250
|
8
9
|
TonieToolbox/ogg_page.py,sha256=-ViaIRBgh5ayfwmyplL8QmmRr5P36X8W0DdHkSFUYUU,21948
|
9
10
|
TonieToolbox/opus_packet.py,sha256=OcHXEe3I_K4mWPUD55prpG42sZxJsEeAxqSbFxBmb0c,7895
|
10
|
-
TonieToolbox/recursive_processor.py,sha256=
|
11
|
+
TonieToolbox/recursive_processor.py,sha256=m70-oJ4MRXvI9OMy14sC9UsQIxwVEnEoA3hhLGdHhL4,13457
|
12
|
+
TonieToolbox/teddycloud.py,sha256=YRgOU3f1qVDSoV05mCCDHb4pd00aI_oD8HViIotvez4,23366
|
11
13
|
TonieToolbox/tonie_analysis.py,sha256=kp4Wx4cTDddtF2AlS6IX4xs1vQ-mpZ0gsAy4-UdRAAM,23287
|
12
14
|
TonieToolbox/tonie_file.py,sha256=vY0s8X4ln35ZXpdpGmBcIxgpTJAjduiVvBh34WObyrw,19647
|
13
15
|
TonieToolbox/tonie_header.proto,sha256=WaWfwO4VrwGtscK2ujfDRKtpeBpaVPoZhI8iMmR-C0U,202
|
14
16
|
TonieToolbox/tonie_header_pb2.py,sha256=s5bp4ULTEekgq6T61z9fDkRavyPM-3eREs20f_Pxxe8,3665
|
15
17
|
TonieToolbox/version_handler.py,sha256=7Zx-pgzAUhz6jMplvNal1wHyxidodVxaNcAV0EMph5k,9778
|
16
|
-
tonietoolbox-0.
|
17
|
-
tonietoolbox-0.
|
18
|
-
tonietoolbox-0.
|
19
|
-
tonietoolbox-0.
|
20
|
-
tonietoolbox-0.
|
21
|
-
tonietoolbox-0.
|
18
|
+
tonietoolbox-0.3.0.dist-info/licenses/LICENSE.md,sha256=rGoga9ZAgNco9fBapVFpWf6ri7HOBp1KRnt1uIruXMk,35190
|
19
|
+
tonietoolbox-0.3.0.dist-info/METADATA,sha256=17k_CP3FXVhfO60HrS3CWP1bfN-pGNwNFwtfd9QzQj4,16695
|
20
|
+
tonietoolbox-0.3.0.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
|
21
|
+
tonietoolbox-0.3.0.dist-info/entry_points.txt,sha256=oqpeyBxel7aScg35Xr4gZKnf486S5KW9okqeBwyJxxc,60
|
22
|
+
tonietoolbox-0.3.0.dist-info/top_level.txt,sha256=Wkkm-2p7I3ENfS7ZbYtYUB2g-xwHrXVlERHfonsOPuE,13
|
23
|
+
tonietoolbox-0.3.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|