External Tags

Component for foobar2000 v1.5 and newer.

foobar2000 v1.4 version available here.

Released:2023-03-16 12:05
Size:575.5 KB
License:Modified ISC license




Adds tagging support for non-taggable file formats. The tags can be stored in SQLite database or written as external files to the same directory as the target audio files.

For the component to work properly in foobar2000 v1.4 the "External Tags (reader)" decoder must have higher priority than the format to be tagged.

The "External Tags (writer)" decoder should have lowest priority so external tags won't take priority over native tags of any format.

On foobar2000 v1.5 the "External Tags (reader)" decoder is not used and won't be visible. The "External Tags (writer)" decoder is only needed for context commands.

Additional info


1.5.14 (2023-03-16):Recompile with latest SDK and foobar2000 v1.5 compatibility.
1.5.13 (2022-02-14):Changed the component to use SQLite bundled by the player.
1.5.12 (2021-11-08):Added option to prevent automatic external tag creation for read-only files. Removed folder tag path parsing failure messages for unknown protocols.
1.5.11 (2020-09-20):Fixed fallback album art writer to only create external tag when the art isn't blank. Fixed album art fallback writer to create external tag for all subsongs of the file and not just hardcoded subsong 0.
1.5.10 (2020-04-10):Fixed external APEv2 reading.
1.5.9 (2020-03-16):External APEv2 with nothing but ReplayGain data was ignored.
1.5.8 (2019-10-21):Made external tag commit able to use the optional file timestamp preservation feature introduced in foobar2000 v1.5.
1.5.7 (2019-10-16):Changed the filesystem wrapper to only be used for file based paths.
1.5.6 (2019-08-27):Added filesystem wrapper for the custom protocols so optional file timestamp preservation works when editing file tags.
1.5.5 (2019-08-22):Fallback album art writer will now create an external tag from current metadata instead of adding art to a blank tag.
1.5.4 (2019-08-22):The previous two components were incorrectly compiled with foobar2000 v1.3 API compability and didn't function properly. Fixed real file access so editing file tags and committing external tags to files works. Added real file access support to album art handlers so "Edit file tags" can show embedded art in a track even if external tag contains different art.
1.5.3 (2019-08-15):Removed redirect flags from decoders to improve compatibility with foobar2000 v1.4.6
1.5.2 (2019-08-13):Updated to new filter API with album art and dynamic info support.
1.5.1 (2019-08-09):Made the writer component reject anything but the component's internal protocols on foobar2000 v1.5. Restored foo_tube blacklist on older foobar2000 version. Youtube links are now taggable on latest foobar2000 and Youtube playlist loading should work again.
1.5 (2019-08-07):Added support for a new metadata filter API on foobar2000 v1.5 beta 8. On the new foobar2000 version the "External Tags (reader)" decoder is hidden and won't be used. External Tag support currently requires manually enabling the component under Preferences -> Tools -> Track Info Filters. The "External Tags (writer)" decoder is still present for certain features, make sure it has the lowest priority so it can't interfere with normal operation.
1.0.34 (2019-07-23):Made component init more robust.
1.0.33 (2019-07-19):Made the component able to handle new decoder-based Skip Track component. Removed unnecessary file opening.
1.0.32 (2019-06-17):Fixed a rare crash.
1.0.31 (2019-06-16):Added the content type of YouTube Source component to blacklist to unbreak its playlist loading feature.
1.0.30 (2019-04-12):Fixed bug with empty tag value handling in SQLite. Updated SQLite to latest version and changed its compile settings to multithreaded. Enabled using "Create external tags" command on already externally tagged tracks when the component is configured to use another tagging format. Fixed external tag removal when configured to always write to preferred format. Fixed the component changing any custom file open exception to a generic exception. Added option to disable album art support.
1.0.29 (2019-04-07):Added option force writing external tags in chosen format. This can be used to convert from one external tag type to another directly without committing tags.
1.0.28 (2019-03-21):Fixed a rare crash. Changed tag commit to use a background thread so it no longer blocks the UI.
1.0.27 (2019-03-16):Changed component to use C++ mutexes. Fixed a problem causing memory copy of folder tag to contain invalid data if tag writing failed.
1.0.26 (2019-02-24):Added option to disable properties dialog opening when external tags are created.
1.0.25 (2019-02-15):Fixed possible crash if multiple threads accessed APEv2 tagged streams simultaneously.
1.0.24 (2019-02-11):Added workaround for tag commit breaking Matroska tags.
1.0.23 (2019-02-09):Fixed folder tag moving with multi-subsong files.
1.0.22 (2019-02-08):Fixed freeze when moving folder tag within same directory.
1.0.21 (2019-01-30):The metadata refresh fix in previous build broke subsong-enabled track tagging. Fixed the fix.
1.0.20 (2019-01-29):Fixed automatic metadata refresh when using "Edit file tags" with files that had no external tags. Added external tag copying from the source file to the copy when using File Operations (only used for folder and APE tags).
1.0.19 (2019-01-05):Fixed SQLite database storing wrong number of tag fields when a field had multiple values.
1.0.18 (2018-12-16):Fixed reading ReplayGain info from APE tags. Added context menu command for finding files that have been edited since External Tag was last modified.
1.0.17 (2018-12-15):Changed 'Edit External Tags' context menu entry to only open properties dialog without doing any tag creation - any tag edits will get saved to external tags. Added new explicit 'Create External Tags' menu entry for old behavior. Added 'Edit file tags' context menu entry that always edits native tags of the target file directly. Fixed moving external tag entries from old files to new ones for APEv2 and folder tags when their directories change.
1.0.16 (2018-12-10):Fixed crash if component is accessed after decoder has finished.
1.0.15 (2018-12-09):Added decoder event logger support. Made non-tagged stream opening faster. More mime-type fixes.
1.0.14 (2018-12-08):Fixed crash.
1.0.13 (2018-12-08):Fixed stream opening to find decoder based on mime-type.
1.0.12 (2018-12-07):Fixed ability to "remove" existing tags with APE tags from a subsong-enabled file.
1.0.11 (2018-12-06):Fixed APE tag subsong handling. Changed SQLite database to be initialized only if it's accessed.
1.0.10 (2018-12-04):Fixed fallback tag writing. Added some (temporary) extra error reporting for folder tag writing.
1.0.9 (2018-11-29):Added support for album art priority control coming in foobar2000 v1.4.2. Changed track wrapping to only be available for files with existing external tags.
1.0.8 (2018-11-19):Fixed converter not getting metadata from external tags.
1.0.7 (2018-11-16):Fixed slow context menu opening if multiple tracks were selected. Fixed external tag editing after tag contains album art. Fixed some tag commit failure conditions. Made tag commit working for playing track.
1.0.6 (2018-11-14):Fixed tag committing to subsong-enabled files. Changed pre tag creation sorting to slower function that works correctly with subsongs.
1.0.5 (2018-11-13):Editing external tags no longer needs to reload info from the tracks.
1.0.4 (2018-11-13):Fixed tag committing crashing on large workload.
1.0.3 (2018-11-12):Art loading didn't work correctly when reading multiple tag formats.
1.0.2 (2018-11-12):Fixed empty APE tag being rejected when tag contained album art.
1.0.1 (2018-11-12):Fixed folder tag data being missing for random tracks.
1.0 (2018-11-11):Fixed ReplayGain info saving in folder tags file. Fixed APEv2 and folder tags being unable to store blank tags for a file. Added cover art support to folder tags file. Made album art tagging on new file save current tags as external tags. Added ability to customize folder tags filename.
0.9.9 (2018-11-09):Added option to use APE tags, SQLite tagging, or to use a combined folder.tags file for all tracks in a directory. Album art support isn't implemented for folder tags. Made external tag creation and removal use background thread to not block UI. Added exception handling to all filesystem access functions to prevent crashing on error situations. Rewrote subsong handling to hopefully be less buggy. Removed support for reading filename.subsong.tag multitrack tag files. Changed path wrapping to allow wrapping local files to take over album art handling. (2018-10-25):Reloads info for tracks immediately after creating External Tags
0.9.8 (2018-10-22):Made the component merge static metadata to dynamic metadata. Changed external tag removal to unwrap tracks. Changed the default wrapper to just exttag://, using parenthesis is only needed when manually adding HLS streams with Add Location.
0.9.7 (2018-10-21):Fixed a crash with malformed tag file.
0.9.6 (2018-10-21):Made external tags follow file renames, moves and deletions. Fixed inability to tag unknown urls. Added exttag://() wrapper handler which allows tagging streams with album art - existing stream links can be converted to wrapped format from context menu.
0.9.5 (2018-10-20):Worked around inability to play HLS streams with the component active. Made non-stream tag modifications refresh instantly.
0.9.4 (2018-10-20):Fixed buggy tag committing.
0.9.3 (2018-10-20):Adding external alternate data stream tag for taggable format didn't work. Added a new context menu command to move external tag contents into native tags.
0.9.2 (2018-09-22):Fixed inability to read tag files embedded in archives. Changed the component to reject file extensions not recognized by foobar2000 inputs - this leaves out all unwanted non-audio files when dragging and dropping folders to foobar2000 playlist.
0.9.1 (2018-08-02):Fixed tag writing when using properties dialog to do the initial tagging.
0.9 (2018-08-01):Option to store tags in NTFS Alternate Data Streams. Setting can be toggled in advanced preferences under Tagging.
0.8 (2018-07-15):Native album art writing works again. Tag reader now also supports tag writing for tracks that have external tags present. That way editing tags for such files forces the edits to go to external tags. Fixed external tagging of cue sheets.
0.7 (2018-07-04):Bugfixes. Tag reader made everything report tagtype as External APEv2. Album art writer will now only activate for files that have external tag file present.
0.6 (2018-06-30):Added album art support and ability to tag streams. Made the component prefer external tags outside archives over the ones stored in archives. Changed reported tag type to "External APEv2". Added context menu command for removing external tags from files. Note that stream tagging requires using "Edit External Tags" context menu command - regular properties dialog doesn't call tag writing functions on streams
0.5 (2018-06-17):Removed error message when trying to remove a non-existing tag file. External tag now allows "removing" existing tags from a file
0.4 (2018-06-17):Changed subsong tagging to not write separate file for each subsong. Added ability to tag files in archives
0.3 (2018-06-16):Fixed a bug that prevented tagging some files
0.2 (2018-06-16):Added support for subsongs
0.1 (2018-06-14):Initial version