From 077e7b864a2246e1e422d690bac4206660a92679 Mon Sep 17 00:00:00 2001 From: J0J0 T Date: Wed, 16 Mar 2022 09:54:51 +0100 Subject: [PATCH] musicbrainz: Support extra_tag discogs_catalog - Files might contain a tag named `discogs_catalog` that could be used as the value of the `catno` field when searching for matches on MusicBrainz. - Support configuration via adding to musicbrainz.extra_tags list in beets config.yaml. - Requires the tag `discogs_catalog` to be readable. It's to be decided if by supporting it via the beets' `add_media_file()` method or adding to the mediafile library is the proper approach here. --- beets/autotag/match.py | 7 ++++++- beets/autotag/mb.py | 1 + beets/library.py | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/beets/autotag/match.py b/beets/autotag/match.py index 814738cd19..b49d877f22 100644 --- a/beets/autotag/match.py +++ b/beets/autotag/match.py @@ -72,7 +72,7 @@ def current_metadata(items): consensus = {} fields = ['artist', 'album', 'albumartist', 'year', 'disctotal', 'mb_albumid', 'label', 'catalognum', 'country', 'media', - 'albumdisambig'] + 'albumdisambig', 'discogs_catalog'] for field in fields: values = [item[field] for item in items if item] likelies[field], freq = plurality(values) @@ -233,6 +233,11 @@ def distance(items, album_info, mapping): dist.add_string('catalognum', likelies['catalognum'], album_info.catalognum) + # Discogs Catalog number. + if likelies['discogs_catalog'] and album_info.catalognum: + dist.add_string('catalognum', likelies['discogs_catalog'], + album_info.catalognum) + # Disambiguation. if likelies['albumdisambig'] and album_info.albumdisambig: dist.add_string('albumdisambig', likelies['albumdisambig'], diff --git a/beets/autotag/mb.py b/beets/autotag/mb.py index e6a2e277fc..f1545c947a 100644 --- a/beets/autotag/mb.py +++ b/beets/autotag/mb.py @@ -36,6 +36,7 @@ FIELDS_TO_MB_KEYS = { 'catalognum': 'catno', + 'discogs_catalog': 'catno', 'country': 'country', 'label': 'label', 'media': 'format', diff --git a/beets/library.py b/beets/library.py index 69fcd34cfa..72ac3a9bbb 100644 --- a/beets/library.py +++ b/beets/library.py @@ -475,6 +475,7 @@ class Item(LibModel): 'discogs_albumid': types.INTEGER, 'discogs_artistid': types.INTEGER, 'discogs_labelid': types.INTEGER, + 'discogs_catalog': types.STRING, 'lyricist': types.STRING, 'composer': types.STRING, 'composer_sort': types.STRING,