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 |