|
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 |