58 lines
1.1 KiB
Python
58 lines
1.1 KiB
Python
|
|
from pydantic import BaseModel
|
||
|
|
import json
|
||
|
|
|
||
|
|
|
||
|
|
class RegionNames(BaseModel):
|
||
|
|
fullName: str
|
||
|
|
shortName: str
|
||
|
|
displayName: str
|
||
|
|
primaryDisplayName: str
|
||
|
|
secondaryDisplayName: str
|
||
|
|
lastSearchName: str
|
||
|
|
|
||
|
|
|
||
|
|
class EssId(BaseModel):
|
||
|
|
sourceName: str
|
||
|
|
sourceId: int
|
||
|
|
|
||
|
|
|
||
|
|
class Country(BaseModel):
|
||
|
|
name: str
|
||
|
|
isoCode2: str
|
||
|
|
isoCode3: str
|
||
|
|
|
||
|
|
|
||
|
|
class HierarchyInfo(BaseModel):
|
||
|
|
country: Country
|
||
|
|
|
||
|
|
|
||
|
|
class Coordinates(BaseModel):
|
||
|
|
lat: float
|
||
|
|
long: float
|
||
|
|
|
||
|
|
|
||
|
|
class GaiaRegionResult(BaseModel):
|
||
|
|
index: int
|
||
|
|
gaiaId: int
|
||
|
|
type: str
|
||
|
|
regionNames: RegionNames
|
||
|
|
essId: EssId
|
||
|
|
coordinates: Coordinates
|
||
|
|
hierarchyInfo: HierarchyInfo
|
||
|
|
|
||
|
|
|
||
|
|
class SearchResults(BaseModel):
|
||
|
|
q: str
|
||
|
|
rid: str
|
||
|
|
rc: str
|
||
|
|
sr: list[GaiaRegionResult]
|
||
|
|
|
||
|
|
|
||
|
|
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.regionNames.fullName for result in results.sr if result.type in ('CITY', 'NEIGHBORHOOD')])
|
||
|
|
)
|