Home

Awesome

SafariBookmarkEditor

Python module for easily adding, removing, and moving positions of Safari bookmarks in the context of the currently logged in user. On fresh installs that lack a Bookmarks.plist in the ~/Library/Safari/ folder or in the case of a corrupt plist a boilerplate Bookmarks plist will be generated with the proper format. Bookmark titles are checked against existing bookmarks to ensure no collisions occur. Can also be run as a CLI tool.

Example Usage:

#!/usr/bin/python

from SafariBookmarkEditor import SafariBookmarks          # Import the module

bookmarks = SafariBookmarks()                             # Create a Safari Bookmarks instance to act on.

bookmarks.removeAll()                                     # Remove all bookmarks
bookmarks.add("Reddit", "https://reddit.com")             # Add bookmark for Reddit
bookmarks.add("Apple", "https://www.apple.com", index=0)  # Add bookmark for Apple at 0th position
bookmarks.swap("Apple", "Reddit")                         # Swap positions of Apple and Reddit bookmarks
bookmarks.move("Apple", 0)                                # Move Apple bookmark back to 0th position
bookmarks.remove("Apple")                                 # Remove the Apple bookmark

bookmarks.write()                                         # Write changes to Bookmarks plist

CLI Usage:

./SafariBookmarkEditor.py -h
usage: SafariBookmarkEditor.py [-h] [--add title::url [title::url ...]]
                               [--remove title [title ...]] [--removeall]

Command line tool for adding and removing Safari bookmarks in the context of
the currently logged in user.

optional arguments:
  -h, --help            show this help message and exit
  --add title::url [title::url ...]
                        double-colon seperated title and url of bookmark(s) to
                        add in IE: --add MyWebsite::http://www.mywebsite.com
                        MyOtherWebsite::http://www.myotherwebsite.com
  --remove title [title ...]
                        title(s) of bookmark(s) to remove IE: --remove
                        MyWebsite MyOtherWebsite
  --removeall           remove all current bookmarks