]> git.phdru.name Git - bookmarks_db.git/blob - Writers/bkmk_wflad.py
Cleanup code: use 4 spaces
[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 __author__ = "Oleg Broytman <phd@phdru.name>"
7 __copyright__ = "Copyright (C) 2000-2017 PhiloSoft Design"
8 __license__ = "GNU GPL"
9
10 __all__ = ['writer_flad']
11
12
13 import time
14 from bkmk_objects import Writer
15
16
17 def strftime(s):
18     try:
19         return time.strftime("%a %d %b %Y %T", time.localtime(int(s)))
20     except (TypeError, ValueError): # s is None or is already formatted
21         return s
22
23
24 class writer_flad(Writer):
25     filename = "bookmarks_db.flad"
26
27     def __init__(self, outfile, prune=None):
28         Writer.__init__(self, outfile, prune)
29         self.first_object = 1
30
31     def start_folder(self, f, level):
32         self.outfile.write("""
33   Level: %d
34   Folder: %s
35   AddDate: %s
36   Comment: %s
37   LastModified: %s
38   """ % (level, f.name, strftime(f.add_date), f.comment, strftime(f.last_modified)))
39
40     def bookmark(self, b, level):
41         self.outfile.write("""
42   Level: %d
43   Title: %s
44   URL: %s
45   AddDate: %s
46   LastVisit: %s
47   LastModified: %s
48   Keyword: %s
49   Comment: %s""" % (level+1, b.name, b.href, strftime(b.add_date), strftime(b.last_visit), strftime(b.last_modified), b.keyword, b.comment))
50
51         for attr_name, attr_out in (("error", "Error"), ("no_error", "NoError"),
52               ("moved", "Moved"), ("size", "Size"), ("md5", "Md5"),
53               ("real_title", "RealTitle"), ("test_time", "TestTime"),
54               ("icon_href", "IconURI"), ("icon", "Icon"), ("charset", "Charset")):
55             if hasattr(b, attr_name):
56                 value = getattr(b, attr_name)
57                 if isinstance(value, unicode):
58                     value = value.encode('utf-8')
59                 self.outfile.write("\n%s: %s" % (attr_out, value))
60
61         if hasattr(b, "last_tested"):
62             self.outfile.write("\n%s: %s" % ("LastTested", strftime(getattr(b, "last_tested"))))
63
64         self.outfile.write("\n")
65
66     def ruler(self, r, level):
67         self.outfile.write("\nLevel: %s\nRuler: YES\n" % (level+1))