diff --git a/python_apps/media-monitor2/media/monitor/metadata.py b/python_apps/media-monitor2/media/monitor/metadata.py index 20dc8ddec..6547fbfca 100644 --- a/python_apps/media-monitor2/media/monitor/metadata.py +++ b/python_apps/media-monitor2/media/monitor/metadata.py @@ -92,6 +92,9 @@ def truncate_to_length(item, length): class Metadata(Loggable): def __init__(self, fpath): + # Forcing the unicode through + try: fpath = fpath.decode("utf-8") + except: pass try: full_mutagen = mutagen.File(fpath, easy=True) except Exception: raise BadSongFile(fpath) self.path = fpath diff --git a/python_apps/media-monitor2/media/monitor/pure.py b/python_apps/media-monitor2/media/monitor/pure.py index 7ae6d1392..a621e5458 100644 --- a/python_apps/media-monitor2/media/monitor/pure.py +++ b/python_apps/media-monitor2/media/monitor/pure.py @@ -83,7 +83,7 @@ def no_extension_basename(path): >>> no_extension_basename('blah.ml') 'blah' """ - base = os.path.basename(path) + base = unicode(os.path.basename(path)) if extension(base) == "": return base else: return base.split(".")[-2] @@ -154,7 +154,7 @@ def normalized_metadata(md, original_path): hour,minute,second,name = md['MDATA_KEY_TITLE'].split("-",4) # We assume that MDATA_KEY_YEAR is always given for airtime recorded # shows - new_md['MDATA_KEY_TITLE'] = '%s-%s-%s:%s:%s' % \ + new_md['MDATA_KEY_TITLE'] = u'%s-%s-%s:%s:%s' % \ (name, new_md['MDATA_KEY_YEAR'], hour, minute, second) # IMPORTANT: in the original code. MDATA_KEY_FILEPATH would also # be set to the original path of the file for airtime recorded shows diff --git a/python_apps/media-monitor2/tests/test_metadata.py b/python_apps/media-monitor2/tests/test_metadata.py index c01d37a79..63babe5f0 100644 --- a/python_apps/media-monitor2/tests/test_metadata.py +++ b/python_apps/media-monitor2/tests/test_metadata.py @@ -6,7 +6,7 @@ from media.monitor.metadata import Metadata class TestMetadata(unittest.TestCase): def setUp(self): - self.music_folder = '/home/rudi/music' + self.music_folder = u'/home/rudi/music' def test_got_music_folder(self): t = os.path.exists(self.music_folder) @@ -20,13 +20,18 @@ class TestMetadata(unittest.TestCase): i = 0 for full_path in full_paths: if os.path.isfile(full_path): - md = Metadata(full_path).extract() + md_full = Metadata(full_path) + md = md_full.extract() if i < 3: i += 1 print("Sample metadata: '%s'" % md) self.assertTrue( len( md.keys() ) > 0 ) self.assertTrue( 'MDATA_KEY_MD5' in md ) + utf8 = md_full.utf8() + for k,v in md.iteritems(): + if hasattr(utf8[k], 'decode'): + self.assertEqual( utf8[k].decode('utf-8'), md[k] ) else: - print("Skipping '%s'" % full_path) + print("Skipping '%s' because it's a directory" % full_path) if __name__ == '__main__': unittest.main()