Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I'm using "beets" to organize my mp3s. One album I bought from Amazon as mp3s is incorrectly marked as NOT a compilation when indeed it IS a compilation. I organize my files differently based on whether or not an album is a compilation. No matter what I attempt to do to these mp3s, the changes I apply to the ID3 tags do not stick.

For example:

mp3info -d ../amazon_album/*  # This WIPES the tags
mp3info ../amazon_album/01-01 - Track 1.mp3 
../amazon_album/01-01 - Track 1.mp3 does not have an ID3 1.x tag.

But then when I open the file in any media player, ALL of the information is still there!

So then I tried:

mp3info -a "LOL" ../amazon_album/*
mp3info  ../amazon_album/01-01 - Track 1.mp3
File: ../amazon_album/01-01 - Track 1.mp3
Title:                                  Track: 
Artist:  LOL
Album:                                  Year:  
Comment:                                Genre:  [255]

Yet, in any media player, it still retains all of the original information. Because of this, I'm not able to change the album to a "Compilation" which means I can't organize it in Beets the way I want.

I've confirmed that it's not a file permissions issue. Am I doing something wrong? Is there another way to accomplish this in Linux? Or is there a way I can "trick" beets into treating it as a compilation (so that it uses my compilation path)?

share|improve this question
add comment

3 Answers

up vote 6 down vote accepted

mp3info only edits the ID3v1 tags, you need to use a program like eyeD3 or id3v2 that supports ID3v2

More comfortable is to use MusicBrainz Picard to tag your MP3 files (uses the mutagen library underneath).

Since mp3info only supports ID3v1, it cannot delete/wipe the ID3v2 info embedded in the MP3 streams.

share|improve this answer
    
Both beets and Picard use the mutagen library to tag the files and data from the MusicBrainz.org website, so changing from beets to Picard will not help all that much. The part about ID3v1 is correct, of course. –  Wieland Dec 15 '13 at 13:17
    
Select Options->Options and then Tags in Picard and you can select to write the ID3v1 tag (not sure if that is on by default). That will get rid of the old ID3v1 info for sure. –  Zelda Dec 15 '13 at 13:45
    
There is a flag in Beets which allows you to disable autotagging for an import. In another case of the same problem I describe, I was able to solve it by changing the ID3v1 tags, then re-importing it with auto-tagging from MusicBrainz disabled. This preserved my changes and allowed me to import the album as I wanted to. I guess the difference between that case and this case is ID3v2 (which I didn't know about until this post). Gonna try some stuff like eyeD3 and id3v2 now to get rid of those tags in this Amazon album. –  CptSupermrkt Dec 16 '13 at 1:45
add comment

To strip id3 tags from an mp3 file you can use the tool id3convert. It has a switch called "strip", -s or --strip.

-s --strip Strip the tags instead of rendering (default=off)

Example

NOTE: Includes both id3v1 & id3v2 tags

before

$ id3info a.mp3 

*** Tag information for a.mp3
=== TIT2 (Title/songname/content description): Feist - I Feel It All
=== COMM (Comments): (ID3v1 Comment)[XXX]: Music video by Feist performin
*** mp3 info
MPEG2/layer III
Bitrate: 8KBps
Frequency: 22KHz

strip

$ id3convert -s a.mp3 
Converting a.mp3: attempting v1 and v2, stripped v1

after

$ id3info a.mp3 

*** Tag information for a.mp3
*** mp3 info
MPEG2/layer III
Bitrate: 8KBps
Frequency: 22KHz

References

share|improve this answer
add comment

Zelda's answer provides the correct answer to my question. Turns out I was actually asking the wrong question, so I thought I'd add this answer for the future Googler who stumbles upon this.

Even if I wiped the tags clean (both ID3v1 and ID3v2) and then re-entered them all manually --- beets just would not import it as a compilation.

Determined, I busted out the beets source code and found my problem --- it appears that if one name pops up X number of times as the song artist, it takes it upon itself to declare it not a compilation. At least, that's what I gathered from this code snippet in importer.py:

if task.choice_flag == action.ASIS:
    # Taking metadata "as-is". Guess whether this album is VA.
    plur_artist, freq = util.plurality([i.artist for i in task.items])
    if freq == len(task.items) or (freq > 1 and
            float(freq) / len(task.items) >= SINGLE_ARTIST_THRESH):
        # Single-artist album.
        changes['albumartist'] = plur_artist
        changes['comp'] = False
    else:
        # VA.
        changes['albumartist'] = VARIOUS_ARTISTS
        changes['comp'] = True

I didn't read enough of the code to find out anymore details, because as soon as I read that section, I tried removing the name of the prevailing artist, and voila! Beets imported it as a compilation.

This isn't a great solution for me though, because I personally consider an album a compilation even if there is even one other artist on the disc (and it's not a "featuring"). All I can do is eliminate the name of the prevailing artist, import it, and then manually modify the artist of those files to restore the correct artist.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.