From 159831c6e718716d2e413669d3dc8871b490f99a Mon Sep 17 00:00:00 2001 From: Martins Grunskis Date: Wed, 9 Feb 2011 18:48:15 +0200 Subject: [PATCH] mopidy-scan fails if track has no artist name stack trace: Traceback (most recent call last): File ./scan, line 27, in for a in tracks_to_tag_cache_format(tracks): File /home/martins/source/mopidy/mopidy/frontends/mpd/translator.py, line 138, in tracks_to_tag_cache_format _add_to_tag_cache(result, *tracks_to_directory_tree(tracks)) File /home/martins/source/mopidy/mopidy/frontends/mpd/translator.py, line 151, in _add_to_tag_cache _add_to_tag_cache(result, *entry) File /home/martins/source/mopidy/mopidy/frontends/mpd/translator.py, line 156, in _add_to_tag_cache track_result = dict(track_to_mpd_format(track)) File /home/martins/source/mopidy/mopidy/frontends/mpd/translator.py, line 28, in track_to_mpd_format ('Artist', artists_to_mpd_format(track.artists)), File /home/martins/source/mopidy/mopidy/frontends/mpd/translator.py, line 88, in artists_to_mpd_format return u', '.join([a.name for a in artists if a]) TypeError: sequence item 0: expected string or Unicode, NoneType found --- mopidy/frontends/mpd/translator.py | 2 +- tests/frontends/mpd/serializer_test.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/mopidy/frontends/mpd/translator.py b/mopidy/frontends/mpd/translator.py index 3ead23c7..c8fe6be4 100644 --- a/mopidy/frontends/mpd/translator.py +++ b/mopidy/frontends/mpd/translator.py @@ -85,7 +85,7 @@ def artists_to_mpd_format(artists): :rtype: string """ artists.sort(key=lambda a: a.name) - return u', '.join([a.name for a in artists]) + return u', '.join([a.name for a in artists if a.name]) def tracks_to_mpd_format(tracks, start=0, end=None, cpids=None): """ diff --git a/tests/frontends/mpd/serializer_test.py b/tests/frontends/mpd/serializer_test.py index cfed498a..b0c57588 100644 --- a/tests/frontends/mpd/serializer_test.py +++ b/tests/frontends/mpd/serializer_test.py @@ -95,6 +95,11 @@ class TrackMpdFormatTest(unittest.TestCase): translated = translator.artists_to_mpd_format(artists) self.assertEqual(translated, u'ABBA, Beatles') + def test_artists_to_mpd_format_artist_with_no_name(self): + artists = [Artist(name=None)] + translated = translator.artists_to_mpd_format(artists) + self.assertEqual(translated, u'') + class PlaylistMpdFormatTest(unittest.TestCase): def test_mpd_format(self):