Skip to content

Commit

Permalink
Merge pull request #1682 from sampsyo/1126-deleted-art
Browse files Browse the repository at this point in the history
Fix #1126: Check if album art file actually exists
  • Loading branch information
reiv committed Nov 2, 2015
2 parents c617033 + b76597b commit f891184
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 1 deletion.
2 changes: 1 addition & 1 deletion beetsplug/fetchart.py
Original file line number Diff line number Diff line change
Expand Up @@ -567,7 +567,7 @@ def batch_fetch_art(self, lib, albums, force):
fetchart CLI command.
"""
for album in albums:
if album.artpath and not force:
if album.artpath and not force and os.path.isfile(album.artpath):
message = ui.colorize('text_highlight_minor', 'has album art')
else:
# In ordinary invocations, look for images on the
Expand Down
3 changes: 3 additions & 0 deletions docs/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ Fixes:
when there were not. :bug:`1652`
* :doc:`plugins/lastgenre`: Clean up the reggae related genres somewhat.
Thanks to :user:`Freso`. :bug:`1661`
* :doc:`plugins/fetchart`: Fix a bug where a database reference to a
non-existent album art file would prevent the command from fetching new art.
:bug:`1126`


1.3.15 (October 17, 2015)
Expand Down
13 changes: 13 additions & 0 deletions test/test_art.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
from beets import importer
from beets import config
from beets import logging
from beets import util
from beets.util.artresizer import ArtResizer, WEBPROXY


Expand Down Expand Up @@ -357,6 +358,18 @@ def test_do_not_delete_original_if_already_in_place(self):
self.afa_response = artdest
self._fetch_art(True)

def test_fetch_art_if_imported_file_deleted(self):
# See #1126. Test the following scenario:
# - Album art imported, `album.artpath` set.
# - Imported album art file subsequently deleted (by user or other
# program).
# `fetchart` should import album art again instead of printing the
# message "<album> has album art".
self._fetch_art(True)
util.remove(self.album.artpath)
self.plugin.batch_fetch_art(self.lib, self.lib.albums(), force=False)
self.assertExists(self.album.artpath)


class ArtForAlbumTest(UseThePlugin):
""" Tests that fetchart.art_for_album respects the size
Expand Down

0 comments on commit f891184

Please sign in to comment.