Open baco opened 3 years ago
So, I'll start by saying that beet update -F
may do what you want for the update part (doc ref)
For the write part, I'm having a little trouble understanding the use for why you would only want to write a couple of tags to the files. Can you provide an extended example of what you'd like to achieve with this?
Ok, my bad about the update flag, I missed that option.
For the wirte part, sure! There are many many fields beets fetches from MusicBrainz when importing a release; among them:
albumartist_credit
, albumartist_sort
, albumdisambig
, albumstatus
, albumtype
, arranger
, artist_credit
, artist_sort
, asin
, bitdepth
, bitrate
, bpm
, catalognum
, channels
, comp
, composer_sort
, data_source
, day
, disctitle
, encoder
, format
, grouping
, id
, initial_key
, label
, language
, lyricist
, lyrics
, mb_albumartistid
, mb_albumid
, mb_artistid
, mb_releasegroupid
, mb_releasetrackid
, mb_trackid
, media
, month
, mtime
, original_day
, original_month
, original_year
, r128_album_gain
, r128_track_gain
, releasegroupdisambig
, rg_album_gain
, rg_album_peak
, rg_track_gain
, rg_track_peak
, samplerate
, script
, track_alt
all of them, I really really don't want them, nor need them on the music file.
It's ok to have them on the library, but on the file I really don't want them around. Mplayer/Mpv (my main music player) list them all when loading the file and floods the terminal. So I really prefer to write a minimum of fields to the music file, say: artist, albumartist, title, track and nothing more. Again I'd like to keep them on the music library, but don't want them on the terminal.
Even more, this flag could come in company of a setting for write
to specify the list of fields write
writes by default if no --fields
flag is used.
To justify even more. Other uses for the functionality I find useful:
I have some music files with the comments' tag full. Running beet write
overwrites that tag and I lose the comments. Choosing which tags to write, avoiding to list “comment” among those tags, could prevent beet write
to overwrite/blank that field.
For this particular use case, @baco, you might try doing a beet update
to load those comments into the beets database. That way, beets and your files will agree about the metadata and beet write
won't clobber anything.
I'd also find it useful to specify which tags Beets actually write to. It seems fairly obvious to me that a music tagger should have options for which tags to actually use.
There are some tags that I do some manual intervention on, and would like Beets to never write to unless forced.
Using 'beet update' is not ideal because I also sync my beets database with mbsync regularly. It gets complicated to sync your entire collection except a few tags with MusicBrainz. Ideally I would just sync beets with Mbsync, and then write to my files without worrying that Beets will tag something I don't want.
That sure is a legitimate feature request that was discussed often already. For example this one. It's the other way round: Excluding fields, not including, but isn't that essentially the same? https://github.com/beetbox/beets/issues/4087#issuecomment-1250003965
By any chance you are a developer and want to start implementing a draft version of it?
So, I'll start by saying that
beet update -F
may do what you want for the update part (doc ref)For the write part, I'm having a little trouble understanding the use for why you would only want to write a couple of tags to the files. Can you provide an extended example of what you'd like to achieve with this?
I would really like to see the ability as well (exclude fields). In my case I need it as a work-around for #4715 so my write
executions don't spam my terminal with hundreds of lines of albumtype
changes that don't really do anything and show up on every write
execution.
Use case
I'm trying to use beets to correct some tags on the music files
Solution
The library already contains the correct tags for the entire album, but I want only to reflect some of them on the music files, for instance the year of the track. Running
beet write
will write all tags in the library, not just the track's year. I'd like to have a--fields
flag that allows me to specify which tags to write:On the other way around, suppose I have the correct field in the music file, but the release wasn't properly on MusicBrainz, and I like to have the correct value on my beets' database; I'd also like to have the flag
--fields
on theupdate
command to specify which fields beets should overwrite on DB from file: