1 #! /usr/bin/env python3
2 """Run through the bookmarks database and delete bookmarks
5 This file is a part of Bookmarks database and Internet robot.
8 from __future__ import print_function
12 __author__ = "Oleg Broytman <phd@phdru.name>"
13 __copyright__ = "Copyright (C) 2023 PhiloSoft Design"
14 __license__ = "GNU GPL"
18 from getopt import getopt
19 optlist, args = getopt(sys.argv[1:], "s")
23 for _opt, _arg in optlist:
32 print("Broytman delete bookmarks, Copyright (C)"
33 " 2023 PhiloSoft Design")
36 sys.stderr.write("Usage: delete [-s] del_file\n")
39 # Read the file with bookmarks to delete
42 del_file = open(args[0], 'rt')
44 delete_urls.add(line[:-1]) # strip trailing newline
47 from storage import storage
51 sys.stdout.write("Loading %s: " % storage.filename)
54 root_folder = storage.load()
55 from bkmk_objects import make_linear, break_tree
56 make_linear(root_folder)
57 objects = len(root_folder.linear)
62 # Run through the list of objects and store bookmarks indices
65 for object_no in range(objects):
66 object = root_folder.linear[object_no]
69 if object.href in delete_urls:
70 del_idx.append(object_no)
73 if deleted and report_stats:
74 sys.stdout.write("Saving %s: " % storage.filename)
77 if not deleted and report_stats:
78 sys.stdout.write("No need to save data\n")
82 for idx in reversed(del_idx):
83 bookmark = root_folder.linear[idx]
84 folder = bookmark.parent
86 for object_no in range(len(folder)):
87 object = folder[object_no]
88 if object.isBookmark and object.href in delete_urls:
89 folder_indices.append(object_no)
90 for _idx in reversed(folder_indices):
92 del root_folder.linear[idx]
93 break_tree(root_folder.linear)
94 storage.store(root_folder)
96 if deleted and report_stats:
98 print(objects, "objects passed")
99 print(deleted, "objects deleted")
102 if __name__ == '__main__':