Nodes/Nova Audio Player/Nova Tag Reader ๐Ÿ”–
ComfyUI Node

Nova Tag Reader ๐Ÿ”–

Prove the tags actually landed

By NovaFemmeยทCreated 20 days agoยทUpdated 2 days agoยท 0
Nova Tag Reader ๐Ÿ”–
  • files
  • console
  • tags_json
  • file_count
  • files
โ—„fieldstracknumber, title, artist, album, date, genre, comment, copyright, encodedby, lyricsโ–บ
โ—„show_missingtrueโ–บ
โ—„max_value_chars160โ–บ

Tag writing is the sort of task where "it ran without errors" and "it worked" are different statements. A column that didn't match, a field name that went into a frame the player doesn't read, a file that silently wasn't touched - none of that throws.

Nova Tag Reader ๐Ÿ”– is the verification half. It walks the same NOVA_FILES batch and lists the tags that are actually stored on each file, as a console report and as JSON. Chain it straight after Nova Tag Writer, which passes its batch through, and you verify a write in the same run.

The robustness bit that matters

Most tag readers assume a fixed set of keys - read LYRICS from a Vorbis comment, and if it isn't there, KeyError halfway through the listing. This one reads whatever the file really carries, so a missing field reports as missing instead of exploding. That's what show_missing is for: on by default, it tells you which of your requested fields the file doesn't have rather than quietly omitting them.

It also normalises across formats. ID3 frames (TIT2, TPE1, TRCK, USLT) and MP4 atoms (ยฉnam, ยฉART, ยฉlyr) get mapped back to the same names a FLAC would report under, and container-specific oddities are flattened - MP4 stores track numbers as (number, total) pairs, which come out looking like what a Vorbis or ID3 file would show. So a mixed folder of FLACs, M4As and MP3s reads as one consistent table instead of three dialects of the same metadata.

Inputs and outputs

  • files - the batch.
  • fields - comma-separated, in the order you want them listed. The default is the sensible set: tracknumber, title, artist, album, date, genre, comment, copyright, encodedby, lyrics. Use * to dump every tag the file carries, which is what you want the first time you point it at someone else's library.
  • show_missing - report requested-but-absent fields.
  • max_value_chars - default 160. It exists because of lyrics: a full lyric sheet per file turns your console into a wall of text. 0 means no limit. Note the tooltip's careful distinction - tags_json is never truncated. The console is for reading; the JSON is for machines.

Outputs: console, tags_json (every tag found, per file), file_count, and files passed through so you can keep chaining.

Install

ComfyUI Manager โ†’ Nova Audio Player โ†’ install โ†’ restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/NovaFemme/ComfyUI-NovaAudioPlayer.git

Under โ–ถ๏ธ Nova Audio โ†’ ๐Ÿ“ฆ Delivery & Metadata. It needs mutagen, which the pack declares, so Manager gets it for you - and if you cloned by hand and nothing ran pip:

<venv>/bin/python -m pip install mutagen

There's no degraded mode for tag work, so the node reports the missing package in words instead of failing weirdly. The guarded import is why a missing mutagen costs you the two tag nodes rather than all 25.

Where it fits

Nova Batch Load Audio ๐ŸŽผ โ”€โ”€โ–ถ Nova Tag Writer ๐Ÿท๏ธ โ”€โ”€ files โ”€โ”€โ–ถ Nova Tag Reader ๐Ÿ”– โ”€โ”€โ–ถ Nova Console ๐Ÿ–ฅ๏ธ

Both example workflows the pack ships for this chain need nothing but the pack itself, which makes "verify my metadata actually got written" one of the fastest things to try here - and the reading habit is worth keeping. Wire the console to a Nova Console with a label, turn show_missing on, and read what's there. The alternative is finding out years later that a third of your library has no albumartist because the column was named Album Artist and you never checked.

Categoryโ–ถ๏ธ Nova Audio/๐Ÿ“ฆ Delivery & Metadata

Inputs (4)

NameTypeDefaultDescription
filesNOVA_FILESBatch from Nova Batch Load Audio, or passed through from Nova Tag Writer.
fieldsSTRINGtracknumber, title, artist, album, date, genre, comment, copyright, encodedby, lyricsComma-separated tag names to list, in this order. Use * to list every tag the file carries.
show_missingBOOLEANtrueReport requested fields the file does not carry, instead of quietly omitting them.
max_value_charsINT1600โ€“100000Truncate long values (lyrics!) in the console text. 0 = no limit. tags_json is never truncated.

Outputs (4)

NameTypeDescription
consoleSTRINGFormatted tag listing โ€” wire this into Nova Console.
tags_jsonSTRINGEvery tag found, per file, as JSON.
file_countINTHow many files were read.
filesNOVA_FILESThe same batch, passed through.