all2md.parsers.webarchive

Safari WebArchive parser that converts .webarchive files to AST representation.

This module provides the WebArchiveToAstConverter class that parses Safari WebArchive files (binary plist format) and builds an AST representation.

class all2md.parsers.webarchive.WebArchiveToAstConverter

Bases: BaseParser

Convert Safari WebArchive files to AST representation.

This parser extracts HTML content from Safari WebArchive files (binary plist format) and converts it to AST using the HTML parser.

Parameters:

options (WebArchiveOptions or None) – WebArchive conversion options

Examples

Basic usage:
>>> from all2md.parsers.webarchive import WebArchiveToAstConverter
>>> from all2md.options.webarchive import WebArchiveOptions
>>> parser = WebArchiveToAstConverter()
>>> doc = parser.parse("example.webarchive")
Extract embedded resources:
>>> options = WebArchiveOptions(
...     extract_subresources=True,
...     attachment_output_dir="./resources"
... )
>>> parser = WebArchiveToAstConverter(options)
>>> doc = parser.parse("example.webarchive")

Initialize the WebArchive parser with options and progress callback.

__init__(options: WebArchiveOptions | None = None, progress_callback: Callable[[ProgressEvent], None] | None = None)

Initialize the WebArchive parser with options and progress callback.

parse(input_data: str | Path | IO[bytes] | bytes) Document

Parse WebArchive file into an AST Document.

Parameters:

input_data (str, Path, IO[bytes], or bytes) – The input WebArchive file to parse

Returns:

AST Document node representing the parsed WebArchive structure

Return type:

Document

Raises:
extract_metadata(archive_data: dict[str, Any], html_content: str = '') DocumentMetadata

Extract metadata from WebArchive plist.

Parameters:
  • archive_data (dict) – Parsed WebArchive plist data

  • html_content (str, optional) – HTML content for additional metadata extraction

Returns:

Extracted metadata

Return type:

DocumentMetadata