Library importing

I can now import both v1.1 and v1.2 libraries.  I split this into
appropriate functions for each version.
This commit is contained in:
Bryan Schumaker 2010-12-01 22:02:16 -05:00
parent 8a0baf6693
commit 3c920c72be
1 changed files with 48 additions and 9 deletions

View File

@ -14,10 +14,13 @@ lib_file = "library"
vers = "%s.%s" % (libsaria.__major__, libsaria.__minor__)
if libsaria.__dev__ == True:
lib_file = lib_file + "-dev"
vers = vers + "-dev"
lib_file += ".xml"
lib_file = path.join(path.saria_dir(), lib_file)
xml_children = xml.children
xml_child = xml.child
xml_attrs = xml.attributes
def encode_attr(doc, node, attr, value):
child = add_child(doc, node, attr)
@ -35,9 +38,16 @@ def encode_track(doc, node, id):
add_text(doc, child, filepath)
def decode_track(node):
def decode_sources_v1_2(node):
for child in xml_children(node):
source = xml_child(child).data.strip()
print "Scanning source: %s" % source
libsaria.sources.new_source(source)
def decode_track_v1_1(node):
track = dict()
for child in xml.children(node):
for child in xml_children(node):
key, value = decode_attr(child)
track[key] = value
id = file2id(track["filepath"])
@ -45,6 +55,34 @@ def decode_track(node):
set_attr(id, "score", int(track["score"]))
def decode_track_v1_2(node):
for track in xml_children(node):
attrs = xml_attrs(track)
name, path = decode_attr(track)
id = file2id(path)
set_attr(id, "count", int(attrs["count"]))
set_attr(id, "score", int(attrs["score"]))
def decode_v1_1(node):
for track in xml_children(node):
decode_track_v1_1(track)
def decode_v1_2(node):
children = xml_children(node)
sources = None
tracks = None
for node in children:
name = node.nodeName
if name == "sources":
sources = node
elif name == "tracks":
tracks = node
decode_sources_v1_2(sources)
decode_track_v1_2(tracks)
def backup():
doc = xml.new()
child = add_child(doc, doc, "library", {"version":vers})
@ -66,9 +104,10 @@ def restore(file):
fin = open(file)
doc = xml.parse(fin)
child = xml.child(doc)
for track in xml.children(child):
decode_track(track)
library.save()
attrs = xml.attributes(child)
version = attrs.get("version", "1.1")
print "Decoding version: %s" % version
if version == "1.1":
decode_v1_1(child)
elif version == "1.2":
decode_v1_2(child)