Source code for export_as_bookmark.bookmark_exporter

"""Bookmark exporter."""


from __future__ import annotations

import html

from typing import List


[docs]class BookmarkExporter: """Export bookmark into Netscape Bookmark file.""" _TEMPLATE = """<!DOCTYPE NETSCAPE-Bookmark-file-1> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"> <TITLE>Bookmarks</TITLE> <H1>ExportAsBookmark</H1> <DL><p> <DT><H3>{name}</H3> <DL><p> {bookmarks} </DL><p> </DL><p> """ _TEMPLATE_A = """<DT><A HREF="{url}">{title}</A>\n""" urls: List[str] def __init__(self, urls: List[str]) -> None: """Initialize. :param urls: List of urls """ self.urls = list(urls) return
[docs] @classmethod def from_lines(cls, urls: str) -> BookmarkExporter: """Create bookmark exporter from list of urls. :param urls: Newline separated list or urls :returns: BookmarkExporter instance """ return cls([url.strip() for url in urls.split("\n") if url.strip()])
[docs] def export(self, name: str) -> str: """Export bookmark HTML. :param name: Folder name :returns: HTML string """ return self._TEMPLATE.format( name=name, bookmarks="".join( self._TEMPLATE_A.format(title=html.escape(url), url=html.escape(url)) for url in self.urls ), )