Desktop version of Shazam via Python
more user friendly approach to fixing broken mp3 filenames.
I don’t know about you, but I had a bunch of CDs ripped as mp3s with files like track1.mp3, track2.mp3, and all sorts of assorted file names in my mp3 collection. That’s why I created a Python script that interfaces with Shazam in the first place.
I started that project as a practical Python script: point it at a folder of MP3s, let Shazam identify tracks, then rename files, write tags, and add covers. It worked, but it behaved as most scripts do: fast, unforgiving, and a little opaque. You ran it, watched lines fly by, and hoped the right things happened to the right files. It worked for me, but I figured a lot more people would find it useful if it was more user friendly.
The Python GUI version was built so that instead of a stream of text, you get a living list of your files with cover, name, embedded metadata, and status - all visible at once. You can scan first, inspect what already exists, see what Shazam proposes, and choose how changes are applied. The app now supports two mindsets: instant write (Auto apply) or review-first (Pending apply then commit). You can scan per file by selecting it and right click.
Under the hood, they share the same core logic. But the experience is fundamentally different.
The GUI lets you:
Choose the target music folder
Immediately list MP3 files after folder selection
View embedded title/artist/album and whether cover art is already embedded
Preview embedded cover art for selected files
Run/stop processing with live per-file status updates
Toggle
Auto apply changes:ON: writes rename/tags during processing
OFF: detects and fills pending info without writing; use
Apply Pendingto commit later
Preview Shazam cover art in pending mode before writing
Right-click a row for
Open File,Open Folder, andRescan ItemStarts in dark mode with a toggle for light mode
Hope you will find it useful as I did.
As always, the entire code and release executable can be found on BarnLab’s GitHub repository.



