Remove all id3v1 tags, then other chosen

A two part question, first one I’d have thought was obvious but haven’t yet stumbled across it in the docs. Question part 1:

I’ve just installed Beets, followed the basic config instructions, and now appear to have achieved one important thing i.e. that Beets has automatically updated all my id3v2 tags to id2v2.4. Yay!

I now wish to remove ALL id3v1 tags completely. Will Beets do this with a simple command? I could only find instructions for removing music but not removing tags wholesale.

Question part 2:

Once I’ve acheived the above I then want Beets to scan my library (it’s faily large with many levels of folders, which is why I’ve never done it manually) and remove ANY tags that contain replaygain information. Again, haven’t found the instructions for searching out specific tag fields and then removing them.

Hi, and welcome to the community!

For removing id3v1 tags, I recommend looking into the scrub plugin. And for resetting RG information, I think you can just use beet modify on those specific tags.

Let us know how those go!

Thanks, Adrian for getting back so quickly :slight_smile:

If I were to say that the documentation isn’t at all clear to me, that would be offered as constructive criticism - either that or I’m just a bit dim! :stuck_out_tongue_winking_eye:

To be more specific: I did read the scrub section earlier, but it feels a bit unclear still. To quote it:

The scrub plugin lets you remove extraneous metadata from files’ tags. If you’d prefer never to see crufty tags that come from other tools, the plugin can automatically remove all non-beets-tracked tags whenever a file’s metadata is written to disk by removing the tag entirely before writing new data. The plugin also provides a command that lets you manually remove files’ tags.

I should perhaps point out that I used the Beet options to parse my existing music library ‘in place’ so I’m being careful. I DO NOT want another copy of nearly 500Gb of music, so I’m allowing Beets to write directly to my library. Reading on about scrub I clearly don’t want ANYTHING automated. My tags are complete, they’re just a bit overdone. I’m looking to modify and standardise but there’s nothing actually missing, and since therefore there is NO automation on import or anything else, I certainly do not want something to remove all the tags and reapply them. I only want to remove the specific tags or fields of tags.

Reading on to the manual section it says:

The scrub command provided by this plugin removes tags from files and then rewrites their database-tracked metadata. To run it, just type beet scrub QUERY where QUERY matches the tracks to be scrubbed. Use this command with caution, however, because any information in the tags that is out of sync with the database will be lost.

The -W (or --nowrite ) option causes the command to just remove tags but not restore any information. This will leave the files with no metadata whatsoever.

Now I’m confused. It appears that beet scrub ID3v1 is a command that would remove those tags? so what’s the -W option for? It appears I wouldn’t want that, as it would remove ALL tag information. Is that correct?

Sorry to be lengthy, I’m really just passing on the experience of someone who’s familiar with Linux, comfortable in cmd but new to this particular application. As such it doesn’t seem obvious.

Just to touch on modify it’s likewise a bit confusing:

Supply a query matching the things you want to change and a series of field=value pairs. For example, beet modify genius of love artist="Tom Tom Club" will change the artist for the track “Genius of Love.” To remove fields (which is only possible for flexible attributes), follow a field name with an exclamation point: field! .

That means field=! ? That will remove just that field from those tags? And regarding the -a switch… do I have to run this command twice therefore? I have some loose tracks not in albums, all the rest are in sub folders.

Thanks though - excellent program, been long overdue to sort out my tagging! :slight_smile:

Nope, you’ll want to use a beets query there—the same kind of query that beet list accepts, for example, to select which files to scrub.

Yes.

Almost—use field!, not field=!.

It depends on what you want to change. If you just want to change all the tracks, you don’t need to use -a and it will affect tracks that are and are not on albums alike.


On a meta level, it’s absolutely not a problem to ask questions if the docs are confusing! In fact, when you figure it out, it would be awesome to have help improving the docs. In the spirit of open source, consider someday making a pull request to the docs to help spell out the thing that you originally thought was confusing but now understand.

As a general strategy for figuring things like this out, I recommend (a) making a backup of your music (always a good idea!), and (b) trying things out on a small fraction at first, by using a query that just matches one or two songs. Then you can get a clear idea of what the various flags do by experimentation.

Oh, very helpful. And yes at some future point I will be happy to help with the docs - I’m a big fan of verbose manuals and guides :wink:

Just on modifying for a moment… I’m following your advice, experimenting on something I know only occurs once (a single album). I can point beet at the album successfully but I’m still really struggling to understand the command formatting.

Let’s say I want to remove a field inside my id3v2.4 tag for BPM. I can do this manually with kid3 so I know it can be edited. What I cannot get right is the proper command in beet.

I’ve tried all sorts of variations on:

beet modify -a 'name of album' BPM!

it scans the album, lists each track, and asks me to confirm y/N which I do.

When I open the files again in kid3 all the tags are still there - nothing has been changed!

I know that when I finally get it right I’ll be good to go, but again it’s frustratingly elusive finding that PRECISE syntax, despite having reread the doc pages about five times now, that is the difference between working as intended and doing nothing at all.

I’m just going to offer one other final (yes! haha) piece of feedback, based on yet more reading of the docs and further experimentation.

I couldn’t work out why, having manged to perform a simple scrub on an album, I would reopen said album in a GUI editor and notice that while all the id3v1 tags had gone, at the same time I suddenly had included loads and loads of ‘default’ tags such as

Arranger, Original Date, Composer, BPM, etc. but NONE of which - I repeat NONE of which were included on the files before the scrub command.

Ah well I said… maybe the database it built isn’t what I thought it was. It may well be wiping and rewriting tags from its .db file, but that isn’t information that was included in the files in the first place.

So I decided to just delete the database and state.pickle file, and begin again with a new import, and this time I would allow Beets to build its own database based on its advanced heuristics (I read that page - impressive).

I’ve now given up completely. Why? I collect quite a lot of African, ME and Latin music, some of it on compilations, some of it ripped from my extensive CD collection that began years ago etc. and much of which has been sourced abroad.

Off went beet, busily scanning (I used the recommended options including -ql) and it stopped at about the third album in with some options for me. Long story short - opening the musicbrainz webpage allowed me to search manually for those same release, artist that beet was asking me about but not offering, only to discover that probably less than half the albums just in that one directory (for Africa) aren’t even in Musicbrainz. Sometimes the artist’s name appears, but in context of one track in a compilation. By the time I’d used the -U option to just ‘leave it as it is’ I felt I was defeating the point of the entire exercise.

My point here is this is clearly excellent software, carefully thought out. But I don’t have particularly obscure or difficult tastes yet it cannot make even a 40% match with the first couple of dozen albums it comes across due to the fact that Musicbrainz, while good, is very ‘euro-centric’ and doesn’t cater at all well for non English releases. For me to have to babysit the creation of a database of close to 5000 albums, probably half of which is going to stop and ask me for options, just isn’t realistic I’m afraid. And since I haven’t been able to work out how/if I can simply edit a database created from a pure import read without any auto-tagging I think I’m going to wish you well with this excellent project and uninstall it. At the end of the day I could have been halfway through my collection by now using manual editing - the time it’s taken to learn, test and discover to be not performing as hoped.

I may just go back to plain old find and some regex :wink:

Thanks for all your helpful replies thus far.

1 Like