diff --git a/beets/library.py b/beets/library.py index cb5ddeb77..2e639e334 100644 --- a/beets/library.py +++ b/beets/library.py @@ -60,6 +60,7 @@ ITEM_FIELDS = [ ('length', 'real', False, True), ('bitrate', 'int', False, True), + ('format', 'text', False, True), ] ITEM_KEYS_WRITABLE = [f[0] for f in ITEM_FIELDS if f[3] and f[2]] ITEM_KEYS_META = [f[0] for f in ITEM_FIELDS if f[3]] diff --git a/beets/mediafile.py b/beets/mediafile.py index 74dc00b11..7581c57f4 100644 --- a/beets/mediafile.py +++ b/beets/mediafile.py @@ -50,6 +50,18 @@ class FileTypeError(UnreadableFileError): pass +# Constants. + +# Human-readable type names. +TYPES = { + 'mp3': 'MP3', + 'mp4': 'AAC', + 'ogg': 'OGG', + 'flac': 'FLAC', + 'ape': 'APE', +} + + # Flags for encoding field behavior. class Enumeration(object): @@ -660,3 +672,6 @@ class MediaFile(object): else: return self.mgfile.info.bitrate + @property + def format(self): + return TYPES[self.type] diff --git a/test/rsrc/test.blb b/test/rsrc/test.blb index 15d3d859d..aba567880 100644 Binary files a/test/rsrc/test.blb and b/test/rsrc/test.blb differ diff --git a/test/test_db.py b/test/test_db.py index f504564bd..86e16f073 100644 --- a/test/test_db.py +++ b/test/test_db.py @@ -46,6 +46,7 @@ def item(): return beets.library.Item({ 'path': 'somepath', 'length': 60.0, 'bitrate': 128000, + 'format': 'FLAC', 'mb_trackid': 'someID-1', 'mb_albumid': 'someID-2', 'mb_artistid': 'someID-3', @@ -247,6 +248,11 @@ class DestinationTest(unittest.TestCase): def test_sanitize_replaces_colon_with_dash(self): p = beets.library._sanitize_path(u':', 'Darwin') self.assertEqual(p, u'-') + + def test_path_with_format(self): + self.lib.path_format = '$artist/$album ($format)' + p = self.lib.destination(self.i) + self.assert_('(FLAC)' in p) class MigrationTest(unittest.TestCase): """Tests the ability to change the database schema between diff --git a/test/test_mediafile_basic.py b/test/test_mediafile_basic.py index 81bc39d9d..005c54a43 100644 --- a/test/test_mediafile_basic.py +++ b/test/test_mediafile_basic.py @@ -207,26 +207,31 @@ read_only_correct_dicts = { 'full.mp3': { 'length': 1.0, 'bitrate': 80000, + 'format': 'MP3', }, 'full.flac': { 'length': 1.0, 'bitrate': 705600, + 'format': 'FLAC', }, 'full.m4a': { 'length': 1.0, 'bitrate': 64000, + 'format': 'AAC', }, 'full.ogg': { 'length': 1.0, 'bitrate': 48000, + 'format': 'OGG', }, 'full.ape': { 'length': 1.0, 'bitrate': 705600, + 'format': 'APE', }, }