From c53e5aab7db9c30ec1e8d5943b4b99fcedf7aed5 Mon Sep 17 00:00:00 2001 From: Grace Coppola Date: Sat, 8 Nov 2025 14:03:09 -0500 Subject: [PATCH 1/4] Add Media field for album and test case --- beets/config_default.yaml | 1 - beets/library/models.py | 3 +++ test/test_media_field.py | 11 +++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 test/test_media_field.py diff --git a/beets/config_default.yaml b/beets/config_default.yaml index c0bab8056e..b0b495a225 100644 --- a/beets/config_default.yaml +++ b/beets/config_default.yaml @@ -7,7 +7,6 @@ statefile: state.pickle # --------------- Plugins --------------- plugins: [musicbrainz] - pluginpath: [] # --------------- Import --------------- diff --git a/beets/library/models.py b/beets/library/models.py index cbee2a411e..f3cab6ae90 100644 --- a/beets/library/models.py +++ b/beets/library/models.py @@ -265,6 +265,7 @@ class Album(LibModel): "language": types.STRING, "country": types.STRING, "albumstatus": types.STRING, + "media": types.STRING, "albumdisambig": types.STRING, "releasegroupdisambig": types.STRING, "rg_album_gain": types.NULL_FLOAT, @@ -320,6 +321,7 @@ def _types(cls) -> dict[str, types.Type]: "language", "country", "albumstatus", + "media", "albumdisambig", "releasegroupdisambig", "release_group_title", @@ -361,6 +363,7 @@ def _getters(cls): getters = plugins.album_field_getters() getters["path"] = Album.item_dir getters["albumtotal"] = Album._albumtotal + return getters def items(self): diff --git a/test/test_media_field.py b/test/test_media_field.py new file mode 100644 index 0000000000..3d405cc310 --- /dev/null +++ b/test/test_media_field.py @@ -0,0 +1,11 @@ +from beets.library import Item +from beets import library + +def test_album_media_field(tmp_path): + lib = library.Library(path=str(tmp_path / "library.db"), + directory=str(tmp_path / "music")) + + item = Item(title="Test Song", album="Test Album", media="Vinyl") + album = lib.add_album([item]) + + assert album.media == "Vinyl" \ No newline at end of file From 9f349b7498271764fd8ce7969bb66324fe8c8072 Mon Sep 17 00:00:00 2001 From: Grace Coppola Date: Sat, 8 Nov 2025 14:07:48 -0500 Subject: [PATCH 2/4] Add Media field for album and test case --- beets/library/models.py | 1 - 1 file changed, 1 deletion(-) diff --git a/beets/library/models.py b/beets/library/models.py index f3cab6ae90..84368f197e 100644 --- a/beets/library/models.py +++ b/beets/library/models.py @@ -363,7 +363,6 @@ def _getters(cls): getters = plugins.album_field_getters() getters["path"] = Album.item_dir getters["albumtotal"] = Album._albumtotal - return getters def items(self): From 96633716595000965a8759df8848c83245d7eec4 Mon Sep 17 00:00:00 2001 From: Grace Coppola Date: Sat, 8 Nov 2025 14:16:54 -0500 Subject: [PATCH 3/4] Adding Documentation --- docs/changelog.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index 5ebf3f53e4..08985fd728 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -21,6 +21,7 @@ New features: - :doc:`plugins/mbpseudo`: Add a new `mbpseudo` plugin to proactively receive MusicBrainz pseudo-releases as recommendations during import. - Added support for Python 3.13. +-- Added album-level `$media` field derived from items’ media metadata. Bug fixes: From faa702fe755f3f6ee2ccaa59ef363426ff4560b4 Mon Sep 17 00:00:00 2001 From: Grace Coppola Date: Sat, 8 Nov 2025 14:25:02 -0500 Subject: [PATCH 4/4] Fixed Style --- docs/changelog.rst | 2 +- test/test_media_field.py | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 08985fd728..4345f0b39b 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -21,7 +21,7 @@ New features: - :doc:`plugins/mbpseudo`: Add a new `mbpseudo` plugin to proactively receive MusicBrainz pseudo-releases as recommendations during import. - Added support for Python 3.13. --- Added album-level `$media` field derived from items’ media metadata. +- Added album-level `$media` field derived from items’ media metadata. Bug fixes: diff --git a/test/test_media_field.py b/test/test_media_field.py index 3d405cc310..91dd89d5a5 100644 --- a/test/test_media_field.py +++ b/test/test_media_field.py @@ -1,11 +1,13 @@ -from beets.library import Item from beets import library +from beets.library import Item + def test_album_media_field(tmp_path): - lib = library.Library(path=str(tmp_path / "library.db"), - directory=str(tmp_path / "music")) + lib = library.Library( + path=str(tmp_path / "library.db"), directory=str(tmp_path / "music") + ) item = Item(title="Test Song", album="Test Album", media="Vinyl") - album = lib.add_album([item]) + album = lib.add_album([item]) - assert album.media == "Vinyl" \ No newline at end of file + assert album.media == "Vinyl"