How to get a list of all current tags from a mp3 file?


#1

How to get a list of all current tags from a mp3 file?

Does someone know a possibility in Mp3tag to get a report of all tag contents out of a mp3 file regardless of their names (complete tag dump)?
This output what 'extended tags' displays but redirected by script export into a file?
Is there any way to use wildcards to select a group of tags e.g. all tags looking like 'A*'?

Kennt jemand eine Möglichkeit in Mp3tag, mittels Exportskript alle Taginhalte aus einer mp3 Datei auszugeben ungeachtet ihrer Namen (kompletter tag dump)?
Also das was 'Erweiterte Tags' anzeigt mittels Exportskript in eine Datei ausgeben?
Gibt es so etwas wie einen Joker, z.B. für eine Liste aller Taginhalte, die mit 'A' beginnen ('A*')?

DD.20070227.2125


Printing Extended Tag Frames List
Lyrics aus Datei importieren?
feature request: "display all tags"
#2
I've asked for this in the past, I'd still like to see it implemented.

#3

You can try the undocumented scripting function $list:
$list(,: ,$char(10))


#4
$filename(Mp3tag.tagdump.col.txt,ANSI)$list(%%,%%: '',''$char(13)$char(10))

$filename(Mp3tag.tagdump.row.txt,ANSI)$list(%%,%%:'',''|)

Florian, das sieht ja schon recht vielversprechend aus!
Wenn du jetzt nur noch ein anderes Zeichen als Platzhalter erfindest - eben nicht das Komma (!) - dann könnte man vielleicht die Ausgabe sogar noch ansehnlich in Spalten formatieren.

DD.20070303.1510


#5

It would be great if we can stick to English in the international forums.

Can you please explain your problem with the comma separator? What output format do you want to achieve?


#6
$list:
$list(,: ,$char(10))

Florian -

I tested your example and it worked perfectly.

This is just what I was looking for, thanks!

(I don't suppose there are any other 'undocumented' functions out there, are there?)


#7

Ok, back to english language.
In the expression $list(,,) the comma character has in fact not the meaning of a separator but it is really a placeholder.
The first comma is replaced by tag name and the second comma is replaced by tag value.
The function only works when there are coded two comma characters, no one less, no one more.
It seems so that you replace the comma placeholders by your internal processing with the actually contents.

Belonging to the underlying context of your script language this is totally weird functionality.

Concrete example: Output of tagvalue is wanted to be limited to 10 characters ...
$list(,$left(,,10))
... this does not work, because there are three comma characters in the expression,
and no one can imagine what exception would be thrown when using such an expression at other places in Mp3tag.

Or look at this wild thing, that gives really readable output: $list(,$left,(10))

So what can we do to get something of a tagdump function seamlessly integrated into the global Mp3tag context?

I think it should simply read like 'foreach tag do' ...

$loop(%_tag_mask%)
TagName: %_tag_name%
TagValue: %_tag_value%

$loopend()

... with limitation for the case, if %_tag_value% contains binary data, then output should be suppressed or replaced by a special symbol [#BINDATA#] or something else,
... with ability to set %_tag_mask% to something like 'ARTIST*', so it should be a function $SetTagMask('ARTIST*').

$loop($SetTagMask('ARTIST*'))
TagName: %_tag_name%
TagValue: %_tag_value%

$loopend()

DD.20070303.2030


#8

The syntax of the $list function is

$list(, , )

So there is no weird replacing of commas. But you're right: you can't apply scripting functions to the various field names and values (and this won't be possible in future versions of Mp3tag).


#9

Ooohh yesss, my analysis and thoughts were totally weird ...

DD.20070303.2051


#10

Well, I reply to myself, got this so far ...

Mp3tag Tag Dump Row

$filename(Mp3tag.tagdump.row.txt,ANSI)$loop(%_path%)^|_MD5AUDIO:''%_md5audio%''|_MD5:''%_md5%''|_PATH:''%_path%''|$regexp($list(,:'',''|),\r\n,U+000DU+000A)$$$char(13)$char(10)$loopend()

Mp3tag Tag Dump Col

$filename(Mp3tag.tagdump.col.txt,ANSI)$loop(%_path%)^
_MD5AUDIO:''%_md5audio%''
_MD5:''%_md5%''
_PATH:''%_path%''
$regexp($regexp($list(,:'',''$char(13)_$char(10)),\r\n,U+000DU+000A),\r_\n,\r\n)$$

$loopend()

... first steps to support development of a handy backup/restore environment for Mp3tag?

DD.20070304.2342


Show really ALL tags, including unknowns?
Spalten automatisch erzeugen
#11
backup/restore, save tags off when transcoding, export file for a db.... Possibilities are endless

#12

Sorry for going off-topic, but does md5audio do what i would expect: to give a checksum just for the audio part of an mp3, meaning that I can change tags without the md5 changing?


#13

Yes , I think so.
The md5audio hash is the checksum referring only to the audio stream part of the mp3 file.
The md5 hash is the checksum overall of mp3 file including tags.

It think it should be possible to detect stream duplicates by their identically md5audio checksum (having a totally clean unchanged identical mp3 stream in both files which are compared).
Please try it out for yourself and share the result with us.

DD.20070305.1729