# Bryan Schumaker (8 / 12 / 2010) get = dict.get class TagNode(dict): def __init__(self, id): dict.__init__(self) self["id"] = id def insert(self, tag_list, tags, audio, filepath): self["artist"] = tags.artist self["album"] = tags.album self["title"] = tags.title self["year"] = tags.year self["filepath"] = filepath self["playcount"] = 0 self["length"] = audio.length def walk(self): yield self class Tree(dict): def __init__(self): dict.__init__(self) def walk(self): keys = self.keys() keys.sort() keys.reverse() get_item = self.__getitem__ for key in keys: for track in get_item(key).walk(): yield track def insert(self, tag_list, tags, audio, filepath): if len(tag_list) == 0: return global get global insert tag = tag_list[0] node = get(self, tag, None) if node == None: if len(tag_list) == 1: node = TagNode(tag) else: node = Tree() self[tag] = node node.insert(tag_list[1:], tags, audio, filepath)