beets
beets copied to clipboard
Beet doesn't offer to merge albums when import run with --noautotag
Beet is assigning unique album IDs to my self-tagged tracks, when those tracks are imported in a piecemeal (piecewise) fashion. I don't know if this is a bug or expected behavior. If the latter, I wonder if there is a way to force beet to join (merge) the new import with the old import.
Set up: to make a super simple, reproducible example, I create two dummy, empty mp3 files (source) and tagged them as follows:
$ ffmpeg -f lavfi -i anullsrc=r=44100:cl=mono -t 5 -q:a 9 -acodec libmp3lame foo.mp3
$ cp foo.mp3 bar.mp3
$ id3tag -s foo -a foobar -A foobar -t 1 foo.mp3
$ id3tag -s bar -a foobar -A foobar -t 2 bar.mp3
Problem
Running this command in verbose (-vv
) mode:
$ beet -vv import -AW foo.mp3
$ beet -vv import -AW bar.mp3
Led to this problem:
$ beet ls -p album:foobar
/mnt/media/music/foobar/foobar/01 foo.mp3
/mnt/media/music/foobar/foobar [3989]/02 bar.mp3
Since I imported the files with --noautotag
, I expected/hoped beet would just use foobar
as the album and naively combine (merge) it with the already imported album track. But I was never prompted about whether I wanted to merge the files!
May be related to https://github.com/beetbox/beets/issues/112 or https://github.com/beetbox/beets/issues/1861
Setup
- OS: debian
- Python version: Python 3.9.2
- beets version: 1.6.0
- Turning off plugins made problem go away (yes/no): No
My configuration
directory: /mnt/media/music
plugins:
- discogs
- duplicates
- edit
- info
- inline
- chroma
item_fields:
disc_and_track: u'%i-%02i' % (disc, track) if disctotal > 1 else u'%02i' % (track)
paths:
default: $albumartist/$album%aunique{}/$disc_and_track $title
comp: Compilations/$album%aunique{}/$disc_and_track $title
import:
move: yes
write: yes
autotag: yes
log: beetslog.txt
match:
preferred:
countries: [US, GB|UK, AU]
media: [CD, Digital Media|File]
original_year: yes
chroma:
auto: yes
art_filename: albumart
ui:
color: yes
per_disc_numbering: yes
edit:
itemfields:
- album
- albumartist
- artist
- track
- title
- year
albumfields:
- albumartist
- album
- year
- albumtype
- comp
ignore_fields: id path
duplicates:
album: no
checksum: ''
copy: ''
count: no
delete: no
format: ''
full: no
keys: []
merge: no
move: ''
path: no
tiebreak: {}
strict: no
tag: ''
pathfields: {}
album_fields: {}
discogs:
apikey: REDACTED
apisecret: REDACTED
tokenfile: discogs_token.json
source_weight: 0.5
user_token: REDACTED
separator: ', '
index_tracks: no
Hmm I think this is just not supported -> feature request (cant find the option to add feature label in the github mobile app atm...)
@JOJ0 Thanks! I thought that might be the case. I don't seem to have enough permission to add issue labels in this repo.
No worries! Thanks for the report. Yeah I also came across a desire to want this several times.
As a workaround you could try manually setting the album ids of your tracks:
$ beet ls -f '$artist $title $album_id' peas
Black Eyed Peas Karma 22
Black Eyed Peas Be Free 22
Black Eyed Peas Communication 23
Black Eyed Peas What It Is 23
$ beet mod album_id=23 peas
Thanks for the tip! I can also do:
beet import --noautotag --set=album_id=9999 peas
That's a fine workaround! Probably this issue could be closed, or tagged as "documentation only".
Oh wow, that's indeed a great workaround idea. It never came to my mind I could use --set for fixed attributes. I always use it with flexible attributes only. OMG 😮
Yeah adding an example to the docs would be great, I'm wondering where it would fit? The description/headline could be: Manually merging tracks to an existing album on import