]> git.phdru.name Git - bookmarks_db.git/blob - Writers/bkmk_wflad.py
a82c52ca586244e7024bc18ede089afb775d5ab8
[bookmarks_db.git] / Writers / bkmk_wflad.py
1 """Dump bookmarks db to a more readable FLat Ascii Database
2
3 This file is a part of Bookmarks database and Internet robot.
4 """
5
6 __version__ = "$Revision$"[11:-2]
7 __revision__ = "$Id$"[5:-2]
8 __date__ = "$Date$"[7:-2]
9 __author__ = "Oleg Broytman <phd@phdru.name>"
10 __copyright__ = "Copyright (C) 2000-2011 PhiloSoft Design"
11 __license__ = "GNU GPL"
12
13 __all__ = ['writer_flad']
14
15
16 import time
17 from bkmk_objects import Writer
18
19
20 def strftime(s):
21    if s is None:
22       return s
23    n = int(s)
24    if n > 10**10:
25       n /= 10**6
26    try:
27       return time.strftime("%a %d %b %Y %T", time.localtime(n))
28    except (TypeError, ValueError): # s is None or is already formatted
29       return s
30
31
32 class writer_flad(Writer):
33    filename = "bookmarks_db.flad"
34
35    def __init__(self, outfile, prune=None):
36       Writer.__init__(self, outfile, prune)
37       self.first_object = 1
38
39    def start_folder(self, f, level):
40       self.outfile.write("""
41 Level: %d
42 Folder: %s
43 AddDate: %s
44 Comment: %s
45 LastModified: %s
46 """ % (level, f.name, strftime(f.add_date), f.comment, strftime(f.last_modified)))
47
48    def bookmark(self, b, level):
49       self.outfile.write("""
50 Level: %d
51 Title: %s
52 URL: %s
53 AddDate: %s
54 LastVisit: %s
55 LastModified: %s
56 Keyword: %s
57 Comment: %s""" % (level+1, b.name, b.href, strftime(b.add_date), strftime(b.last_visit), strftime(b.last_modified), b.keyword, b.comment))
58
59       for attr_name, attr_out in (("error", "Error"), ("no_error", "NoError"),
60             ("moved", "Moved"), ("size", "Size"), ("md5", "Md5"),
61             ("real_title", "RealTitle"), ("test_time", "TestTime"),
62             ("icon_href", "IconURI"), ("icon", "Icon"), ("charset", "Charset")):
63          if hasattr(b, attr_name):
64             self.outfile.write("\n%s: %s" % (attr_out, getattr(b, attr_name)))
65
66       if hasattr(b, "last_tested"):
67          self.outfile.write("\n%s: %s" % ("LastTested", strftime(getattr(b, "last_tested"))))
68
69       self.outfile.write("\n")
70
71    def ruler(self, r, level):
72       self.outfile.write("\nLevel: %s\nRuler: YES\n" % (level+1))