47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
import subprocess
|
|
import json
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
def run_mapper(term):
|
|
"""
|
|
Ruft das bestehende mapper script auf und liefert Vorschläge zurück.
|
|
Erwartet, dass das mapper script eine JSON-Ausgabe liefert:
|
|
{
|
|
"term": "Begriff",
|
|
"norm_name": "Normierter Treffer oder KEIN TREFFER",
|
|
"norm_id": "ID",
|
|
"suggestions": ["Vorschlag1", "Vorschlag2", "Vorschlag3"]
|
|
}
|
|
"""
|
|
mapper_script = Path("/home/jarnold/projects/GND-Skript Test/NormVokabular_Mapper_1.2.py") # dein bestehendes Mapper-Skript
|
|
if not mapper_script.exists():
|
|
raise FileNotFoundError(f"{mapper_script} nicht gefunden")
|
|
|
|
# Übergabe als JSON-String
|
|
input_json = json.dumps({"term": term})
|
|
|
|
# Aufruf via subprocess
|
|
result = subprocess.run(
|
|
[sys.executable, str(mapper_script), input_json],
|
|
capture_output=True,
|
|
text=True
|
|
)
|
|
|
|
if result.returncode != 0:
|
|
raise RuntimeError(f"Mapper Fehler: {result.stderr}")
|
|
|
|
try:
|
|
output = json.loads(result.stdout)
|
|
except Exception as e:
|
|
raise ValueError(f"Ungültige Ausgabe vom Mapper: {e}")
|
|
|
|
return output
|
|
|
|
|
|
if __name__ == "__main__":
|
|
if len(sys.argv) > 1:
|
|
term = sys.argv[1]
|
|
output = run_mapper(term)
|
|
print(json.dumps(output, ensure_ascii=False))
|