X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/0608cf1476b80ea7fe1160c78689383f03b4c231..87c91ec5c42089797da1525bd270269b2cd9d3ad:/nominatim/clicmd/api.py diff --git a/nominatim/clicmd/api.py b/nominatim/clicmd/api.py index f2f1826b..e8450e6b 100644 --- a/nominatim/clicmd/api.py +++ b/nominatim/clicmd/api.py @@ -7,14 +7,12 @@ """ Subcommand definitions for API calls from the command line. """ -from typing import Mapping, Dict, Any +from typing import Dict, Any import argparse import logging import json import sys -from nominatim.tools.exec_utils import run_api_script -from nominatim.errors import UsageError from nominatim.clicmd.args import NominatimArgs import nominatim.api as napi import nominatim.api.v1 as api_output @@ -62,18 +60,6 @@ def _add_api_output_arguments(parser: argparse.ArgumentParser) -> None: "Parameter is difference tolerance in degrees.")) -def _run_api(endpoint: str, args: NominatimArgs, params: Mapping[str, object]) -> int: - script_file = args.project_dir / 'website' / (endpoint + '.php') - - if not script_file.exists(): - LOG.error("Cannot find API script file.\n\n" - "Make sure to run 'nominatim' from the project directory \n" - "or use the option --project-dir.") - raise UsageError("API script not found.") - - return run_api_script(endpoint, args.project_dir, - phpcgi_bin=args.phpcgi_path, params=params) - class APISearch: """\ Execute a search query. @@ -123,7 +109,8 @@ class APISearch: 'countries': args.countrycodes, 'excluded': args.exclude_place_ids, 'viewbox': args.viewbox, - 'bounded_viewbox': args.bounded + 'bounded_viewbox': args.bounded, + 'locales': args.get_locales(api.config.DEFAULT_LANGUAGE) } if args.query: @@ -138,9 +125,6 @@ class APISearch: country=args.country, **params) - for result in results: - result.localize(args.get_locales(api.config.DEFAULT_LANGUAGE)) - if args.dedupe and len(results) > 1: results = deduplicate_results(results, args.limit) @@ -201,14 +185,14 @@ class APIReverse: layers=args.get_layers(napi.DataLayer.ADDRESS | napi.DataLayer.POI), address_details=True, # needed for display name geometry_output=args.get_geometry_output(), - geometry_simplification=args.polygon_threshold) + geometry_simplification=args.polygon_threshold, + locales=args.get_locales(api.config.DEFAULT_LANGUAGE)) if args.format == 'debug': print(loglib.get_and_disable()) return 0 if result: - result.localize(args.get_locales(api.config.DEFAULT_LANGUAGE)) output = api_output.format_result( napi.ReverseResults([result]), args.format, @@ -263,10 +247,8 @@ class APILookup: results = api.lookup(places, address_details=True, # needed for display name geometry_output=args.get_geometry_output(), - geometry_simplification=args.polygon_threshold or 0.0) - - for result in results: - result.localize(args.get_locales(api.config.DEFAULT_LANGUAGE)) + geometry_simplification=args.polygon_threshold or 0.0, + locales=args.get_locales(api.config.DEFAULT_LANGUAGE)) output = api_output.format_result( results, @@ -340,6 +322,7 @@ class APIDetails: api = napi.NominatimAPI(args.project_dir) + locales = args.get_locales(api.config.DEFAULT_LANGUAGE) result = api.details(place, address_details=args.addressdetails, linked_places=args.linkedplaces, @@ -347,13 +330,11 @@ class APIDetails: keywords=args.keywords, geometry_output=napi.GeometryFormat.GEOJSON if args.polygon_geojson - else napi.GeometryFormat.NONE) + else napi.GeometryFormat.NONE, + locales=locales) if result: - locales = args.get_locales(api.config.DEFAULT_LANGUAGE) - result.localize(locales) - output = api_output.format_result( result, 'json',