lib/xbelimp.py
branchxbelweb
changeset 26 17b0cd274530
parent 25 777bcb36f7be
equal deleted inserted replaced
25:777bcb36f7be 26:17b0cd274530
     2 
     2 
     3 from xbel_handler import XBELHandler, bookmark
     3 from xbel_handler import XBELHandler, bookmark
     4 from xml.sax import saxexts
     4 from xml.sax import saxexts
     5 import bkmark
     5 import bkmark
     6 
     6 
     7 def import_xbel(xbelfile):
     7 def parse_xbel(xbelfile):
     8     xbel_handler = XBELHandler()
     8     xbel_handler = XBELHandler()
     9     p=saxexts.XMLParserFactory.make_parser("xml.sax.drivers.drv_xmlproc")
     9     p=saxexts.XMLParserFactory.make_parser("xml.sax.drivers.drv_xmlproc")
    10     p.setDocumentHandler( xbel_handler )
    10     p.setDocumentHandler( xbel_handler )
    11     p.parseFile( xbelfile )
    11     p.parseFile( xbelfile )
    12     return  xbel_handler.bms
    12     return  xbel_handler.bms
    16 def import_bookmarks(db, bms):
    16 def import_bookmarks(db, bms):
    17 	global _keywords
    17 	global _keywords
    18 	_keywords = {}
    18 	_keywords = {}
    19 	for elem in db.get_all_keywords():
    19 	for elem in db.get_all_keywords():
    20 		_keywords[elem[1]] = elem[0]
    20 		_keywords[elem[1]] = elem[0]
       
    21 	#print "<body>"
       
    22 	#print "<ol>"
    21 	for child in bms.folders:
    23 	for child in bms.folders:
    22 		if isinstance(child, bookmark.Bookmark):
    24 		if isinstance(child, bookmark.Bookmark):
    23 			import_bookmark(db, child)
    25 			import_bookmark(db, child)
    24 		else:
    26 		else:
    25 			import_folder(db, child)
    27 			import_folder(db, child)
       
    28 	#print "</ol>"
    26 
    29 
    27 def import_folder(db, folder, keywords = []):
    30 def import_folder(db, folder, keywords = []):
    28 	global _keywords
    31 	global _keywords
    29 	kw = folder.title.strip().encode('utf-8')
    32 	kw = folder.title.strip().encode('utf-8')
       
    33 	#print "<li>" + kw
    30 	if _keywords.has_key(kw):
    34 	if _keywords.has_key(kw):
    31 		id = _keywords[kw]
    35 		id = _keywords[kw]
       
    36 		#print " [%d]" % (id,)
    32 	else:
    37 	else:
    33 		#id = db.add_keyword(kw)
    38 		id = db.add_keyword(kw)
    34 		print "add keyword '" +  kw + "'" 
    39 		id = len(_keywords)
    35 		id = len(_keywords)+100
    40 		#print " [%d] (added)" % (id,)
    36 		_keywords[kw] = id
    41 		_keywords[kw] = id
       
    42 	#print "<ol>"
    37 	for child in folder.children:
    43 	for child in folder.children:
    38 		if isinstance(child, bookmark.Bookmark):
    44 		if isinstance(child, bookmark.Bookmark):
    39 			import_bookmark(db, child, keywords+[id])
    45 			import_bookmark(db, child, keywords+[id])
    40 		else:
    46 		else:
    41 			import_folder(db, child, keywords+[id])
    47 			import_folder(db, child, keywords+[id])
       
    48 	#print "</ol></li>"
    42 
    49 
    43 def import_bookmark(db, bookmark, keywords = []):
    50 def import_bookmark(db, bookmark, keywords = []):
    44 	bk = bkmark.Bookmark()
    51 	bk = bkmark.Bookmark()
    45 	bk.name = bookmark.title.encode('utf-8')
    52 	bk.name = bookmark.title.encode('utf-8')
    46 	bk.url = bookmark.href.encode('utf-8')
    53 	bk.url = bookmark.href.encode('utf-8')
    47 	if hasattr(bookmark, 'desc'):
    54 	if hasattr(bookmark, 'desc'):
    48 		bk.desc = bookmark.desc.encode('utf-8')
    55 		bk.desc = bookmark.desc.encode('utf-8')
    49 	print "add bookmark '" + bk.name + "'",
    56 	id = db.add_bookmark(bk)
    50 	# id = db.add_bookmark(bk)
    57 	#print "<li>add bookmark '" + bk.name + "' [%d]" % (id,)
    51 	print " with keywords '" + ','.join(map(str,keywords)) + "'"
    58 	#print " with keywords '" + ','.join(map(str,keywords)) + "'</li>"
    52 	# db.update_keywords(id, keywords)
    59 	db.update_keywords(id, keywords)
    53 	
    60