Acquire and normalize online software manuals into clean, convertible source files — the acquisition front-end to pagespeak.
Project description
pagespring
Acquire and normalize online software manuals into clean, convertible source files — the acquisition front-end to pagespeak.
Point it at a manual's URL. A pattern recognizes the source type, acquires
the raw pages (stdlib urllib), and normalizes them into ONE clean
HTML/markdown file with absolute asset URLs under incoming/<slug>/. That clean
file is the deliverable; converting it into the finished RAG corpus is a separate
step (pagespeak) that consumes incoming/ on its own — pagespring never runs it.
Lean by design: pf-core[cli] + beautifulsoup4, stdlib fetch, no ML stack.
Intended use
pagespring is for publicly available documentation — vendor manuals, help
centers, open textbooks, API specs. It fetches only what the source serves to
any reader: there is no login/session handling, no paywall traversal, and no
bot-detection evasion. It is a polite client: it identifies itself with a
pagespring/<version> User-Agent (see .env.example to override), honors
429 Retry-After, backs off on server errors, paces crawl requests, and caps
crawl sizes.
It is a user-invoked, one-manual-at-a-time archiver — closer to "Save Page
As" than to an autonomous crawler — so it does not consult robots.txt
(which governs bots that discover URLs on their own; you supply the URL).
Before mirroring a site, check its terms of use. What you may do with the
acquired copy (personal RAG corpus, internal search, redistribution) is
governed by the source's license — the deliverable under incoming/ stays on
your machine, and nothing is re-published by this tool.
Install
pip install pagespring
Quick start
pagespring ingest https://docs.tableplus.com # acquire + normalize → incoming/tableplus/
pagespring localize <slug> # pull a deliverable's images later (resumable; --all)
pagespring patterns # list the source patterns
pagespring classify <url> # which pattern handles a URL (no fetch)
pagespring status # what's been acquired
Deliverables land in ./incoming/<slug>/ under the directory you run from.
Dev
bin/setup # clone → venv + editable install with dev extras
bin/test # pytest
bin/lint # ruff check + ruff format --check + mypy (strict)
See docs/usage.md for the full command set and docs/architecture.md for the acquire → normalize flow and how to add a new source pattern.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pagespring-0.1.0.tar.gz.
File metadata
- Download URL: pagespring-0.1.0.tar.gz
- Upload date:
- Size: 68.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f3d35a269dce42ef98bdc3ba8e48471ce6fd1f4c1dd4494c0456dc13a833a7b
|
|
| MD5 |
0451ae06147e9e796d702062afaef546
|
|
| BLAKE2b-256 |
5116f443c62a530af1052ba5b237b85b265ff56de169a58c689526e461ee4db9
|
Provenance
The following attestation bundles were made for pagespring-0.1.0.tar.gz:
Publisher:
publish.yml on phierceweb/pagespring
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pagespring-0.1.0.tar.gz -
Subject digest:
8f3d35a269dce42ef98bdc3ba8e48471ce6fd1f4c1dd4494c0456dc13a833a7b - Sigstore transparency entry: 2155941990
- Sigstore integration time:
-
Permalink:
phierceweb/pagespring@79e8b77962132e1de56312878de82b93648d730d -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/phierceweb
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@79e8b77962132e1de56312878de82b93648d730d -
Trigger Event:
push
-
Statement type:
File details
Details for the file pagespring-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pagespring-0.1.0-py3-none-any.whl
- Upload date:
- Size: 58.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
baa1200f90d8e1d1c8c10433c1a60c12ca36d65144090d9e5e1c9e5492bef300
|
|
| MD5 |
ce54e2de303e3c24ff4dfdcc608fa600
|
|
| BLAKE2b-256 |
24c2ca4aa7dedc33ae78e390ac5f2b0a6408c041c91cc80322ee2545c8a3d47d
|
Provenance
The following attestation bundles were made for pagespring-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on phierceweb/pagespring
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pagespring-0.1.0-py3-none-any.whl -
Subject digest:
baa1200f90d8e1d1c8c10433c1a60c12ca36d65144090d9e5e1c9e5492bef300 - Sigstore transparency entry: 2155942110
- Sigstore integration time:
-
Permalink:
phierceweb/pagespring@79e8b77962132e1de56312878de82b93648d730d -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/phierceweb
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@79e8b77962132e1de56312878de82b93648d730d -
Trigger Event:
push
-
Statement type: