llm-api/wiki_router.py aktualisiert
All checks were successful
Deploy Trainer_LLM to llm-node / deploy (push) Successful in 2s

This commit is contained in:
Lars 2025-08-11 13:36:02 +02:00
parent bba860d839
commit d8d12e0b6b

View File

@ -1,22 +1,23 @@
"""
wiki_router.py - v1.4.0 (stabil & nachvollziehbar)
wiki_router.py v1.4.1 (stabil & nachvollziehbar)
Änderungen ggü. v1.4.0:
- /info: Optionalen Request-Parameter entfernt (FastAPI/Pydantic Typfehler behoben)
- Keine API-Signaturänderungen der Routen
Ziele:
- Keine API-Signaturänderungen (bestehende Routen bleiben)
- /semantic/pages reichert pageid/fullurl für ALLE Titel batchweise an (redirects=1, converttitles=1)
- /info robust: 404 statt 500, mit Titel-Varianten
- Wiederholungen & Throttling gegen MediaWiki
- Optionale Diagnose-Ausgaben und Coverage-Kennzahlen
Annahme: Der Router wird in main.py mit Prefix eingebunden:
app.include_router(wiki_router, prefix="/import/wiki")
Wenn ihr stattdessen den Prefix im Router setzen wollt, einfach in der APIRouter-Zeile unten
prefix="/import/wiki" ergänzen und in main.py OHNE prefix einbinden.
"""
from typing import Dict, Any, Optional, List, Tuple
from fastapi import APIRouter, HTTPException, Query, Request
from typing import Dict, Any, Optional, List
from fastapi import APIRouter, HTTPException, Query
from pydantic import BaseModel
import os, time, logging
import requests
@ -38,7 +39,7 @@ WIKI_SLEEPMS = int(os.getenv("WIKI_SLEEP_MS", "0")) # Throttle zwischen Requ
# Single Session (Cookies für Login)
wiki_session = requests.Session()
wiki_session.headers.update({"User-Agent": "local-llm-wiki-proxy/1.4"})
wiki_session.headers.update({"User-Agent": "local-llm-wiki-proxy/1.4.1"})
# -------- Schemas --------
class WikiLoginRequest(BaseModel):
@ -214,7 +215,7 @@ def parse_page(pageid: int = Query(...), title: str = Query(None)):
return PageContentResponse(pageid=pageid, title=title or "", wikitext=wikitext)
@router.get("/info", response_model=PageInfoResponse)
def page_info(title: str = Query(..., description="Seitentitel"), request: Request | None = None):
def page_info(title: str = Query(..., description="Seitentitel")):
# 1. Versuch: wie geliefert, mit redirects/converttitles
res = _fetch_pageinfo_batch([title])
if res.get(title):