58 lines
1.7 KiB
Python
Raw Normal View History

from pydantic import BaseModel, Field
import json
class RegionNames(BaseModel):
full_name: str = Field(alias='fullName')
short_name: str = Field(alias='shortName')
display_name: str = Field(alias='displayName')
primary_display_name: str = Field(alias='primaryDisplayName')
secondary_display_name: str = Field(alias='secondaryDisplayName')
last_search_name: str = Field(alias='lastSearchName')
class EssId(BaseModel):
source_name: str = Field(alias='sourceName')
source_id: int = Field(alias='sourceId')
class Country(BaseModel):
name: str
iso_code2: str = Field(alias='isoCode2')
iso_code3: str = Field(alias='isoCode3')
class HierarchyInfo(BaseModel):
country: Country
class Coordinates(BaseModel):
latitude: float = Field(alias='lat')
longitude: float = Field(alias='long')
class GaiaRegionResult(BaseModel):
index: int
gaia_id: int = Field(alias='gaiaId')
type: str
region_names: RegionNames = Field(alias='regionNames')
ess_id: EssId = Field(alias='essId')
coordinates: Coordinates
hierarchy_info: HierarchyInfo = Field(alias='hierarchyInfo')
class SearchResults(BaseModel):
query: str = Field(alias='q')
request_id: str = Field(alias='rid')
request_status: str = Field(alias='rc')
search_results: list[GaiaRegionResult] = Field(alias='sr')
if __name__ == "__main__":
with open('locations_v3_search_example.json', 'r', encoding='utf-8') as json_file:
data = json.load(json_file)
results = SearchResults(**data)
print('\n'.join(
[result.region_names.full_name for result in results.search_results if result.type in ('CITY', 'NEIGHBORHOOD')])
)