lib/xbelimp.py
branchxbelweb
changeset 24 f3a926c13ce0
child 25 777bcb36f7be
equal deleted inserted replaced
23:69c1f93892dd 24:f3a926c13ce0
       
     1 #!/usr/bin/python
       
     2 
       
     3 from xbel_handler import XBELHandler, bookmark
       
     4 from xml.sax import saxexts
       
     5 import bkmark
       
     6 
       
     7 def import_xbel(xbelfile):
       
     8     xbel_handler = XBELHandler()
       
     9     p=saxexts.XMLParserFactory.make_parser("xml.sax.drivers.drv_xmlproc")
       
    10     p.setDocumentHandler( xbel_handler )
       
    11     p.parseFile( xbelfile )
       
    12     return  xbel_handler.bms
       
    13 
       
    14 _keywords = {}
       
    15     
       
    16 def import_bookmarks(db, bms):
       
    17 	global _keywords
       
    18 	_keywords = {}
       
    19 	for elem in db.get_all_keywords():
       
    20 		_keywords[elem[1]] = elem[0]
       
    21 	for folder in bms.folders:
       
    22 		import_folder(db,folder)
       
    23 
       
    24 def import_folder(db, folder, keywords = []):
       
    25 	global _keywords
       
    26 	kw = folder.title.strip()
       
    27 	if _keywords.has_key(kw):
       
    28 		id = _keywords[kw]
       
    29 	else:
       
    30 		#id = db.add_keyword(kw)
       
    31 		print "add keyword '" +  kw + "'"
       
    32 		id = len(_keywords)+100
       
    33 		_keywords[kw] = id
       
    34 	for child in folder.children:
       
    35 		if isinstance(child, bookmark.Bookmark):
       
    36 			import_bookmark(db, child, keywords+[id])
       
    37 		else:
       
    38 			import_folder(db, child, keywords+[id])
       
    39 
       
    40 def import_bookmark(db, bookmark, keywords):
       
    41 	bk = bkmark.Bookmark()
       
    42 	bk.name = bookmark.title
       
    43 	bk.url = bookmark.href
       
    44 	if has_attr(bookmark, 'desc'):
       
    45 		bk.desc = bookmark.desc
       
    46 	try:
       
    47 		print "add bookmark '" + bk.name + "'"
       
    48 		# id = db.add_bookmark(bk)
       
    49 		print "with keywords '" + join(',',keywords)[-1] + "'"
       
    50 		# db.update_keywords(id, keywords)
       
    51 	except:
       
    52 		pass
       
    53