import requests import logging logger = logging.getLogger(__name__) class ISAPClient: """ Klient do odpytywania API Internetowego Systemu Aktów Prawnych (ISAP). Zapewnia autorytatywną wiedzę źródłową np. ujednoliconych tekstów ustaw. """ BASE_URL = "http://isap.sejm.gov.pl/api/isap/acts" def fetch_act(self, publisher: str, year: int, position: int): """ Pobiera metadane oraz URL do pełnego tekstu ujednoliconego z ISAP. Przykład: WDU (Dziennik Ustaw), rocznik, pozycja """ doc_id = f"{publisher}{year}{position:04d}" url = f"{self.BASE_URL}/{doc_id}" logger.info(f"[ISAP] Odpytywanie o akt prawny: {doc_id}") try: resp = requests.get(url, timeout=10) resp.raise_for_status() data = resp.json() # Formujemy link to wariantu HTML, by Scraper (Firecrawl) mógł przeparsować Markdown. text_url = f"{self.BASE_URL}/{doc_id}/text.html" return {"id": doc_id, "metadata": data, "text_url": text_url} except Exception as e: logger.error(f"[ISAP] Błąd komunikacji z Sejmowym API: {e}") return None