Skip to main content

Python API for Pagefind

Project description

pagefind

An async python API for the pagefind binary.

Installation

python3 -m pip install 'pagefind[bin]'
python3 -m pagefind --help

Usage

import asyncio
import json
import logging
import os
from pagefind.index import PagefindIndex, IndexConfig

logging.basicConfig(level=os.environ.get("LOG_LEVEL", "INFO"))
log = logging.getLogger(__name__)
html_content = (
    "<html>"
    "  <body>"
    "    <main>"
    "      <h1>Example HTML</h1>"
    "      <p>This is an example HTML page.</p>"
    "    </main>"
    "  </body>"
    "</html>"
)


def prefix(pre: str, s: str) -> str:
    return pre + s.replace("\n", f"\n{pre}")


async def main():
    config = IndexConfig(
        root_selector="main", logfile="index.log", output_path="./output", verbose=True
    )
    async with PagefindIndex(config=config) as index:
        log.debug("opened index")
        new_file, new_record, new_dir = await asyncio.gather(
            index.add_html_file(
                content=html_content,
                url="https://example.com",
                source_path="other/example.html",
            ),
            index.add_custom_record(
                url="/elephants/",
                content="Some testing content regarding elephants",
                language="en",
                meta={"title": "Elephants"},
            ),
            index.add_directory("./public"),
        )
        print(prefix("new_file    ", json.dumps(new_file, indent=2)))
        print(prefix("new_record  ", json.dumps(new_record, indent=2)))
        print(prefix("new_dir     ", json.dumps(new_dir, indent=2)))

        files = await index.get_files()
        for file in files:
            print(prefix("files", f"{len(file['content']):10}B {file['path']}"))


if __name__ == "__main__":
    asyncio.run(main())

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pagefind-1.5.2.tar.gz (52.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pagefind-1.5.2-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file pagefind-1.5.2.tar.gz.

File metadata

  • Download URL: pagefind-1.5.2.tar.gz
  • Upload date:
  • Size: 52.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for pagefind-1.5.2.tar.gz
Algorithm Hash digest
SHA256 fffddd6e2016b06bdca83b83d4ac4bef379cf0559f05ecdb6908a8729a27dbf3
MD5 dcbda5118785a384b9d789672935692e
BLAKE2b-256 50ccefc080eb3191d1afc75dc58c336676c0847fc4610b1d9e7d58b4083836b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pagefind-1.5.2.tar.gz:

Publisher: release.yml on Pagefind/pagefind

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pagefind-1.5.2-py3-none-any.whl.

File metadata

  • Download URL: pagefind-1.5.2-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for pagefind-1.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6c4086ad9eaa7e8f863085652f6b1093549b1737848d946daa0706ee57f778d1
MD5 86f0eaa1cecfdf31d88281e7eb8f64fd
BLAKE2b-256 0aa7414e1df2749f647784e32da78ce3081a9fedf1ae8d5b3bb8d4c5643f06cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pagefind-1.5.2-py3-none-any.whl:

Publisher: release.yml on Pagefind/pagefind

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page