SK-404

Doc no. SK-404Rev 2026.09Sheet 2.3 of 4

U3

music-tools

Cleans up a local music library: adds missing cover art from YouTube thumbnails and fixes songs MusicBrainz Picard tagged as the wrong track.

01

Block diagram

Songno cover art Normalize⧸ | ? · NFD Lookupfile · ID · search Matchexact words Embed artMutagen · Pillow else: you pick → failures saved for --retry
Fig. 1 — Missing cover art signal path
02

Characteristics

Art sourcesAn image next to the song, then a YouTube video ID in the filename or tags, then a YouTube search on the tags, the filename and simplified versions of both
MatchingExact word match only is applied automatically (min_match = 1.0), and one-word searches never are; otherwise you pick from the top results, paste a link, or skip
FilenamesUndoes yt-dlp's look-alike characters (⧸ | ?) and macOS's decomposed Korean/Japanese names before searching
Tag fixerRebuilds Title/Artist/Album from the filename for songs Picard matched to the wrong release, keeps track numbers and removes the wrong MusicBrainz/AcoustID IDs. Preview only unless you pass --apply
Formatsmp3, m4a, flac, ogg, opus; --convert-webm copies a .webm's audio into .opus without re-encoding, checks the copy, then moves the original to the Trash
SafetyList and dry-run modes write nothing; Ctrl-C lets files being written finish; a corrupt or read-only file is reported and skipped; songs left without art are saved for --retry
InterfaceFull-screen interactive menu (with a cat that listens along), direct subcommands, parallel workers with progress bars and a saved log of every run
Tests26 unit tests, run on GitHub Actions
  • Python
  • yt-dlp
  • Mutagen
  • Pillow
  • tqdm