Beets import vs reimport and command line vs config.yaml

Prior to experimenting with beets I leveraged my ocd to tag my library carefully using a tagger and a range of macros that took care of foldernames, filenames, etc. etc. As such I don’t want beets (or any other tool) to move my files, rename directories or modify metadata in my FLAC library…not yet anyhow. I’d first like to see the results - which I can do by browsing the beets db.

In any event, config.yaml as follows:

directory: /alib
library: /home/x/beetsdb/beetsdb.blb
copy: no
write: no

I then pointed beets to my library using the following, which I’ve understood to mean:

  • no autotagging, just read the existing tags
  • don’t move or copy my library, just leave it where it is
  • don’t prompt to resume operations, just do it
  • skip albums you’re unsure about
  • write out a log file to /home/x/beetsdb/beets.log

beet import -A -C -p -q -l /home/x/beetsdb/beets.log /alib

This then went about reading tags from my library and writing them out to the beets database.

I’ve since added additional albums to my library and would like to update the beets database. I’m intending to simply re-run the beet import outlined above, but have a few questions before I find my files inadvertently moved.

The beets documentation states:

Just point the beet import command at a directory of files that are already catalogged in your library. Beets will automatically detect this situation and avoid duplicating any items. In this situation, the “copy files” option ( -c / -C on the command line or copy in the config file) has slightly different behavior: it causes files to be moved , rather than duplicated, if they’re already in your library. (The same is true, of course, if move is enabled.) That is, your directory structure will be updated to reflect the new tags if copying is enabled; you never end up with two copies of the file.

Does this imply that rerunning

beet import -A -C -p -q -l /home/x/beetsdb/beets.log /alib

is going to move my files?

config.yaml vs beets command line:

Which takes precedence? Will beets ever move files or write to them with:

copy: no
write: no

in config.yaml?

Subsequently using autotagger:
Would running

beet import -C -p -q -l /home/x/beetsdb/beets.log /alib

kick off beets’ autotagger and write the results to the database only?

and Finally:

Is there a way (other than perusing the log file) to identify albums that beets ignored because of the issued -q?

No. It says that it would move your files if you have copying enabled. But you have disabled it with -C (and also in your config).

The command line takes precedence.

It seems so, with your configuration. But if I were you, I’d make a backup just to be safe.

Nope—that’s exactly why we added the log file option, to cover this use case. The “normal” use case in this situation would be to move the files that get imported to another directory, so only the files that are left behind have been skipped. But if you don’t want that, the log file is the next best thing.