From 07518d34d676df41bf2259cf66ba92444673c810 Mon Sep 17 00:00:00 2001 From: Jon Bergli Heier Date: Thu, 18 Aug 2011 20:59:16 +0200 Subject: Basic database support. --- directory.py | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'directory.py') diff --git a/directory.py b/directory.py index c7bef2d..2b79126 100644 --- a/directory.py +++ b/directory.py @@ -1,4 +1,4 @@ -import os, mimetypes, recode, events, cuesheet, mutagen +import os, mimetypes, recode, events, cuesheet, mutagen, db from config import config @@ -161,3 +161,31 @@ class File(DirectoryEntry): d = DirectoryEntry.json(self) d.update({'cached': os.path.exists(cache_path)}) return d + +def rec_scan(session, root): + directory = db.Directory.get(session, root) + + d = Directory(root, isabs = True) + for de in d.listdir(): + if isinstance(de, Directory): + rec_scan(session, de.abs_path) + else: + print de.metadata + artist = db.Artist.get(session, de.metadata['artist']) if 'artist' in de.metadata else None + album = db.Album.get(session, de.metadata['album'], artist.id if artist else None) if 'album' in de.metadata else None + track = db.Track.get(session, de.metadata['title'] if 'title' in de.metadata else None, None, + os.path.basename(de.path), de.track, directory.id, artist.id if artist else None, album.id if album else None) + +def scan(root = None): + if not root: + root = config.get('music_root') + + try: + session = db.Session() + rec_scan(session, root) + session.commit() + finally: + session.close() + +if __name__ == '__main__': + scan() -- cgit v1.2.3