diff --git a/beets/library/models.py b/beets/library/models.py index 8eff168d5..8494d3fc6 100644 --- a/beets/library/models.py +++ b/beets/library/models.py @@ -805,7 +805,7 @@ class Item(LibModel): getters = plugins.item_field_getters() getters["singleton"] = lambda i: i.album_id is None getters["filesize"] = Item.try_filesize # In bytes. - getters["has_images"] = Item.has_cover_art + getters["has_cover_art"] = Item.has_cover_art return getters def duplicates_query(self, fields: list[str]) -> dbcore.AndQuery: diff --git a/docs/changelog.rst b/docs/changelog.rst index b41668f60..b1f92fe0a 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -13,9 +13,9 @@ Unreleased New features ~~~~~~~~~~~~ -- Query: Add ``has_images`` computed field to query items by embedded cover art +- Query: Add ``has_cover_art`` computed field to query items by embedded cover art presence. Users can now search for tracks with or without embedded artwork using - ``beet list has_images:true`` or ``beet list has_images:false``. + ``beet list has_cover_art:true`` or ``beet list has_cover_art:false``. .. Bug fixes diff --git a/docs/reference/query.rst b/docs/reference/query.rst index 1003be4fb..caf839ea8 100644 --- a/docs/reference/query.rst +++ b/docs/reference/query.rst @@ -411,15 +411,15 @@ artwork without needing external tools. To find all tracks with embedded cover art: -:: +.. code-block: shell - $ beet list has_images:true + $ beet list has_cover_art:true To find all tracks without embedded cover art: -:: +.. code-block: shell - $ beet list has_images:false + $ beet list has_cover_art:false This query checks the actual file for embedded images, so no re-importing or external tagging needed. diff --git a/test/test_query.py b/test/test_query.py index e280330a2..0a501da7c 100644 --- a/test/test_query.py +++ b/test/test_query.py @@ -520,8 +520,8 @@ class TestRelatedQueries: assert {i.title for i in lib.items(q)} == set(expected_titles) -class TestHasImagesQuery: - """Test has_images computed field for detecting embedded cover art.""" +class TestHasCoverArtQuery: + """Test has_cover_art computed field for detecting embedded cover art.""" @pytest.fixture(scope="class") def lib(self, helper): @@ -530,13 +530,13 @@ class TestHasImagesQuery: helper.add_item(title="without_art") return helper.lib - def test_has_images_getter_exists(self): - """Verify has_images in getters dict.""" + def test_has_cover_art_getter_exists(self): + """Verify has_cover_art in getters dict.""" getters = Item._getters() - assert "has_images" in getters - assert getters["has_images"] == Item.has_cover_art + assert "has_cover_art" in getters + assert getters["has_cover_art"] == Item.has_cover_art - def test_has_images_returns_boolean(self): + def test_has_cover_art_returns_boolean(self): """Method always return boolean.""" item = _common.item() result = item.has_cover_art()