"""
GLAMWalk -- Volume 4: Libraries & Archives
10_internet_archive_search.py

A real search against Internet Archive's documented advanced-search API.

Source: Volume Four, Chapter 3 -- Internet Archive
Targets Python 3.11.4 -- see Volume One, Chapter 1.5/1.6.

NOTE: This script makes real network requests to a live public API.
It's safe to run as-is, but requires an internet connection.
"""

import requests

def search_internet_archive(query, mediatype="texts", rows=20):
    url = "https://archive.org/advancedsearch.php"
    params = {
        "q": f"{query} AND mediatype:{mediatype}",
        "fl[]": ["identifier", "title", "creator", "date"],
        "rows": rows,
        "output": "json",
    }
    response = requests.get(url, params=params, timeout=20)
    response.raise_for_status()
    return response.json().get("response", {}).get("docs", [])

results = search_internet_archive("public domain botany")
for doc in results:
    print(doc.get("title"), "-", doc.get("identifier"))
