sandreas / tone

tone is a cross platform audio tagger and metadata editor to dump and modify metadata for a wide variety of formats, including mp3, m4b, flac and more. It has no dependencies and can be downloaded as single binary for Windows, macOS, Linux and other common platforms.
https://pilabor.com
Apache License 2.0
410 stars 17 forks source link

Failure on tone tag --meta-remove-property recordingdate file.m4b #15

Closed sandreas closed 1 year ago

sandreas commented 2 years ago

The following command does not work:

tone tag --meta-remove-property recordingdate file.m4b 

Probably a Problem with atldotnet or a misuse of the internal API

sandreas commented 2 years ago

This has to do with #17

Something is fishy with Track.RecordingDate and with Track.Description when writing or removing mp4 (m4a, m4b)

advplyr commented 1 year ago

I've tested --meta-remove-property for several other properties like album & description for mp3/m4b and it doesn't work.

tone tag --meta-remove-property="album" file.m4b

output shows it was removed

tone dump file.m4b

album property remains unchanged

advplyr commented 1 year ago

You could also allow setting meta tags to empty strings.

sandreas commented 1 year ago

You could also allow setting meta tags to empty strings.

Yeah unfortunately I found multiple bugs in spectre.console (my console library for C#), reported them and the developers were mostly not responding or told me that I was describing a dotnet issue they can't do anything about, which frustrated me a bit... recently someone else also thought that these issues should be fixed and that there is a major misbehaviour in the argument parsing, which I agree with.

So, until these issues are all fixed and the argument parsing works as expected, it is unreliable to use command line parameters in some edge cases. That's why I invented the tone.json format, which should work reliably in all cases I've tested and which is fully under my control. Using tone.json you can also try to set album: null, which should delete the field (but that is something I did not fully test yet).

Nevertheless, that issue is definitely gonna be paid attention in the the very near future...

advplyr commented 1 year ago

What about the --meta-remove-property? The spectre.console issues are not related to that bug right?

sandreas commented 1 year ago

What about the --meta-remove-property? The spectre.console issues are not related to that bug right?

Correct. I'll try to fix this next release. same for #32

sandreas commented 1 year ago

Mmh I added a new issue describing the problem in atldotnet (see above). The problem is, that I did not find a way to really remove the property in every case, but only setting it to an empty value in case of string.

I implemented the set to empty, but I think it would be more accurate, if remove really means remove. Would you mind if I wait with the next release until I get response?

advplyr commented 1 year ago

No problem, thanks. The other one that is helpful for using in abs is #29