Is it possible to have Volumio generate a log of track file names and locations which are, for example, all missing their album metadata?
I just re-scanned my library and in the “album” browsing view and Volumio has given me an item at the top of the list with a “?” for album art containing said files. I’d like to track them down for correction but would prefer to not have to run a lot of file searches via SMB since it’s fairly slow.
Please be more precise, as your mention metadata and album covers?
Volumio doesn’t currently generate a dedicated log or report listing tracks with missing album metadata or artwork. However, there are a few workarounds and insights that might help you track down those files more efficiently:
What the “?” Album Art Means
- Volumio groups files with missing or incomplete metadata (especially album name) into a generic entry—often shown with a “?” as album art.
- These files typically lack proper ID3 tags or embedded metadata, which prevents Volumio from categorizing them correctly.
Workaround Options
- Use Volumio’s Web UI: In the “Album” view, click on the “?” album. Volumio will display the tracks grouped under it. You can then inspect each track’s metadata manually.
- Tagging Software: Use apps like MP3Tag, Kid3, Beets or Bliss on your PC to scan your library and filter files missing album metadata. These tools can often show file paths and let you batch-edit tags.
I should have explained myself better, you’re correct. I understand the “?” album designation, I’m not concerned with album art, and I have & use a 3rd party tag editor.
In the ? “album”, the only info displayed are file names; no artist, etc. Likely because the files have zero tags, not some fault of volumio.
What I’m hoping is that, since volumio has somehow corralled these files into this “missing info” album designation, it’s possible to generate a text log of that group of files. I know it’s not possible in the web GUI but maybe it’s possible via SSH.
Thanks
Use tagging software, which you already need to tag the missing info ![]()
The only identifying info I have for this set of tracks is the file name that volumio is displaying. I need to know the locations of each file on my network drive in order to feed them into the tagging software (Meta on Mac). My music library is organized by artist name, so what I’m seeking is a crib sheet of the file paths to be generated by volumio so I don’t have to search for files one-by-one via SMB, which tends to be slow.
Hopefully I’m making sense now, seems that I have not been.
If you use a tool like Mediamonkey, you can load the entire library and sort them per column. This way you sort all empty tags on top. Doesn’t get much easier.
You can script the task, at least relying on the tag_cache db, but manually loading track by track is way more time consuming.
cd ~
nano check_missing_tags.sh
copy+paste:
#!/bin/bash
TAG_CACHE="/var/lib/mpd/tag_cache"
TEMP_FILE="/tmp/tag_cache_unzipped"
# Expected fields to check
required_fields=("Title" "Artist" "Album" "AlbumArtist" "Genre")
# Tags that can be checked:
#,Artist,ArtistSort,Album,AlbumSort,AlbumArtist,AlbumArtistSort,Title,TitleSort,Track,Name,Genre,Mood
#,Date,OriginalDate,Composer,ComposerSort,Performer,Conductor,Work,Movement,MovementNumber,ShowMovement
#,Ensemble,Location,Grouping,Disc,Label,MUSICBRAINZ_ARTISTID,MUSICBRAINZ_ALBUMID,MUSICBRAINZ_ALBUMARTISTID
#,MUSICBRAINZ_TRACKID,MUSICBRAINZ_RELEASETRACKID,MUSICBRAINZ_WORKID,MUSICBRAINZ_RELEASEGROUPID
# Decompress
gzip -dc "$TAG_CACHE" > "$TEMP_FILE"
declare -A tags_present
track_path=""
while IFS= read -r line; do
# Start of song
if [[ "$line" == song_begin:* ]]; then
unset tags_present
declare -A tags_present
track_path="${line#song_begin: }"
# End of song
elif [[ "$line" == song_end ]]; then
missing=()
for field in "${required_fields[@]}"; do
if [[ -z "${tags_present[$field]}" ]]; then
missing+=("$field")
fi
done
if (( ${#missing[@]} > 0 )); then
echo "$track_path is missing: ${missing[*]}"
fi
# Check field tags
else
for field in "${required_fields[@]}"; do
if [[ "$line" == "$field:"* ]]; then
tags_present["$field"]=true
fi
done
fi
done < "$TEMP_FILE"
rm "$TEMP_FILE"
ctrl+o => enter => ctrl+x
run it: chmod +x check_missing_tags.sh && ./check_missing_tags.sh
0106 - Yuri Korzunov - Chill DSD1024.dsf is missing: Track Disc
0101 - Cody Jinks - Big Iron Wheels 44-16.wav is missing: AlbumArtist Disc
@balbuze
This might be suitable for a plugin ?
Thanks for the script. Is it possible to have it print the file location of each instance?
Loading my whole ~500GB library, or even alphabetical subsets, into Meta (the tag editor) via SMB would take an unbelievably long time based on a single album’s import time. This may be due to some poor configuration on my part, of course, or the tag editor itself.
it’s possible, but not by me.
File locations are only displayed once per combined folder, so it needs recurrent programming or temp storage to get that done. To time consuming to do that, while you can do the same without issues using one of the programs I mentioned. Which you already need to alter/update the tags.
I some one feels the urge to take over, please do.