cc-4105: Forcing unicode on paths. Added tests for metadata (unicode related)
This commit is contained in:
parent
5d875c5020
commit
349c6f61f6
|
@ -92,6 +92,9 @@ def truncate_to_length(item, length):
|
||||||
|
|
||||||
class Metadata(Loggable):
|
class Metadata(Loggable):
|
||||||
def __init__(self, fpath):
|
def __init__(self, fpath):
|
||||||
|
# Forcing the unicode through
|
||||||
|
try: fpath = fpath.decode("utf-8")
|
||||||
|
except: pass
|
||||||
try: full_mutagen = mutagen.File(fpath, easy=True)
|
try: full_mutagen = mutagen.File(fpath, easy=True)
|
||||||
except Exception: raise BadSongFile(fpath)
|
except Exception: raise BadSongFile(fpath)
|
||||||
self.path = fpath
|
self.path = fpath
|
||||||
|
|
|
@ -83,7 +83,7 @@ def no_extension_basename(path):
|
||||||
>>> no_extension_basename('blah.ml')
|
>>> no_extension_basename('blah.ml')
|
||||||
'blah'
|
'blah'
|
||||||
"""
|
"""
|
||||||
base = os.path.basename(path)
|
base = unicode(os.path.basename(path))
|
||||||
if extension(base) == "": return base
|
if extension(base) == "": return base
|
||||||
else: return base.split(".")[-2]
|
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)
|
hour,minute,second,name = md['MDATA_KEY_TITLE'].split("-",4)
|
||||||
# We assume that MDATA_KEY_YEAR is always given for airtime recorded
|
# We assume that MDATA_KEY_YEAR is always given for airtime recorded
|
||||||
# shows
|
# 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)
|
(name, new_md['MDATA_KEY_YEAR'], hour, minute, second)
|
||||||
# IMPORTANT: in the original code. MDATA_KEY_FILEPATH would also
|
# IMPORTANT: in the original code. MDATA_KEY_FILEPATH would also
|
||||||
# be set to the original path of the file for airtime recorded shows
|
# be set to the original path of the file for airtime recorded shows
|
||||||
|
|
|
@ -6,7 +6,7 @@ from media.monitor.metadata import Metadata
|
||||||
|
|
||||||
class TestMetadata(unittest.TestCase):
|
class TestMetadata(unittest.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.music_folder = '/home/rudi/music'
|
self.music_folder = u'/home/rudi/music'
|
||||||
|
|
||||||
def test_got_music_folder(self):
|
def test_got_music_folder(self):
|
||||||
t = os.path.exists(self.music_folder)
|
t = os.path.exists(self.music_folder)
|
||||||
|
@ -20,13 +20,18 @@ class TestMetadata(unittest.TestCase):
|
||||||
i = 0
|
i = 0
|
||||||
for full_path in full_paths:
|
for full_path in full_paths:
|
||||||
if os.path.isfile(full_path):
|
if os.path.isfile(full_path):
|
||||||
md = Metadata(full_path).extract()
|
md_full = Metadata(full_path)
|
||||||
|
md = md_full.extract()
|
||||||
if i < 3:
|
if i < 3:
|
||||||
i += 1
|
i += 1
|
||||||
print("Sample metadata: '%s'" % md)
|
print("Sample metadata: '%s'" % md)
|
||||||
self.assertTrue( len( md.keys() ) > 0 )
|
self.assertTrue( len( md.keys() ) > 0 )
|
||||||
self.assertTrue( 'MDATA_KEY_MD5' in md )
|
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:
|
else:
|
||||||
print("Skipping '%s'" % full_path)
|
print("Skipping '%s' because it's a directory" % full_path)
|
||||||
|
|
||||||
if __name__ == '__main__': unittest.main()
|
if __name__ == '__main__': unittest.main()
|
||||||
|
|
Loading…
Reference in New Issue