[svn r1558] First version of xbelimp.
#!/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