88 lines
1.7 KiB
Python
88 lines
1.7 KiB
Python
# Bryan Schumaker (8/8/2010)
|
|
|
|
import libsaria
|
|
|
|
tag = None
|
|
audio = None
|
|
ins_table = None
|
|
ins_index = None
|
|
ins_tree = None
|
|
|
|
class Collection:
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
def scan(self, path):
|
|
print "Scanning path:", path
|
|
global ins_table
|
|
global ins_index
|
|
global ins_tree
|
|
self.reset()
|
|
ins_table = self.table.insert
|
|
ins_index = self.index.insert
|
|
ins_tree = self.tree. insert
|
|
self.update(path)
|
|
self.tree.sort()
|
|
self.save()
|
|
|
|
|
|
def reset(self):
|
|
print "Resetting collection ... "
|
|
from table import Table
|
|
from index import Index
|
|
from tree import Tree
|
|
self.table = Table()
|
|
self.index = Index()
|
|
self.tree = Tree()
|
|
|
|
|
|
def save(self):
|
|
from libsaria import data
|
|
data.save((self.table, self.index, self.tree), "library", "")
|
|
|
|
|
|
|
|
def insert(self, file, filepath):
|
|
global tag
|
|
global audio
|
|
global ins_table
|
|
global ins_index
|
|
global ins_tree
|
|
tags = tag(file)
|
|
audio_prop = audio(file)
|
|
if tags.artist == u"":
|
|
tags.artist = "Unknown Artist"
|
|
if tags.album == u"":
|
|
tags.album = "Unknown Album"
|
|
if tags.title == u"":
|
|
tags.title = "Unknown Title"
|
|
list = [tags.artist, tags.album, tags.title]
|
|
id = ins_table(list)
|
|
ins_index(id, list)
|
|
list.append(id)
|
|
ins_tree(list, tags, audio_prop, filepath)
|
|
|
|
|
|
def update(self, path):
|
|
global tag
|
|
global audio
|
|
FileRef = libsaria.collection.FileRef
|
|
join = libsaria.path.join
|
|
insert = self.insert
|
|
tag = FileRef.tag
|
|
audio = FileRef.audioProperties
|
|
|
|
for root,dirs,files in libsaria.path.walk(path):
|
|
for file in files:
|
|
file = join(root,file)
|
|
try:
|
|
insert(FileRef(file), file)
|
|
except Exception,e:
|
|
pass
|
|
#print Exception, e
|
|
#print e
|
|
|
|
|
|
|