[svn r1559] Unicode work around.
#!/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 child in bms.folders:
if isinstance(child, bookmark.Bookmark):
import_bookmark(db, child)
else:
import_folder(db, child)
def import_folder(db, folder, keywords = []):
global _keywords
kw = folder.title.strip().encode('utf-8')
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.encode('utf-8')
bk.url = bookmark.href.encode('utf-8')
if hasattr(bookmark, 'desc'):
bk.desc = bookmark.desc.encode('utf-8')
print "add bookmark '" + bk.name + "'",
# id = db.add_bookmark(bk)
print " with keywords '" + ','.join(map(str,keywords)) + "'"
# db.update_keywords(id, keywords)