diff --git a/bin/mopidy-scan b/bin/mopidy-scan index 1865f317..84cfee57 100755 --- a/bin/mopidy-scan +++ b/bin/mopidy-scan @@ -26,6 +26,6 @@ if __name__ == '__main__': for a in tracks_to_tag_cache_format(tracks): if len(a) == 1: - print a[0] + print (u'%s' % a).encode('utf-8') else: - print u': '.join([unicode(b) for b in a]).encode('utf-8') + print (u'%s: %s' % a).encode('utf-8') diff --git a/mopidy/backends/local/translator.py b/mopidy/backends/local/translator.py index b6d25b5b..26c2ad6b 100644 --- a/mopidy/backends/local/translator.py +++ b/mopidy/backends/local/translator.py @@ -84,7 +84,7 @@ def parse_mpd_tag_cache(tag_cache, music_dir=''): _convert_mpd_data(current, tracks, music_dir) current.clear() - current[key.lower()] = value + current[key.lower()] = value.decode('utf-8') _convert_mpd_data(current, tracks, music_dir) diff --git a/tests/backends/local/translator_test.py b/tests/backends/local/translator_test.py index a9fe58d8..2f97e45c 100644 --- a/tests/backends/local/translator_test.py +++ b/tests/backends/local/translator_test.py @@ -116,7 +116,16 @@ class MPDTagCacheToTracksTest(unittest.TestCase): self.assertEqual(set(expected_tracks), tracks) def test_unicode_cache(self): - raise SkipTest + tracks = parse_mpd_tag_cache(data_folder('utf8_tag_cache'), + data_folder('')) + + uri = path_to_uri(data_folder('song1.mp3')) + artists = [Artist(name=u'æøå')] + album = Album(name=u'æøå', artists=artists) + track = Track(uri=uri, name=u'æøå', artists=artists, + album=album, length=4000) + + self.assertEqual(track, list(tracks)[0]) def test_misencoded_cache(self): # FIXME not sure if this can happen diff --git a/tests/data/utf8_tag_cache b/tests/data/utf8_tag_cache new file mode 100644 index 00000000..6642ec77 --- /dev/null +++ b/tests/data/utf8_tag_cache @@ -0,0 +1,13 @@ +info_begin +mpd_version: 0.14.2 +fs_charset: UTF-8 +info_end +songList begin +key: song1.mp3 +file: /song1.mp3 +Time: 4 +Artist: æøå +Title: æøå +Album: æøå +mtime: 1272319626 +songList end