From 56c53acbab2ad42a6753763b6b0642a37aad26df Mon Sep 17 00:00:00 2001 From: Lucas Duailibe Date: Mon, 25 Mar 2013 11:24:42 -0300 Subject: [PATCH 1/3] human-friendly error messages (#125) --- beets/ui/commands.py | 7 ++++++- beetsplug/embedart.py | 17 +++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/beets/ui/commands.py b/beets/ui/commands.py index 3f76a8328..72382c89d 100644 --- a/beets/ui/commands.py +++ b/beets/ui/commands.py @@ -798,7 +798,12 @@ def update_items(lib, query, album, move, pretend): # Read new data. old_data = dict(item.record) - item.read() + try: + item.read() + except Exception as exc: + log.error(u'error reading {0}: {1}'.format( + repr(item.path), exc)) + continue # Special-case album artist when it matches track artist. (Hacky # but necessary for preserving album-level metadata for non- diff --git a/beetsplug/embedart.py b/beetsplug/embedart.py index 22bb5364a..82b595c0c 100644 --- a/beetsplug/embedart.py +++ b/beetsplug/embedart.py @@ -140,7 +140,14 @@ def extract(lib, outpath, query): return # Extract the art. - mf = mediafile.MediaFile(syspath(item.path)) + try: + mf = mediafile.MediaFile(syspath(item.path)) + except mediafile.UnreadableFileError as exc: + log.error('Could not extract art from {0}: {1}'.format( + repr(item.path), exc + )) + return + art = mf.art if not art: log.error('No album art present in %s - %s.' % @@ -165,7 +172,13 @@ def clear(lib, query): log.info('Clearing album art from items:') for item in lib.items(query): log.info(u'%s - %s' % (item.artist, item.title)) - mf = mediafile.MediaFile(syspath(item.path)) + try: + mf = mediafile.MediaFile(syspath(item.path)) + except mediafile.UnreadableFileError as exc: + log.error('Could not clear art from {0}: {1}'.format( + repr(item.path), exc + )) + continue mf.art = None mf.save() From c682ac84b03899ebfd3a45c835a03aab4417f6d5 Mon Sep 17 00:00:00 2001 From: Lucas Duailibe Date: Mon, 25 Mar 2013 11:45:11 -0300 Subject: [PATCH 2/3] one more error message (#125) --- beetsplug/mbsync.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/beetsplug/mbsync.py b/beetsplug/mbsync.py index 644c29978..b9cb51efb 100644 --- a/beetsplug/mbsync.py +++ b/beetsplug/mbsync.py @@ -47,7 +47,12 @@ def _print_and_apply_changes(lib, item, move, pretend, write): lib.move(item, with_album=False) if write: - item.write() + try: + item.write() + except Exception as exc: + log.error(u'could not sync {0}: {1}'.format( + repr(item.path), exc)) + return False lib.store(item) return True From 51ed0939d6f85f605af14c3b8f0419831b3002af Mon Sep 17 00:00:00 2001 From: Lucas Duailibe Date: Mon, 25 Mar 2013 15:20:38 -0300 Subject: [PATCH 3/3] fixing things --- beets/ui/commands.py | 2 +- beetsplug/embedart.py | 12 ++++++------ beetsplug/mbsync.py | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/beets/ui/commands.py b/beets/ui/commands.py index 72382c89d..f13232808 100644 --- a/beets/ui/commands.py +++ b/beets/ui/commands.py @@ -802,7 +802,7 @@ def update_items(lib, query, album, move, pretend): item.read() except Exception as exc: log.error(u'error reading {0}: {1}'.format( - repr(item.path), exc)) + displayable_path(item.path), exc)) continue # Special-case album artist when it matches track artist. (Hacky diff --git a/beetsplug/embedart.py b/beetsplug/embedart.py index 82b595c0c..2b342c989 100644 --- a/beetsplug/embedart.py +++ b/beetsplug/embedart.py @@ -20,7 +20,7 @@ from beets.plugins import BeetsPlugin from beets import mediafile from beets import ui from beets.ui import decargs -from beets.util import syspath, normpath +from beets.util import syspath, normpath, displayable_path from beets.util.artresizer import ArtResizer from beets import config @@ -46,7 +46,7 @@ def _embed(path, items, maxwidth=0): f = mediafile.MediaFile(syspath(item.path)) except mediafile.UnreadableFileError as exc: log.warn('Could not embed art in {0}: {1}'.format( - repr(item.path), exc + displayable_path(item.path), exc )) continue f.art = data @@ -143,8 +143,8 @@ def extract(lib, outpath, query): try: mf = mediafile.MediaFile(syspath(item.path)) except mediafile.UnreadableFileError as exc: - log.error('Could not extract art from {0}: {1}'.format( - repr(item.path), exc + log.error(u'Could not extract art from {0}: {1}'.format( + displayable_path(item.path), exc )) return @@ -175,8 +175,8 @@ def clear(lib, query): try: mf = mediafile.MediaFile(syspath(item.path)) except mediafile.UnreadableFileError as exc: - log.error('Could not clear art from {0}: {1}'.format( - repr(item.path), exc + log.error(u'Could not clear art from {0}: {1}'.format( + displayable_path(item.path), exc )) continue mf.art = None diff --git a/beetsplug/mbsync.py b/beetsplug/mbsync.py index b9cb51efb..fa6a3abd5 100644 --- a/beetsplug/mbsync.py +++ b/beetsplug/mbsync.py @@ -51,7 +51,7 @@ def _print_and_apply_changes(lib, item, move, pretend, write): item.write() except Exception as exc: log.error(u'could not sync {0}: {1}'.format( - repr(item.path), exc)) + util.displayable_path(item.path), exc)) return False lib.store(item)