Elegant way to tag skipped albums

I’d like to use:

beet import -C -ql LOGFILE ""

as my standard beets command. This will result in perhaps hundreds of albums being skipped, and I’d like to somehow group them all, and then run:

beet import -C

on them, so that I can manually review each case.

Is there any option that would allow for this? Perhaps a command that moves all skipped albums to a certain folder?

There’s no built-in functionality like that, but the standard strategy is just to put the importer in move mode so that skipped albums get left behind. (Of course, you’ll want a backup of your intact music library.)

You also might consider editing the file to just contain paths and then piping those paths through xargs, like this:

There has also been some discussion lately about using incremental mode for a similar purpose:

Right, this could work! I was thinking on moving them manually myself, but this would be much better of course. Is there any way to customize the file structure when they’re moved? So that, for example, instead of just the folder name (whatever it is, probably not properly tagged), it follows an %albumartist%/%album% hierarchy. And if it’s possible may I ask how does this deal with album names of the same title? I’ve manually dealt with this by appending an (1), (2), and so on, at the end of the folders, but I suppose this won’t be the case with beets… I really don’t want to add a %date% after the album name, and even then I know of some cases were it won’t do (the two “Red House Painter” albums released on the same year).

For details on how to customize filenames, please take a look at the docs for the paths configuration. There, you’ll also find information about %aunique, which helps disambiguate different albums with the same name.

1 Like

Thanks much.

All seems great, but I have a question in this part:

The default identifiers are albumartist album and the default disambiguators are albumtype year label catalognum albumdisambig. So you can get reasonable disambiguation behavior if you just use %aunique{} with no parameters in your path forms (as in the default path formats), but you can customize the disambiguation if, for example, you include the year by default in path formats.

For the sake of the identification process, would this be taken directly from the databases (ie. MusicBrainz), or does it look on the tags of the files? I wanna know because I remove most of them with the zero plugin, so I wouldn’t have stuff like “albumtype” and so on, if that’s the case.

And, regarding:

The default characters used as brackets are []. To change this, provide a third argument to the %aunique function consisting of two characters: the left and right brackets. Or, to turn off bracketing entirely, leave argument blank.

If I wanted to use (), would the code be %aunique() or %aunique{()}?

Those fields come from the database. So if you’re using zero to remove those fields, you won’t have them for %aunique{} either.

You’ll also need the curly braces. For what it’s worth, you can answer this sort of question yourself using the -f flag to beet list:

beet ls -af '%aunique{[try out arguments here]}'
1 Like

Thanks. I’m not sure how to apply that string to the path section though, nor what that particular command does. Most combinations I tried of just that on the console yielded '<no such field 'album_id'>'

Really all I want is to just change the bracket into parenthesis, like so:

$albumartist/$album%'aunique{[()]}'/$track. $title
$albumartist/$album%aunique{[()]}/$track. $title
$albumartist/$album%aunique{()}/$track. $title
$albumartist/$album%aunique()/$track. $title

I tried all of those but they all resulted in corrupted folder titles: These Are Not Fall Colors'_no such column_ ()_'

The %aunique function has three arguments, of which the brackets are the last. So you’ll need something like %aunique{albumartist album, albumtype year label catalognum albumdisambig,()}. Or perhaps just %aunique{,,()} would work.

1 Like

Ohhhhhhhhhhh now I understand the synatx. Thanks!

1 Like