# ===================================================================== # pm (pymarks): an HTML bookmark and RSS generator # ===================================================================== # # A simple, fast bookmark system that generates a static HTML page with # tag filtering, pagination and built-in search. Everything is embedded # in the HTML: no databases, no server-side requirements. # # Built for personal use. Polished for others who might find it useful # (see the script's configuration section). # # Works equally well offline and online. Create separate HTML files for # different purposes: public.txt, private.txt, etc... # # ===================================================================== # COMPATIBILITY # ===================================================================== # # Supported: Linux, macOS, *BSD and Windows # # Output: bookmarks.html (works in any modern browser) # rss.xml (valid RSS 2.0 feed) # # Required: Python 3.6 or higher (uses only standard library) # # ===================================================================== # LAYOUT # ===================================================================== # # The generated HTML uses a clean 3-column desktop layout that's # optimized for 1080p (zoom-friendly for other resolutions): # # - Left: Tags (A to SPLIT_LETTER) # - Center: Bookmarks (with filtering, pagination and search) # - Right: Tags (SPLIT_LETTER+1 to Z) # # The default split is the letter 'K'; configurable. # # ===================================================================== # FILE FORMAT # ===================================================================== # # Each bookmark entry uses 4 lines: URL, TITLE, Description, Tags. # # Separate entries with one or more blank lines. # # Comment lines are supported (preceded with #) # # URL [remote | local | absolute | relative] # TITLE # Description [supports HTML] # tag1, tag2, tag3 [tip: Use tag to PIN some tags to the top] # # # Bookmarks appended to the end of the text file will appear as the # most recent entries in bookmarks.html and the RSS feed. # # ===================================================================== # FILE FORMAT EXAMPLE # ===================================================================== # # https://www.gutenberg.org/ # Project Gutenberg # Free eBooks - over 70,000 free classic books # ebooks, reading, public-domain # # https://archive.org/ # Internet Archive # Digital library of internet sites and other resources # archive, history, media # # file:///home/user/docs/python-cheatsheet.html # Python Cheat Sheet # Local reference guide for Python # python, programming, local # # ../../notes/todo.html # Daily todo list # Tasks and reminders for today # todo, schedule, local # # https://www.openstreetmap.org/ # OpenStreetMap # Free editable map of the world # maps, geography # # ===================================================================== # PERFORMANCE EXPECTATIONS # ===================================================================== # # Designed for modest collections (a few thousand bookmarks or less). # # Up to 1,000 bookmarks: Instant, no noticeable delay. # About 5,000 bookmarks: Near-instant search and tag filtering. # # ===================================================================== # HOW TO USE # ===================================================================== # # 1. Create a bookmarks.txt file following the format above # # 2. Run the script with your bookmark file: # # Default output: bookmarks.html # pm bookmarks.txt # # Custom output: mypage.html # pm bookmarks.txt mypage.html # # Custom output: html extension auto-added # pm bookmarks.txt mypage # # With a directory path # pm path/to/bookmarks.txt anyName.html # # 3. This creates the HTML file and rss.xml in the current directory. # # 4. Upload both files to your web server to share with others or use # bookmarks.html locally. # # ===================================================================== # CONFIGURATION NOTES # ===================================================================== # # See the CONFIGURATION section at the top of this script for details. # # The following can be easily customized: # # - Tag columns defined using a 'split letter' # - Page title # - RSS feed title # - Footer links # - Number of bookmarks per page # - Column Width Adjustments # # ===================================================================== # RSS FEED # ===================================================================== # # Append new bookmarks to the end of the file. # # The RSS feed includes the 10 most recent bookmarks (culled from the # bottom of your bookmarks.txt file) and is regenerated each time the # script runs. # # ===================================================================== # # Last updated: 09 August 2026 #