toniebox-reverse-engineering / teddy Goto Github PK
View Code? Open in Web Editor NEWWith this tool you can dump existing files for the famous audio box or create custom ones.
With this tool you can dump existing files for the famous audio box or create custom ones.
Hi.
I try to encode an audiobook that contains 107 single mp3 chapters.
teddy converts all the files seemingly in the right order, but:
after successfull encode all chapters are in the wrong order.
I tryed to add mp3 tags with track numbers as well as numbering within the title and filenames. nothing helps.
what do I have to do to get an audiobook with the right ordered chapters?
There should be an cache for Tonie images of be able to Show them when working offline.
Hi,
I was trying to save all tracks on my creative tonie, but it only shows the first three, the rest isn’t visible.
What can I do to fix it? Unfortunately, i can’t change the position.
Thank you for the help!
TeddyBench worked great (Mac M1 w/ VM = wishlist to have a cross-platform solution), one small issue with the current version is that the pre-filled in UID only had 6 digits: E00403
rather than E0040350
. The current n00b guide post mentions that only the last 8 unique digits need to be entered.
Sorting of this dates/times is done wrong.:
Sorting within teddybench by date results in wrong order.
01.02.2023 22:49:14
01.02.2023 22:52:42
02.02.2023 01:10:12
02.06.2023 00:07:54
03.01.2023 23:30:50
03.03.2023 18:46:10
06.05.2023 18:48:28
08.02.2023 22:15:10
09.02.2023 00:54:48
10.03.2023 15:25:44
....
Sorting seems to be done numeric but not by timestamp.
To reproduce Adjust Modify and Create Timestamp of files according to above examples and sort by date.
e.g. i ensured that both timestamps modify and Create are identical.
for directory as for files.
Currently (version 1.2.0 seems to be latest?), output filenames use the pattern "%s-%08X - Track #%d.ogg", with the original filename for the first variable, and - apparently - the audio ID for the second. It's the third variable part that breaks sorting order once there are more than 9 tracks. Since tonies are limited to 99 tracks, using "%02d" instead of "%d" should be sufficient to fix this.
I currently cannot use TeddyBench, therefore I'm unable to check whether it's affected as well.
PS.: Checking the source code (TonieAudio.cs) I'm now aware it's not C (line 856) and the suggested format string doesn't apply, but what about replacing
string fileName = Path.Combine(outDirectory, outFileName + " - Track #" + (chapter + 1) + ".ogg");
with something like
string fileName = Path.Combine(outDirectory, outFileName + " - Track #" + (chapter + 1) + ".ogg");
if (chapter + 1 < 10)
{
fileName = Path.Combine(outDirectory, outFileName + " - Track #0" + (chapter + 1) + ".ogg");
}
? (Should I set up a MR for this?)
When a Tonie is deleted the display refreshment of TeddyBench is not working. The Tonie is still present. but file deletion on the CONTENT folder is working.
Workaround: Restart of TeddyBench
Observed under Ubuntu 20.04 using https://github.com/AlbrechtL/teddy/releases/tag/v1.2.4-linux
Hi there,
sorry if this is a stupid question, but i am stuck a bit right now.
I am using your Teddy Software for more than 2 years now and i am gratefull for the opportunities this gives me for my 2 kids.
Till now i am using the teddy.ex on cli in Windows. For every Tonie-Fig i use a simple .bat file.
I have a folder for each tonie with an input directory inside and this batch file.
I put my mp3 into the inout folder, double click the batch file and copy the newly created folder just over to the sd card.
Works fine! no problems at all!
BUT :-)
I am lazy.....
and i like your teddybench (look and feel).
But how can i just add new content to one of the figurines?
If i say ADD and add 2 mp3s, hit NO on the ID question then i have to disconnect the box from internet, otherwise the content will be overwritten after first play.
Is there a simple way to just overwrite the existing songs with new songs and fix the ID by itself like i do with the CLI tool?
My batch looks like this (only example)
....\teddy -m encode .\in\ --id=0x5HDHDHDHD --output=.\565656565
echo KleineHexe ist 5656565
Maybe its already possible, but i am to blind to see....
keep on with the great work!
Stefan
Hi community,
has anyone already written a scraper to extract the track names of Tonies? E.g., from https://tonies.de/shop/tonies/die-drei-fragezeichen/der-super-papagei-limited/#tabs--large-up__titelliste
I am looking into this as Gambrius' JSON (http://gt-blog.de/JSON/tonies.json) is missing nearly all tracks and I would like teddy to include the track names into the .ogg metadata, to then add it to the backup filenames (see issue #29 for the latter).
If no one has done it already, I will try to do it myself and share the code here.
Thanks!
I want to read the content of the original tonie, but the password is wrong. It works only with the custom tags. How can i change it in the application?
I put together an archive with the TeddyBench binaries with Linux support (Tested with Ubuntu 20.04).
Download
https://github.com/AlbrechtL/teddy/releases/tag/v1.2.4-linux
When I got some feedback from you. I will open a pull request to the official teddy sources. If you found a problem open a new issue please.
As a side effect of using Linux (FFMPEG) you will be able to import audio files other than MP3.
By double click on the Tonie an extra window is opened to reassign a UID. When this window is acknowledged with the OK button, a complete rebuild of the content screen is made and it takes a short time all Tonies are recognized again.
And after the change the focus should stay on the just reassigned tonie.
The latest version is crashing if I emulate a Tag and if I want to stop it by "cancel" it.
Older versions:
mostly didnt crashed but could not stop emulating by "cancel". So I needed to disable "autodetect". But Reenabling "autodetect" could not successful reinitialize proxmark (the green light stopped). Then I had to do disable and reenable autodetect again twice (or three times if the app did not crashed/gotclosed). so that I could emulate the next tag. This was on Windows 10.
Now (with version 1.4.4) I updated to Windows 11 and still the same. Anybody else having this behaviour or is it related to the proxmark maybe?
Currently the custom Tonie names are stored inside the file customTonies.json
which is located where the TeddyBench.exe
is stored. When using different computers to covert custom Tonies it is also necessary to copy customTonies.json
around.
Makes it sense to store customTonies.json
at the CONTENT
folder as well?
The advantaged would be that also the custom Tonie names are saved together with the custom Tonie files.
If i change the name of an unknown tag the software crashed.
I build my own form the last source
36f5e54
VirtualStudio give me the hint that the error occurs on:
"CustomTonies.ContainsKey(tag.Hash) the value can not be NULL"
Rename with right click is not working, too.
The rename of an known Tonie and an unknown tonie is working, only custom tags are the Problem right now.
Teddy does not verify, if the directory selected by the user is a valid one.
If i.e. the sd card itself is selected by the user, the content will be put on the same level as the content folder => not detected by toniebox
I could imagine 2 solutions:
edit:
version: 1.1.2-master+f4858ce
Currently, the .ogg files of backed-up tracks are named consecutively, e.g., ID-ID - Track #1.ogg
.
Even if tonie name and track names are present in the JSON one can provide to teddy, the info is only included into the file metadata.
It would make handling the backup files much easier if these infos could be directly included into the filenames!
As a workaround, I am currently looking into extracting the .ogg metadata to automatically rename the .ogg files.
If I get to a result I'll post it here.
If anyone already has an automatic solution I'll gladly save time and use it :-)
Thanks!
The subject says it all.
The rationale behind it: Nowadays it's not necessary to convert ogg to mp3 to listen to it; thus Teddy should be able to handle ogg input files (e.g., ones obtained from previous "decode" steps) as well, and just skip the encoding step.
Would it also be possible to mix ogg and mp3 input?
A right click content menu on each single tonie would be useful to run thirteen tasks on this Tonie. Therefor the buttons on the side could be spared.
Possible features:
I really like to see the "Open directory in Explorer" feature.
Hey there :)
Is there somewhere a guide available how to use teddybench ?
Best regards, Hazling
When using lower case letters when changing the UID, teddybench (ver. 1.2.1) crashes with an Exception error
************** Ausnahmetext **************
System.ArgumentOutOfRangeException: Der Index und die Länge müssen sich auf eine Position in der Zeichenfolge beziehen.
Parametername: length
bei System.String.Substring(Int32 startIndex, Int32 length)
bei TeddyBench.TeddyMain.ReassignSelected()
bei TeddyBench.TeddyMain.lstTonies_DoubleClick(Object sender, EventArgs e)
bei System.Windows.Forms.Control.OnDoubleClick(EventArgs e)
bei System.Windows.Forms.ListView.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
TeddyBench closes because of an uncaught exception if a UID is entered with lower case letters.
Example:
Try to add a mp3 file with UID e0 04 03 50 12 b1 61 62.
Analysis:
TeddyBench.TeddyMain function EncodeFile(..) has the following line
Path.Combine(newDir, ReverseUid(uid).Substring(8, 8));
that builds the filename with path. It uses ReverseUid with the following code
public static string ReverseUid(string uid)
{
List<string> groups = (from Match m in Regex.Matches(uid, @"[A-F0-9]{2}") select m.Value).ToList();
groups.Reverse();
string ret = string.Join("", groups.ToArray());
return ret;
}
Here we see the critical part: the regular expression works on upper case UIDs only. Thus, if we enter lower case letters, the string is not correctly parsed and thus, the substring Substring(8,8) that is applied to ReverseUid(uid) throws an OutOfBound Exception.
Recommended Fixes:
I recommend two fixes.
First, the code line
List<string> groups = (from Match m in Regex.Matches(uid, @"[A-F0-9]{2}") select m.Value).ToList();
in the function ReverseUid() in MainForm.cs should work with upper case letters
List<string> groups = (from Match m in Regex.Matches(uid, @"[A-Fa-f0-9]{2}") select m.Value).ToList();
.
Even if this is enough, I like the idea to always take the input of the user id and convert it to upper case so all the methods afterwards use the string in upper case. We achieve this with changing
Uid = txtUid.Text
in AskUIDForm.cs to
Uid = txtUid.Text.ToUpper();
Suggested fixes are available in pull request #17 .
[ERROR] Failed to process
Exception: System.OutOfMemoryException
Message: Eine Ausnahme vom Typ "System.OutOfMemoryException" wurde ausgelöst.
Stacktrace: bei TonieFile.TonieAudio.BuildFromFiles(List`1 sourceFiles, UInt32 audioId, Int32 bitRate, Boolean useVbr, String prefixLocation)
bei TonieFile.TonieAudio..ctor(String[] sources, UInt32 audioId, Int32 bitRate, Boolean useVbr, String prefixLocation)
bei Teddy.Program.Main(String[] args)
After Encoding some Folders, the "Teddy.exe" aborts at the End. Tried with 2 different PC`s and decreased the Bitrate and CBR to VBR. Is it possible that the Filesize is maxed out?
Using Teddy on MacOS, I seem to be unable to read mp3 files for encoding (both in VBR and CBR modes):
mono ../Teddy.exe -m encode --vbr -v -v -v -o NEW.20230121T140455 test.mp3
[Mode: encode, 96 kbps, VBR]
Track 1 - test.mp3 [
[ERROR] Failed to process
Exception: System.Exception
Message: Failed processing test.mp3
Stacktrace: at TonieFile.TonieAudio.GenerateAudio (System.Collections.Generic.List`1[T] sourceFiles, System.UInt32 audioId, System.Int32 bitRate, System.Boolean useVbr, System.String prefixLocation) [0x00450] in <7eb3521780ee44579babbcaa2588b834>:0
at TonieFile.TonieAudio.BuildFromFiles (System.Collections.Generic.List`1[T] sourceFiles, System.UInt32 audioId, System.Int32 bitRate, System.Boolean useVbr, System.String prefixLocation) [0x00000] in <7eb3521780ee44579babbcaa2588b834>:0
at TonieFile.TonieAudio..ctor (System.String[] sources, System.UInt32 audioId, System.Int32 bitRate, System.Boolean useVbr, System.String prefixLocation) [0x00046] in <7eb3521780ee44579babbcaa2588b834>:0
at Teddy.Program.Main (System.String[] args) [0x00e97] in <7eb3521780ee44579babbcaa2588b834>:0
[Mode: encode, 96 kbps, CBR]
Track 1 - test.mp3 [
[ERROR] Failed to process
Exception: System.Exception
Message: Failed processing test.mp3
Stacktrace: at TonieFile.TonieAudio.GenerateAudio (System.Collections.Generic.List`1[T] sourceFiles, System.UInt32 audioId, System.Int32 bitRate, System.Boolean useVbr, System.String prefixLocation) [0x00450] in <7eb3521780ee44579babbcaa2588b834>:0
at TonieFile.TonieAudio.BuildFromFiles (System.Collections.Generic.List`1[T] sourceFiles, System.UInt32 audioId, System.Int32 bitRate, System.Boolean useVbr, System.String prefixLocation) [0x00000] in <7eb3521780ee44579babbcaa2588b834>:0
at TonieFile.TonieAudio..ctor (System.String[] sources, System.UInt32 audioId, System.Int32 bitRate, System.Boolean useVbr, System.String prefixLocation) [0x00046] in <7eb3521780ee44579babbcaa2588b834>:0
at Teddy.Program.Main (System.String[] args) [0x00e97] in <7eb3521780ee44579babbcaa2588b834>:0
Unfortunately I currently cannot use TeddyBench. Any hints how to further debug this (beyond -v -v -v)? Thanks in advance...
Hi there and THANKS for the great work!
i love the teddy app and the new teddybench.
i also manged to mod the first toniebox to get access to the sd card without opening it. now i can test and play around like i did today.
i got a question and a problem.
question:
when i double click a tonie, i get the uid, i copy this.
then i drag'n'drop a mp3 on this tonie (lion) and the bench opens a new window with the uid field, i paste the copied uid from the lion.
teddy starts to encode and finishes fine. but then the lion picture is exchanged with a random teddy-pic and the name is gone and instead it says the uid and unknow.....
is this normal behavior?
i really would appreciate if the lion picture stays and i can rename it to remember what i put on the tonie.
problem:
as soon as i put the lion-tonie on the box with the edited sd card, the box starts to download the original soundfile and starts playing the lion-audiobook.
tried several audiofiles and many attemps, always same behaviour.
cant get it to work this way. there wqas 1 attemp that did work, but then i deleted the file from the card via toniebench to reassign a new audiofile, since that.... didnt work anymore.
help would be appreciated.
keep on with the work
ps:
i read about the right-click menue, this is not in the latest release right? only if i compile it myself, right?
THANKS A LOT!
It would be great to switch from an old framework that doesn't have many platform support to something newer like Avalonia.
With that there would be so much more platforms supported and so many users could profit from it.
i recognized that encoded Tonie files with TeddyBench 1.2.1 starts always at the beginnig when put the tag on top of the box. Encoding with Teddy 1.0.1. using -m encode -vbr allows to start at the interupted point.
Thank you very much for your great tool! I'm using v1.3.3 on Win10.
Unfortunately, my custom Tonie always starts from the very first track - even if there has been no contact to any other Tonie in between. As soon as I remove the Tonie and put it on the TonieBox again, the first audio track starts from the beginning (00:00 min).
In the case of original Tonies, the audio replays from the last played audio track (e.g. 04:37 min).
Is this a user error by myself or expected behavior of the dumped files by TeddyBench?
Thanks very much!
Hy I tryed tu get Teddybench to copy my mp3's to the SD CARD.
But as soon as i entered the TAG-ID the program crashes.
I used Version 1.21
Win 10 Ryzen 1700X
I now moved the file generated with Teddy CLI manually to the card, and it works as it should :)
But maybe you could tell me what i could debug to get it to run 🤷🏽 .
BTW I used a STRIX Tag with an different UUID / which i was not able to enter in the teddybench (a 1 instead of the prefilled 3 would be needed) but that shouldnt have something to do with the crashing.
Proxmark is kind of laggy, because it is always going through all kind of commands, even if no card is placed onto the Proxmark.
The Process should be
Hi
it would be great to sort the items in TeddyBench by their names.
Teddy crashes when using special characters like ü,ö,ä as custom Tonie name.
Observed under Ubuntu 20.04 using https://github.com/AlbrechtL/teddy/releases/tag/v1.2.4-linux
System.ExecutionEngineException: String conversion error: Illegal byte sequence encounted in the input.
at (wrapper managed-to-native) System.Runtime.InteropServices.Marshal.PtrToStringAnsi(intptr)
at System.Windows.Forms.XplatUIX11.TranslatePropertyToClipboard (System.IntPtr property) [0x0005f] in <a0f8b82443494dec9b517126f4032efe>:0
at System.Windows.Forms.XplatUIX11.UpdateMessageQueue (System.Windows.Forms.XEventQueue queue, System.Boolean allowIdle) [0x00918] in <a0f8b82443494dec9b517126f4032efe>:0
at System.Windows.Forms.XplatUIX11.ClipboardRetrieve (System.IntPtr handle, System.Int32 type, System.Windows.Forms.XplatUI+ClipboardToObject converter) [0x0002f] in <a0f8b82443494dec9b517126f4032efe>:0
at System.Windows.Forms.XplatUI.ClipboardRetrieve (System.IntPtr handle, System.Int32 type, System.Windows.Forms.XplatUI+ClipboardToObject converter) [0x00000] in <a0f8b82443494dec9b517126f4032efe>:0
at System.Windows.Forms.Clipboard.GetDataObject (System.Boolean primary_selection) [0x00039] in <a0f8b82443494dec9b517126f4032efe>:0
at System.Windows.Forms.Clipboard.GetDataObject () [0x00000] in <a0f8b82443494dec9b517126f4032efe>:0
at System.Windows.Forms.TextBoxBase.ProcessKey (System.Windows.Forms.Keys keyData) [0x000a4] in <a0f8b82443494dec9b517126f4032efe>:0
at System.Windows.Forms.TextBoxBase.WndProc (System.Windows.Forms.Message& m) [0x0005b] in <a0f8b82443494dec9b517126f4032efe>:0
at System.Windows.Forms.TextBox.WndProc (System.Windows.Forms.Message& m) [0x0011c] in <a0f8b82443494dec9b517126f4032efe>:0
at System.Windows.Forms.Control+ControlWindowTarget.OnMessage (System.Windows.Forms.Message& m) [0x00000] in <a0f8b82443494dec9b517126f4032efe>:0
at System.Windows.Forms.Control+ControlNativeWindow.WndProc (System.Windows.Forms.Message& m) [0x0000b] in <a0f8b82443494dec9b517126f4032efe>:0
at System.Windows.Forms.NativeWindow.WndProc (System.IntPtr hWnd, System.Windows.Forms.Msg msg, System.IntPtr wParam, System.IntPtr lParam) [0x00085] in <a0f8b82443494dec9b517126f4032efe>:0
Due to a crash of TeddyBench I figured out that when the cfg file is left empty, TeddyBench will not start again.
TedyBench should have a failover function, that when the cfg is empty or the content is corrupt, that it will overwrite the cfg with a standard content / configuration.
Dialog does not appear.
I am starting teddybench already with this cmdline
export MONO_MANAGED_WATCHER=disabled; export MONO_WINFORMS_XIM_STYLE=disabled; mono /opt/Teddy/TeddyBench.exe
setup as described here
https://github.com/AlbrechtL/teddy
Hey guys,
my Norton360 virus scanner is triggered when I download the TeddyBench (Indepenend of the version I download). Is this normal? Someone else is also having this issue?
Best regards,
Hazling
why is the limit set to 2gb when fat32 can write up to 4gb per file?
$ mono .../bin/Teddy.exe -m info -v -v -v $id
[Mode: dump information]
[ERROR] Failed to process '$id/500304E0'
Exception: System.IndexOutOfRangeException
Message: Index was outside the bounds of the array.
Stacktrace: at TonieFile.TonieTools.DumpInfo (System.Text.StringBuilder message, TonieFile.TonieTools+eDumpFormat dumpFormat, System.String file, TonieFile.TonieTools+TonieData[] tonieInfos) [0x00504] in <7eb3521780ee44579babbcaa2588b834>:0
at Teddy.Program.Main (System.String[] args) [0x0086a] in <7eb3521780ee44579babbcaa2588b834>:0
Note that this happens without providing a local tonies.json
(i.e., using the one on the web).
The tonie "model" is 10000990; decode mode works without issues.
Any suggestions how to investigate this further?
Instead of clicking through the Directorys suggest the latest+some more(up to 5?) lastly used directorys
To link audio to an original Tonie figurine the audioID must be the same than of the original audio content.
Therefore should be the possibility given to enter the audioID as well. The default value should be the value that is used right now within the software.
Another way could be a pulldown menu where to select one of the original Tonies (from the JSON file). This could save the look up of the needed audioID.
I downloaded the latest release (v1.2.2), unzipped, and double clicked on TeddyBench.exe. Nothing happens.
I am using a freshly installed Windows 10.
I tried disabling Windows Defender and excluding the TeddyBench directory from scanning. Did not help.
Is there anything else I need to do?
I can not get working Teddy wirth my Proxmark3 Easy. I tried two Proxmark without success.
Log:
[PM3] Try port COM8
[PM3] Device info:
[PM3] BOOTROM_PRESENT Y
[PM3] OSIMAGE_PRESENT Y
[PM3] MODE_BOOTROM N
[PM3] MODE_OS Y
[PM3] UNDERSTANDS_START_FLASH N
[PM3] TryOpen: COM8 did not reply to a ping
[PM3] Failed
Please help
I cannot use TeddyBench, so this may already be addressed in the latest code, but Teddy 1.20 writes the full input file path to the decoded .ogg files:
$ ogginfo 500304E0-$serial\ -\ Track\ #01.ogg
Processing file "500304E0-$serial - Track #01.ogg"...
New logical stream (#1, serial: $serial): type opus
Encoded with Lavf58.45.100
User comments section follows...
encoder=opusenc from opus-tools 0.1.10
encoder_options=--quiet --bitrate 96 --vbr
pad=00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TeddyVersion=1.2.0-master+49d47dd
TeddyFile=/Users/.../$id/500304E0
...
While this provides useful debugging information, one might want to avoid uploading/sharing such a file since information may be used to identify the tonie and the username.
Also, this part of the information appears to make the resulting files change their size, depending on the actual Teddy invocation. I consider this to be a POLA/POLS violation: decoding the same source file should result in identical output, independent of the input location in the filesystem.
Can addition of this information be made optional?
I like to sort my tones by "type".
If I choose "sort by type" while the Toniefiles are still initialized and verified with the JSON file the new recognized Tonies are not sorted to the selected order.
Or if you add Toniefiles (by dragndrop) to the CONTENT, after adding it shows another sorting although the "sort by" is still set to "type".
To organize custom audio within TeddyBench it would be good to add an own picture.
This feature could be archived by adding a right button action to enter an URL to own Artwork.
This URL can be stored within the JSON where the names for the custom audio is saved.
A limitation by pixel size and pic size could be checked after entering the URL.
When there is no Internet Connection TeddyBench is not able to Scan the content even if there is an "tonies.json" - of you close the Programm, Connect to the Internet again and restart TeddyBench is is working like it should
While testing a new attempt at the track scraper, I found this (using a json_pp
pretty-printed version of the "official" file):
$ grep -i -C5 the.birth.of tonies.json
{
"no": "297",
"model": "10000174",
"audio_id": [],
"hash": [],
"title": "Maya The Bee - The birth of Maya",
"series": "Maya The Bee",
"episodes": "The birth of Maya",
"tracks": [],
"release": "0",
"language": "en-gb",
"category": "audio-play",
"pic": "https://08ee523e746768fd7148-f76a52ba8f0c340564df978383fc4de2.ssl.cf3.rackcdn.com/10000227-50000588-b-5zuTgL8H.png",
--
{
"no": "319",
"model": "10000227",
"audio_id": [],
"hash": [],
"title": "Maya The Bee - The birth of Maya",
"series": "Maya The Bee",
"episodes": "The birth of Maya",
"tracks": [],
"release": "1585699200",
"language": "en-gb",
"category": "Audiobook",
"pic": "https://tonies.com/assets/cache/10000227-50000588-b-5zuTgL8H.0e8873e5.png",
Of course there's only one page https://tonies.com/en-gb/tonies/maya-the-bee/the-birth-of-maya/ - which entry does this belong to, and what about the other one? (Apparently the single page refers to the 10000174 model, not the 10000227 one?)
It looks like the scraper should also get the model ID for matching?
C:\Downloads>teddy -m info e:\500304E0-1592653827-96-kbs-11-works
Failed to load JSON:
Error converting value {null} to type 'System.Int32'. Path '[330].no', line 5882, position 16.
[Mode: dump information]
Dump of e:\500304E0-1592653827-96-kbs-11-works (UID 11962738659215E0040350):
Header: AudioID 0x5EEDF803 (2020-06-20T11:50:27)
Header: Length 0x00000FFC [OK]
Header: Padding 0x00000FB7
Header: AudioLen 0x20070CF9 [OK]
Header: Checksum D958DB332F329A38FE82D46675EF898C3BF3BFAE [OK] [NO JSON INFO]
Header: Chapters
Track #1 08:41.70
Track #2 08:45.20
Track #3 06:32.40
Track #4 12:54.86
Track #5 07:56.10
Track #6 17:51.00
Track #7 58:11.53
Track #8 58:51.38
Track #9 57:22.71
Track #10 57:56.07
Track #11 04:22.02
Ogg: Segments 4319332 (min: 32 max: 225 per OggPage)
Ogg: net payload 529471604 byte
Ogg: granules total: 2071919615 (11:59:24.99 hh:mm:ss.ff)
Ogg: granules/page min: 15360 max: 108000 (320ms - 2250ms)
The bold values are actually the value + 60 minutes. Total time is correct.
on linux systems fatattr should be installed.
test-path / if not exist tell user. otherwise execute
SET READONLY ALL
fatattr +r /OPENDIR-PATH/CONTENT//
SET READONLY selected ITEM
fatattr +r /OPENDIR-PATH/CONTENT/*/ITEM
UNHIDE ALL
fatattr -h /OPENDIR-PATH/CONTENT//
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.