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.0.tar.gz (52.6 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.0-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pagefind-1.5.0.tar.gz
Algorithm Hash digest
SHA256 145528046a860b932a014493af22cc1c48f00cf5414daaf83581b02cea20ca51
MD5 cdc7d6447a300926f45345f729a345ce
BLAKE2b-256 7cb39795c226d2be6781962d8baad83edc8dfe44ff788b34f8606843fa9fe2e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pagefind-1.5.0.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.0-py3-none-any.whl.

File metadata

  • Download URL: pagefind-1.5.0-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.7

File hashes

Hashes for pagefind-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7336e0eecd3638ed85b48967849c6406caa617d83737015c3be10395fb3af3ba
MD5 20fb0d1492b8d95c92edbc46e44e5034
BLAKE2b-256 d6923dfc9e9a0c756b65948c1ea8fa62745e9a4cab9395971d86d97064a7ebf3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pagefind-1.5.0-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