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: Ziele:
- Keine API-Signaturänderungen (bestehende Routen bleiben)
- /semantic/pages reichert pageid/fullurl für ALLE Titel batchweise an (redirects=1, converttitles=1) - /semantic/pages reichert pageid/fullurl für ALLE Titel batchweise an (redirects=1, converttitles=1)
- /info robust: 404 statt 500, mit Titel-Varianten - /info robust: 404 statt 500, mit Titel-Varianten
- Wiederholungen & Throttling gegen MediaWiki - Wiederholungen & Throttling gegen MediaWiki
- Optionale Diagnose-Ausgaben und Coverage-Kennzahlen - 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 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. prefix="/import/wiki" ergänzen und in main.py OHNE prefix einbinden.
""" """
from typing import Dict, Any, Optional, List, Tuple from typing import Dict, Any, Optional, List
from fastapi import APIRouter, HTTPException, Query, Request from fastapi import APIRouter, HTTPException, Query
from pydantic import BaseModel from pydantic import BaseModel
import os, time, logging import os, time, logging
import requests import requests
@ -38,7 +39,7 @@ WIKI_SLEEPMS = int(os.getenv("WIKI_SLEEP_MS", "0")) # Throttle zwischen Requ
# Single Session (Cookies für Login) # Single Session (Cookies für Login)
wiki_session = requests.Session() 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 -------- # -------- Schemas --------
class WikiLoginRequest(BaseModel): 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) return PageContentResponse(pageid=pageid, title=title or "", wikitext=wikitext)
@router.get("/info", response_model=PageInfoResponse) @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 # 1. Versuch: wie geliefert, mit redirects/converttitles
res = _fetch_pageinfo_batch([title]) res = _fetch_pageinfo_batch([title])
if res.get(title): if res.get(title):