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:
parent
8a0baf6693
commit
3c920c72be
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue