summaryrefslogtreecommitdiff
path: root/directory.py
diff options
context:
space:
mode:
Diffstat (limited to 'directory.py')
-rw-r--r--directory.py15
1 files changed, 12 insertions, 3 deletions
diff --git a/directory.py b/directory.py
index 79024f4..5a757bd 100644
--- a/directory.py
+++ b/directory.py
@@ -5,9 +5,10 @@ from config import config
class DirectoryEntry(object):
'''Base class for directory entries.'''
- def __init__(self, path, isabs = False, track = None):
+ def __init__(self, path, isabs = False, track = None, metadata = {}):
self.path = path
self.track = track
+ self.metadata = metadata
if isabs:
self.abs_path = path
@@ -28,7 +29,7 @@ class DirectoryEntry(object):
return '<a href="/files/{path}">{name}</a><br />'.format(path = self.path, name = os.path.basename(self.path))
def json(self):
- return {'type': self.entry_type, 'name': self.path, 'track': self.track}
+ return {'type': self.entry_type, 'name': self.path, 'track': self.track, 'metadata': self.metadata}
class Directory(DirectoryEntry):
'''A directory entry inside a directory.'''
@@ -48,7 +49,15 @@ class Directory(DirectoryEntry):
if os.path.splitext(f)[1] == '.cue':
cue = cuesheet.Cuesheet(abs_path)
for t in cue.tracks:
- files.append(File(rel_path, track = t.track[0]))
+ metadata = {}
+ info = cue.info[0]
+ if info.performer:
+ metadata['artist'] = info.performer
+ if info.title:
+ metadata['album'] = info.title
+ if t.title:
+ metadata['title'] = t.title
+ files.append(File(rel_path, track = t.track[0], metadata = metadata))
else:
files.append(File(rel_path))
return sorted(directories) + sorted(files)