bashmp3id3id3v2eyed3

Finding MP3 files that only have ID3v1 tags and no ID3v2?


I have some 'vintage' MP3 players that only work with ID3v1 tags. Many of my MP3 files only have ID3v2 tags and the ID3v1 area is blank.

I've found a good way to batch copy what's in the ID3v2 to the ID3v1 area (see * below) but before I do this to tens of thousands of MP3 files it occurs to me I might have some that only have ID3v1 information, in which case copying the (blank) ID3v2 will probably wipe the tag

(I have run a test by creating an MP3 with only v1 tags and no v2 and it looks like my solution doesn't overwrite the v1 with blanks but I am still a bit concerned.)

Can you think of a simple way to batch search for MP3 files that only have ID3v1 tags and no ID3v2 data present?

Linux shell preferred (via a kid3 command maybe?) but Windows is do-able.


The way I'm copying the ID3 data from ID3v2 to ID3v1 is with the Python app eyed3:

eyeD3 --to-v1.1 *.mp3
or
eyeD3 --to-v1.1 PATH 

As mentioned, I've also installed kid3 which is useful for GUI use but the command line is flipping complicated...!


Solution

  • A homemade script would do nicely:

    #!/bin/bash
    
    find . -type f -name "*\.mp3" -print0 | while IFS= read -r -d '' file
    do
        if ! eyeD3 -1 "$file" 2>&1 | grep -q "No ID3 v1.x tag"
        then
            echo "$file"
        fi
    done