← back to Paul Conrad Archive
src/conrad/crawlers/wichita.py
45 lines
"""Wichita State University — Cartoon Collection of Paul Conrad (MS 90-18).
Tries the legacy static finding aid and the ArchivesSpace public UI directly (robots Crawl-delay 35 honoured).
The ArchivesSpace PUI sits behind an AWS WAF JS challenge; the legacy aid now redirects to the AS home page.
If blocked, the seed cache (fetched earlier via r.jina.ai — provenance caveat in REPORT.md) is relied on."""
from __future__ import annotations
from .base import Blocked, Crawler, Transient
LEGACY = "https://specialcollections.wichita.edu/collections/ms/90-18/90-18-a.html"
RESOURCE = "https://archivesspace.wichita.edu/repositories/3/resources/166"
SERIES2 = "https://archivesspace.wichita.edu/repositories/3/archival_objects/111935"
class Wichita(Crawler):
source_id = "wichita"
name = "Wichita State University Special Collections — MS 90-18"
repository = "Wichita State University"
url = RESOURCE
classification = "PHYSICAL_ARCHIVE"
access_notes = "Item-level ArchivesSpace records (Series 2, 1968-1971); originals viewable in Special Collections."
def crawl(self) -> None:
live = False
for url in (LEGACY, RESOURCE, SERIES2):
try:
st, html = self.http.get(url)
self.stats["pages"] += 1
if st == 200 and ("Conrad" in html or "90-18" in html):
live = True
self.notes.append(f"live ok: {url}")
elif st == 200:
self.error(url, "HTTP 200 but no Conrad content (legacy aid retired -> redirects to AS home)")
self.notes.append(f"{url}: retired/redirected")
else:
self.error(url, f"HTTP {st}")
except (Blocked, Transient) as e:
self.error(url, f"BLOCKED: {e}")
self.notes.append(f"blocked: {url}")
if not live:
self.status = "blocked"
self.notes.append("REQUIRES_PERMISSION for automated access; relying on seed_wichita cache (r.jina.ai provenance)")
CRAWLER = Wichita