oti
July 19, 2021, 2:46pm
1
Hi. Is there a way to extract a full set of tag information on selected files in mp3tag to a text file?
I've been using ffprobe with a script to build a full tag information csv file but ffprobe lacks a lot compared to mp3tag with regards to which file types it supports and how much the file type support includes. Especially with .wav and .wma files, ffprobe shows much less information than mp3tag does. It'd be much better for me to use mp3tag to generate the data I need. Preferably from command prompt, but as this is raw data, I can export it from the windows interactive program as well.
Regards, oti
There is no way to start an export with command line parameters.
Did you have a look at the export function ?
There are quite a number of sample scripts shipped with MP3tag. Perhaps you can use one as basis for your requirements.
oti
July 19, 2021, 3:06pm
3
No, I haven't - yet. But will have a look at it now. Thanks for the tip.
oti
July 19, 2021, 5:57pm
4
I have now worked through the export tool. It is exactly what I was looking for. However, I wish there was a complete list of tags that mp3tag supports. The list printed on the webpage isn't complete.
Which one do you mean?
Here is a list:
and here is another one with more properties:
Please note that MP3 files can also have user-defined fields which MP3tag cannot guess (but shows, once read).
I have set up an CSV export using Phil Harvey's exiftool.
Executing a batch file, exiftool will run for every subdirectory in order to create seperate .csv files. If you choose the top level directory, you only have to call it once.
Which tags are red is selected by a .fmt file. I usually use a "small.fmt" file, to extract just a few tags. But if you want it all (and want it now) you can use "all.fmt".
Here is the batch:
.\exiftool.exe -p small.fmt -m -csv "e:\Music\Alben\0-9" -r -charset filename=LATIN >c:\temp\mp3info\csv\0-9.csv
.\exiftool.exe -p small.fmt -m -csv "e:\Music\Alben\a" -r -charset filename=LATIN >c:\temp\mp3info\csv\a.csv
.\exiftool.exe -p small.fmt -m -csv "e:\Music\Alben\b" -r -charset filename=LATIN >c:\temp\mp3info\csv\b.csv
.\exiftool.exe -p small.fmt -m -csv "e:\Music\Alben\c" -r -charset filename=LATIN >c:\temp\mp3info\csv\c.csv
This is the "small.fmt":
|#[HEAD]Directory|FileName|Artist|Albumartist|Album|Disc|Track|Title|Duration|FileType|
|$Directory|$FileName|$Artist|$Albumartist|$Album|$Discnumber|$Track|$Title|$Duration|$FileType|
And here is the "all.fmt" file for are all tags:
#[HEAD]"FileName";"Directory";"FileSize";"FileType";"FileTypeExtension";"FileName";"MPEGAudioVersion";"AudioLayer";"AudioBitrate";"SampleRate";"ChannelMode";"MSStereo";"IntensityStereo";"CopyrightFlag";"OriginalMedia";"Emphasis";"Encoder";"LameVBRQuality";"LameQuality";"LameMethod";"LameLowPassFilter";"LameBitrate";"LameStereoMode";"Duration";"ID3v1:Artist";"ID3v1:Album";"ID3v1:Track";"ID3v1:Title";"ID3v1:Year";"ID3v1:Comment";"ID3v1:Genre";"ID3v1_Enh:Artist2";"ID3v1_Enh:Album2";"ID3v1_Enh:Title2";"ID3v1_Enh:Speed";"ID3v1_Enh:Medium";"ID3v1_Enh:Fast";"ID3v1_Enh:Hardcore";"ID3v1_Enh:Genre";"ID3v1_Enh:StartTime ";"ID3v1_Enh:EndTime ";"ID3v2_2:Artist";"ID3v2_2:Album";"ID3v2_2:Track";"ID3v2_2:Title";"ID3v2_2:Year";"ID3v2_2:Comment";"ID3v2_2:Genre";"ID3v2_2:Length";"ID3v2_2:Compilation";"ID3v2_2:AlbumArtistSortOrder";"ID3v2_2:AlbumSortOrder";"ID3v2_2:ComposerSortOrder";"ID3v2_2:PlayCounter";"ID3v2_2:InvolvedPeople";"ID3v2_2:iTunesU";"ID3v2_2:Podcast";"ID3v2_2:Picture";"ID3v2_2:PictureFormat";"ID3v2_2:PictureType";"ID3v2_2:PictureDescription";"ID3v2_2:Popularimeter";"ID3v2_2:RelativeVolumeAdjustment";"ID3v2_2:SynLyrics";"ID3v2_2:BeatsPerMinute";"ID3v2_2:Composer";"ID3v2_2:Copyright";"ID3v2_2:Date";"ID3v2_2:PlaylistDelay";"ID3v2_2:EncodedBy";"ID3v2_2:FileType";"ID3v2_2:Time";"ID3v2_2:InitialKey";"ID3v2_2:Language";"ID3v2_2:Media";"ID3v2_2:OriginalArtist";"ID3v2_2:OriginalFileName";"ID3v2_2:OriginalLyricist";"ID3v2_2:OriginalReleaseYear";"ID3v2_2:OriginalAlbum";"ID3v2_2:Band";"ID3v2_2:Conductor";"ID3v2_2:InterpretedBy";"ID3v2_2:PartOfSet";"ID3v2_2:Publisher";"ID3v2_2:ISRC";"ID3v2_2:RecordingDates";"ID3v2_2:Size";"ID3v2_2:PerformerSortOrder";"ID3v2_2:EncoderSettings";"ID3v2_2:TitleSortOrder";"ID3v2_2:Grouping";"ID3v2_2:Subtitle";"ID3v2_2:Lyricist";"ID3v2_2:UserDefinedText";"ID3v2_2:Lyrics";"ID3v2_2:FileURL";"ID3v2_2:ArtistURL";"ID3v2_2:SourceURL";"ID3v2_2:CommercialURL";"ID3v2_2:CopyrightURL";"ID3v2_2:PublisherURL";"ID3v2_2:UserDefinedURL";"ID3v2_3:Artist";"ID3v2_3:Album";"ID3v2_3:Track";"ID3v2_3:Title";"ID3v2_3:Year";"ID3v2_3:Comment";"ID3v2_3:Genre";"ID3v2_3:Compilation";"ID3v2_3:TitleSortOrder";"ID3v2_3:InvolvedPeople";"ID3v2_3:iTunesU";"ID3v2_3:MusicCDIdentifier";"ID3v2_3:Ownership";"ID3v2_3:PlayCounter";"ID3v2_3:Podcast";"ID3v2_3:Popularimeter";"ID3v2_3:SynLyrics";"ID3v2_3:BeatsPerMinute";"ID3v2_3:PodcastCategory";"ID3v2_3:Composer";"ID3v2_3:Copyright";"ID3v2_3:Date";"ID3v2_3:PodcastDescription";"ID3v2_3:PlaylistDelay";"ID3v2_3:EncodedBy";"ID3v2_3:Lyricist";"ID3v2_3:FileType";"ID3v2_3:PodcastID";"ID3v2_3:Time";"ID3v2_3:Grouping";"ID3v2_3:Subtitle";"ID3v2_3:InitialKey";"ID3v2_3:PodcastKeywords";"ID3v2_3:Language";"ID3v2_3:Length";"ID3v2_3:Media";"ID3v2_3:OriginalAlbum";"ID3v2_3:OriginalFileName";"ID3v2_3:OriginalLyricist";"ID3v2_3:OriginalArtist";"ID3v2_3:OriginalReleaseYear";"ID3v2_3:FileOwner";"ID3v2_3:Band";"ID3v2_3:Conductor";"ID3v2_3:InterpretedBy";"ID3v2_3:PartOfSet";"ID3v2_3:Publisher";"ID3v2_3:RecordingDates";"ID3v2_3:InternetRadioStationName";"ID3v2_3:InternetRadioStationOwner";"ID3v2_3:Size";"ID3v2_3:AlbumArtistSortOrder";"ID3v2_3:AlbumSortOrder";"ID3v2_3:ComposerSortOrder";"ID3v2_3:ISRC";"ID3v2_3:EncoderSettings";"ID3v2_3:UserDefinedText";"ID3v2_3:TermsOfUse";"ID3v2_3:Lyrics";"ID3v2_3:CommercialURL";"ID3v2_3:CopyrightURL";"ID3v2_3:PodcastURL";"ID3v2_3:FileURL";"ID3v2_3:ArtistURL";"ID3v2_3:SourceURL";"ID3v2_3:InternetRadioStationURL";"ID3v2_3:PaymentURL";"ID3v2_3:PublisherURL";"ID3v2_3:UserDefinedURL";"ID3v2_3:OriginalReleaseTime";"ID3v2_3:PerformerSortOrder";"ID3v2_4:Artist";"ID3v2_4:Album";"ID3v2_4:Track";"ID3v2_4:Title";"ID3v2_4:Comment";"ID3v2_4:Genre";"ID3v2_4:Compilation";"ID3v2_4:iTunesU";"ID3v2_4:MusicCDIdentifier";"ID3v2_4:Ownership";"ID3v2_4:PlayCounter";"ID3v2_4:Podcast";"ID3v2_4:Popularimeter";"ID3v2_4:Private";"ID3v2_4:RelativeVolumeAdjustment";"ID3v2_4:SynLyrics";"ID3v2_4:BeatsPerMinute";"ID3v2_4:PodcastCategory";"ID3v2_4:Composer";"ID3v2_4:Copyright";"ID3v2_4:EncodingTime";"ID3v2_4:PodcastDescription";"ID3v2_4:PlaylistDelay";"ID3v2_4:OriginalReleaseTime";"ID3v2_4:RecordingTime";"ID3v2_4:ReleaseTime";"ID3v2_4:TaggingTime";"ID3v2_4:EncodedBy";"ID3v2_4:Lyricist";"ID3v2_4:FileType";"ID3v2_4:PodcastID";"ID3v2_4:InvolvedPeople";"ID3v2_4:Grouping";"ID3v2_4:Subtitle";"ID3v2_4:InitialKey";"ID3v2_4:PodcastKeywords";"ID3v2_4:Language";"ID3v2_4:Length";"ID3v2_4:MusicianCredits";"ID3v2_4:Media";"ID3v2_4:Mood";"ID3v2_4:OriginalAlbum";"ID3v2_4:OriginalFileName";"ID3v2_4:OriginalLyricist";"ID3v2_4:OriginalArtist";"ID3v2_4:FileOwner";"ID3v2_4:Band";"ID3v2_4:Conductor";"ID3v2_4:InterpretedBy";"ID3v2_4:PartOfSet";"ID3v2_4:ProducedNotice";"ID3v2_4:Publisher";"ID3v2_4:InternetRadioStationName";"ID3v2_4:InternetRadioStationOwner";"ID3v2_4:ComposerSortOrder";"ID3v2_4:PerformerSortOrder";"ID3v2_4:TitleSortOrder";"ID3v2_4:AlbumArtistSortOrder";"ID3v2_4:AlbumSortOrder";"ID3v2_4:ISRC";"ID3v2_4:EncoderSettings";"ID3v2_4:SetSubtitle";"ID3v2_4:UserDefinedText";"ID3v2_4:TermsOfUse";"ID3v2_4:Lyrics";"ID3v2_4:CommercialURL";"ID3v2_4:CopyrightURL";"ID3v2_4:PodcastURL";"ID3v2_4:FileURL";"ID3v2_4:ArtistURL";"ID3v2_4:SourceURL";"ID3v2_4:InternetRadioStationURL";"ID3v2_4:PaymentURL";"ID3v2_4:PublisherURL";"ID3v2_4:UserDefinedURL";"ID3v2_4:OriginalReleaseTime";"ID3v2_4:PerformerSortOrder";"ID3v2_4:TitleSortOrder";;"APE:Artist";"APE:Album";"APE:Track";"APE:Title";"APE:Duration";"APE:Genre";"APE:Year";"APE:ToolName";"APE:ToolVersion";"APE:CompressionLevel";"APE:BlocksPerFrame";"APE:FinalFrameBlocks";"APE:TotalFrames";"APE:BitsPerSample";"APE:Channels";"APE:SampleRate";"APE:APEVersion";"APE:CompressionLevel";"APE:Channels";"APE:SampleRate";"APE:TotalFrames";"APE:FinalFrameBlocks"
"$FileName";"$Directory";"$FileSize";"$FileType";"$FileTypeExtension";"$FileName";"$MPEGAudioVersion";"$AudioLayer";"$AudioBitrate";"$SampleRate";"$ChannelMode";"$MSStereo";"$IntensityStereo";"$CopyrightFlag";"$OriginalMedia";"$Emphasis";"$Encoder";"$LameVBRQuality";"$LameQuality";"$LameMethod";"$LameLowPassFilter";"$LameBitrate";"$LameStereoMode";"$Duration";"$ID3v1:Artist";"$ID3v1:Album";"$ID3v1:Track";"$ID3v1:Title";"$ID3v1:Year";"$ID3v1:Comment";"$ID3v1:Genre";"$ID3v1_Enh:Artist2";"$ID3v1_Enh:Album2";"$ID3v1_Enh:Title2";"$ID3v1_Enh:Speed";"$ID3v1_Enh:Medium";"$ID3v1_Enh:Fast";"$ID3v1_Enh:Hardcore";"$ID3v1_Enh:Genre";"$ID3v1_Enh:StartTime ";"$ID3v1_Enh:EndTime ";"$ID3v2_2:Artist";"$ID3v2_2:Album";"$ID3v2_2:Track";"$ID3v2_2:Title";"$ID3v2_2:Year";"$ID3v2_2:Comment";"$ID3v2_2:Genre";"$ID3v2_2:Length";"$ID3v2_2:Compilation";"$ID3v2_2:AlbumArtistSortOrder";"$ID3v2_2:AlbumSortOrder";"$ID3v2_2:ComposerSortOrder";"$ID3v2_2:PlayCounter";"$ID3v2_2:InvolvedPeople";"$ID3v2_2:iTunesU";"$ID3v2_2:Podcast";"$ID3v2_2:Picture";"$ID3v2_2:PictureFormat";"$ID3v2_2:PictureType";"$ID3v2_2:PictureDescription";"$ID3v2_2:Popularimeter";"$ID3v2_2:RelativeVolumeAdjustment";"$ID3v2_2:SynLyrics";"$ID3v2_2:BeatsPerMinute";"$ID3v2_2:Composer";"$ID3v2_2:Copyright";"$ID3v2_2:Date";"$ID3v2_2:PlaylistDelay";"$ID3v2_2:EncodedBy";"$ID3v2_2:FileType";"$ID3v2_2:Time";"$ID3v2_2:InitialKey";"$ID3v2_2:Language";"$ID3v2_2:Media";"$ID3v2_2:OriginalArtist";"$ID3v2_2:OriginalFileName";"$ID3v2_2:OriginalLyricist";"$ID3v2_2:OriginalReleaseYear";"$ID3v2_2:OriginalAlbum";"$ID3v2_2:Band";"$ID3v2_2:Conductor";"$ID3v2_2:InterpretedBy";"$ID3v2_2:PartOfSet";"$ID3v2_2:Publisher";"$ID3v2_2:ISRC";"$ID3v2_2:RecordingDates";"$ID3v2_2:Size";"$ID3v2_2:PerformerSortOrder";"$ID3v2_2:EncoderSettings";"$ID3v2_2:TitleSortOrder";"$ID3v2_2:Grouping";"$ID3v2_2:Subtitle";"$ID3v2_2:Lyricist";"$ID3v2_2:UserDefinedText";"$ID3v2_2:Lyrics";"$ID3v2_2:FileURL";"$ID3v2_2:ArtistURL";"$ID3v2_2:SourceURL";"$ID3v2_2:CommercialURL";"$ID3v2_2:CopyrightURL";"$ID3v2_2:PublisherURL";"$ID3v2_2:UserDefinedURL";"$ID3v2_3:Artist";"$ID3v2_3:Album";"$ID3v2_3:Track";"$ID3v2_3:Title";"$ID3v2_3:Year";"$ID3v2_3:Comment";"$ID3v2_3:Genre";"$ID3v2_3:Compilation";"$ID3v2_3:TitleSortOrder";"$ID3v2_3:InvolvedPeople";"$ID3v2_3:iTunesU";"$ID3v2_3:MusicCDIdentifier";"$ID3v2_3:Ownership";"$ID3v2_3:PlayCounter";"$ID3v2_3:Podcast";"$ID3v2_3:Popularimeter";"$ID3v2_3:SynLyrics";"$ID3v2_3:BeatsPerMinute";"$ID3v2_3:PodcastCategory";"$ID3v2_3:Composer";"$ID3v2_3:Copyright";"$ID3v2_3:Date";"$ID3v2_3:PodcastDescription";"$ID3v2_3:PlaylistDelay";"$ID3v2_3:EncodedBy";"$ID3v2_3:Lyricist";"$ID3v2_3:FileType";"$ID3v2_3:PodcastID";"$ID3v2_3:Time";"$ID3v2_3:Grouping";"$ID3v2_3:Subtitle";"$ID3v2_3:InitialKey";"$ID3v2_3:PodcastKeywords";"$ID3v2_3:Language";"$ID3v2_3:Length";"$ID3v2_3:Media";"$ID3v2_3:OriginalAlbum";"$ID3v2_3:OriginalFileName";"$ID3v2_3:OriginalLyricist";"$ID3v2_3:OriginalArtist";"$ID3v2_3:OriginalReleaseYear";"$ID3v2_3:FileOwner";"$ID3v2_3:Band";"$ID3v2_3:Conductor";"$ID3v2_3:InterpretedBy";"$ID3v2_3:PartOfSet";"$ID3v2_3:Publisher";"$ID3v2_3:RecordingDates";"$ID3v2_3:InternetRadioStationName";"$ID3v2_3:InternetRadioStationOwner";"$ID3v2_3:Size";"$ID3v2_3:AlbumArtistSortOrder";"$ID3v2_3:AlbumSortOrder";"$ID3v2_3:ComposerSortOrder";"$ID3v2_3:ISRC";"$ID3v2_3:EncoderSettings";"$ID3v2_3:UserDefinedText";"$ID3v2_3:TermsOfUse";"$ID3v2_3:Lyrics";"$ID3v2_3:CommercialURL";"$ID3v2_3:CopyrightURL";"$ID3v2_3:PodcastURL";"$ID3v2_3:FileURL";"$ID3v2_3:ArtistURL";"$ID3v2_3:SourceURL";"$ID3v2_3:InternetRadioStationURL";"$ID3v2_3:PaymentURL";"$ID3v2_3:PublisherURL";"$ID3v2_3:UserDefinedURL";"$ID3v2_3:OriginalReleaseTime";"$ID3v2_3:PerformerSortOrder";"$ID3v2_4:Artist";"$ID3v2_4:Album";"$ID3v2_4:Track";"$ID3v2_4:Title";"$ID3v2_4:Comment";"$ID3v2_4:Genre";"$ID3v2_4:Compilation";"$ID3v2_4:iTunesU";"$ID3v2_4:MusicCDIdentifier";"$ID3v2_4:Ownership";"$ID3v2_4:PlayCounter";"$ID3v2_4:Podcast";"$ID3v2_4:Popularimeter";"$ID3v2_4:Private";"$ID3v2_4:RelativeVolumeAdjustment";"$ID3v2_4:SynLyrics";"$ID3v2_4:BeatsPerMinute";"$ID3v2_4:PodcastCategory";"$ID3v2_4:Composer";"$ID3v2_4:Copyright";"$ID3v2_4:EncodingTime";"$ID3v2_4:PodcastDescription";"$ID3v2_4:PlaylistDelay";"$ID3v2_4:OriginalReleaseTime";"$ID3v2_4:RecordingTime";"$ID3v2_4:ReleaseTime";"$ID3v2_4:TaggingTime";"$ID3v2_4:EncodedBy";"$ID3v2_4:Lyricist";"$ID3v2_4:FileType";"$ID3v2_4:PodcastID";"$ID3v2_4:InvolvedPeople";"$ID3v2_4:Grouping";"$ID3v2_4:Subtitle";"$ID3v2_4:InitialKey";"$ID3v2_4:PodcastKeywords";"$ID3v2_4:Language";"$ID3v2_4:Length";"$ID3v2_4:MusicianCredits";"$ID3v2_4:Media";"$ID3v2_4:Mood";"$ID3v2_4:OriginalAlbum";"$ID3v2_4:OriginalFileName";"$ID3v2_4:OriginalLyricist";"$ID3v2_4:OriginalArtist";"$ID3v2_4:FileOwner";"$ID3v2_4:Band";"$ID3v2_4:Conductor";"$ID3v2_4:InterpretedBy";"$ID3v2_4:PartOfSet";"$ID3v2_4:ProducedNotice";"$ID3v2_4:Publisher";"$ID3v2_4:InternetRadioStationName";"$ID3v2_4:InternetRadioStationOwner";"$ID3v2_4:ComposerSortOrder";"$ID3v2_4:PerformerSortOrder";"$ID3v2_4:TitleSortOrder";"$ID3v2_4:AlbumArtistSortOrder";"$ID3v2_4:AlbumSortOrder";"$ID3v2_4:ISRC";"$ID3v2_4:EncoderSettings";"$ID3v2_4:SetSubtitle";"$ID3v2_4:UserDefinedText";"$ID3v2_4:TermsOfUse";"$ID3v2_4:Lyrics";"$ID3v2_4:CommercialURL";"$ID3v2_4:CopyrightURL";"$ID3v2_4:PodcastURL";"$ID3v2_4:FileURL";"$ID3v2_4:ArtistURL";"$ID3v2_4:SourceURL";"$ID3v2_4:InternetRadioStationURL";"$ID3v2_4:PaymentURL";"$ID3v2_4:PublisherURL";"$ID3v2_4:UserDefinedURL";"$ID3v2_4:OriginalReleaseTime";"$ID3v2_4:PerformerSortOrder";"$ID3v2_4:TitleSortOrder";;"$APE:Artist";"$APE:Album";"$APE:Track";"$APE:Title";"$APE:Duration";"$APE:Genre";"$APE:Year";"$APE:ToolName";"$APE:ToolVersion";"$APE:CompressionLevel";"$APE:BlocksPerFrame";"$APE:FinalFrameBlocks";"$APE:TotalFrames";"$APE:BitsPerSample";"$APE:Channels";"$APE:SampleRate";"$APE:APEVersion";"$APE:CompressionLevel";"$APE:Channels";"$APE:SampleRate";"$APE:TotalFrames";"$APE:FinalFrameBlocks
"
small.fmt is seperated by TAB, wheras all.fmt is seperated by ";"
oti
November 9, 2021, 9:40am
7
Thanks for the links. And sorry for delayed reply. The list on the mp3tag webpage isn't complete. I've tested by adding the tag 'BAND' (not mentioned on the webpage list) to the mp3tag view and now this tag is included. I'm pretty sure there are other tags as well that isn't there and I am hoping to find a complete list of tags somewhere.
and BAND is a user-definded field.
I would also like to draw you attention to the $list() function, available in an export.
I don't know what the purpose of such a list would be as I assume it is rather tiring so manually scan it.
I would ...
load all files
select all files
Press Alt-T to open the extended tags dialogue.
The dialogue "Extended tags" then shows a list of all tag fields of all files.
Then it should be easy to either remove the fields that are not assumed necessary or filter for files that have a special field to check the contents - and treat it accordingly.
One would have to repeat that process for every dubious field.
Later, when all files have been cleaned up, it should be just as easy to use a dedicated export script to retrieve the field data.