memetoday / guardian.py
rushankg's picture
Update guardian.py
faca1ba verified
# guardian.py
import requests
import streamlit as st
BASE_URL = "https://content.guardianapis.com/search"
CONTENT_API = "https://content.guardianapis.com"
def fetch_headlines(section="world", limit=5):
"""
Returns a list of (headline, url) tuples from The Guardian.
"""
key = st.secrets["GUARDIAN_API_KEY"]
params = {
"api-key": key,
"section": section,
"page-size": limit,
"order-by": "newest",
"show-fields": "headline"
}
resp = requests.get(BASE_URL, params=params)
resp.raise_for_status()
results = resp.json()["response"]["results"]
return [(item["fields"]["headline"], item["webUrl"]) for item in results]
def fetch_full_article(url: str) -> str:
"""
Given a Guardian article URL, fetch its body text via the Content API.
"""
key = st.secrets["GUARDIAN_API_KEY"]
# strip off the public site domain to get the API path
prefix = "https://www.theguardian.com"
if url.startswith(prefix):
path = url[len(prefix):]
else:
raise ValueError(f"Unexpected URL format: {url}")
resp = requests.get(
f"{CONTENT_API}{path}",
params={
"api-key": key,
"show-fields": "bodyText"
}
)
resp.raise_for_status()
return resp.json()["response"]["content"]["fields"]["bodyText"]