gallica-getter
Find documents where a word occurs, context for the occurrence, full text for OCR document pages. Compose Gallica services using Python classes that represent each service.
Examples
Here are a few examples from a JSON API I am currently hosting:
async def get_documents_with_occurrences(
args: ContextSearchArgs,
on_get_total_records: Callable[[int], None],
on_get_origin_urls: Callable[[List[str]], None],
session: aiohttp.ClientSession,
semaphore: asyncio.Semaphore,
) -> List[VolumeRecord]:
"""Queries Gallica's SRU API to get metadata for a given term in the archive."""
link = None
if args.link_distance and args.link_term:
link = (args.link_term, args.link_distance)
# get the volumes in which the term appears
volume_Gallica_wrapper = VolumeOccurrence()
gallica_records = await volume_Gallica_wrapper.get(
terms=args.terms,
start_date=make_date_from_year_mon_day(args.year, args.month, args.day),
end_date=make_date_from_year_mon_day(args.end_year, args.end_month, args.day),
codes=args.codes,
source=args.source,
link=link,
limit=args.limit,
start_index=args.cursor or 0,
sort=args.sort,
on_get_total_records=on_get_total_records,
on_get_origin_urls=on_get_origin_urls,
session=session,
semaphore=semaphore,
)
return list(gallica_records)
async def get_sample_context_in_documents(
records: List[VolumeRecord],
session: aiohttp.ClientSession,
semaphore: asyncio.Semaphore,
) -> List[ExtractRoot]:
"""Queries Gallica's search result API to show a sample of context instead of the entire batch."""
# warn if terms length is greater than 1
if any(len(record.terms) > 1 for record in records):
print(
"Warning: using sample context for multi-word terms; only the first term will be used."
)
context_snippet_wrapper = ContextSnippets()
context = await context_snippet_wrapper.get(
[(record.ark, record.terms[0]) for record in records],
session=session,
semaphore=semaphore,
)
return list(context)
async def get_context_include_full_page(
keyed_docs: Dict[str, VolumeRecord],
session: aiohttp.ClientSession,
sem: asyncio.Semaphore,
context_source: Callable,
):
"""Queries Context and PageText to get the text of each page a term occurs on."""
page_text_wrapper = PageText()
queries: List[PageQuery] = []
# build records to be filled with page text for each page w/occurrence
gallica_records: Dict[str, GallicaRecordFullPageText] = {
record.ark: GallicaRecordFullPageText(**record.dict(), context=[])
for record in keyed_docs.values()
}
for context_response in await context_source(
records=list(keyed_docs.values()), session=session, semaphore=sem
):
record = keyed_docs[context_response.ark]
for page in context_response.pages:
queries.append(
PageQuery(
ark=record.ark,
page_num=int(page.page_num),
)
)
page_data = await page_text_wrapper.get(
page_queries=queries, semaphore=sem, session=session
)
for occurrence_page in page_data:
record = gallica_records[occurrence_page.ark]
terms_string = " ".join(record.terms)
record.context.append(
{
"page_num": occurrence_page.page_num,
"text": occurrence_page.text,
"page_url": f"{record.url}/f{occurrence_page.page_num}.image.r={terms_string}",
}
)
return list(gallica_records.values())
Metadata
Release files for gallicaGetter 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| gallicagetter-2.0.0.tar.gz | 25.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gallicagetter-2.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 61.1 kB
Release files / gallicagetter-2.0.0.tar.gz
| Download URL | gallicagetter-2.0.0.tar.gz |
|---|---|
| Size | 25.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ca540c54c01d3e492c941b385fad34eeb044f5c4b77dab7b9061848f10eaa3c5
|
|
BLAKE2b-256 checksum How to use checksums |
c6ce9b88f3680c88a61614dd46d973b2a242cd25466d918821ee6ab96aff19b2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.6
|
Release files / gallicagetter-2.0.0-py3-none-any.whl
| Download URL | gallicagetter-2.0.0-py3-none-any.whl |
|---|---|
| Size | 35.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
190a67ebcc08055a38d18e4a7847c87d4afdcffda2d511edb93c764670547622
|
|
BLAKE2b-256 checksum How to use checksums |
996d497bb4c55f244f4a4aac4afd9e45653eebe80bd349bb4d93d34b6733a398
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.6
|
Security for gallicaGetter 2.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.