lib/xbelimp.py
branchxbelweb
changeset 24 f3a926c13ce0
child 25 777bcb36f7be
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/xbelimp.py	Sat Sep 27 01:32:50 2003 -0400
@@ -0,0 +1,53 @@
+#!/usr/bin/python
+
+from xbel_handler import XBELHandler, bookmark
+from xml.sax import saxexts
+import bkmark
+
+def import_xbel(xbelfile):
+    xbel_handler = XBELHandler()
+    p=saxexts.XMLParserFactory.make_parser("xml.sax.drivers.drv_xmlproc")
+    p.setDocumentHandler( xbel_handler )
+    p.parseFile( xbelfile )
+    return  xbel_handler.bms
+
+_keywords = {}
+    
+def import_bookmarks(db, bms):
+	global _keywords
+	_keywords = {}
+	for elem in db.get_all_keywords():
+		_keywords[elem[1]] = elem[0]
+	for folder in bms.folders:
+		import_folder(db,folder)
+
+def import_folder(db, folder, keywords = []):
+	global _keywords
+	kw = folder.title.strip()
+	if _keywords.has_key(kw):
+		id = _keywords[kw]
+	else:
+		#id = db.add_keyword(kw)
+		print "add keyword '" +  kw + "'"
+		id = len(_keywords)+100
+		_keywords[kw] = id
+	for child in folder.children:
+		if isinstance(child, bookmark.Bookmark):
+			import_bookmark(db, child, keywords+[id])
+		else:
+			import_folder(db, child, keywords+[id])
+
+def import_bookmark(db, bookmark, keywords):
+	bk = bkmark.Bookmark()
+	bk.name = bookmark.title
+	bk.url = bookmark.href
+	if has_attr(bookmark, 'desc'):
+		bk.desc = bookmark.desc
+	try:
+		print "add bookmark '" + bk.name + "'"
+		# id = db.add_bookmark(bk)
+		print "with keywords '" + join(',',keywords)[-1] + "'"
+		# db.update_keywords(id, keywords)
+	except:
+		pass
+