24
|
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]
|
25
|
21 |
for child in bms.folders:
|
|
22 |
if isinstance(child, bookmark.Bookmark):
|
|
23 |
import_bookmark(db, child)
|
|
24 |
else:
|
|
25 |
import_folder(db, child)
|
24
|
26 |
|
|
27 |
def import_folder(db, folder, keywords = []):
|
|
28 |
global _keywords
|
25
|
29 |
kw = folder.title.strip().encode('utf-8')
|
24
|
30 |
if _keywords.has_key(kw):
|
|
31 |
id = _keywords[kw]
|
|
32 |
else:
|
|
33 |
#id = db.add_keyword(kw)
|
25
|
34 |
print "add keyword '" + kw + "'"
|
24
|
35 |
id = len(_keywords)+100
|
|
36 |
_keywords[kw] = id
|
|
37 |
for child in folder.children:
|
|
38 |
if isinstance(child, bookmark.Bookmark):
|
|
39 |
import_bookmark(db, child, keywords+[id])
|
|
40 |
else:
|
|
41 |
import_folder(db, child, keywords+[id])
|
|
42 |
|
25
|
43 |
def import_bookmark(db, bookmark, keywords = []):
|
24
|
44 |
bk = bkmark.Bookmark()
|
25
|
45 |
bk.name = bookmark.title.encode('utf-8')
|
|
46 |
bk.url = bookmark.href.encode('utf-8')
|
|
47 |
if hasattr(bookmark, 'desc'):
|
|
48 |
bk.desc = bookmark.desc.encode('utf-8')
|
|
49 |
print "add bookmark '" + bk.name + "'",
|
|
50 |
# id = db.add_bookmark(bk)
|
|
51 |
print " with keywords '" + ','.join(map(str,keywords)) + "'"
|
|
52 |
# db.update_keywords(id, keywords)
|
24
|
53 |
|