diff --git a/pydantic_models/locations.py b/pydantic_models/locations.py new file mode 100644 index 0000000..df006c1 --- /dev/null +++ b/pydantic_models/locations.py @@ -0,0 +1,57 @@ +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')]) + ) diff --git a/pydantic_models/locations_v3_search_example.json b/pydantic_models/locations_v3_search_example.json new file mode 100644 index 0000000..a744e9f --- /dev/null +++ b/pydantic_models/locations_v3_search_example.json @@ -0,0 +1,298 @@ +{ + "q":"Нью Йорк", + "rid":"fbab370c153d458ea91ce8557d32fa71", + "rc":"OK", + "sr":[ + { + "@type":"gaiaRegionResult", + "index":"0", + "gaiaId":"2621", + "type":"CITY", + "regionNames":{ + "fullName":"Нью-Йорк, Нью-Йорк, США", + "shortName":"Нью-Йорк", + "displayName":"Нью-Йорк, Нью-Йорк, США", + "primaryDisplayName":"Нью-Йорк", + "secondaryDisplayName":"Нью-Йорк, США", + "lastSearchName":"Нью-Йорк" + }, + "essId":{ + "sourceName":"GAI", + "sourceId":"2621" + }, + "coordinates":{ + "lat":"40.712843", + "long":"-74.005966" + }, + "hierarchyInfo":{ + "country":{ + "name":"Соединенные Штаты", + "isoCode2":"US", + "isoCode3":"USA" + } + } + }, + { + "@type":"gaiaRegionResult", + "index":"1", + "gaiaId":"553248633938969338", + "type":"NEIGHBORHOOD", + "regionNames":{ + "fullName":"Центральный Нью-Йорк, Нью-Йорк, Нью-Йорк, США", + "shortName":"Центральный Нью-Йорк", + "displayName":"Центральный Нью-Йорк, Нью-Йорк, Нью-Йорк, США", + "primaryDisplayName":"Центральный Нью-Йорк", + "secondaryDisplayName":"Нью-Йорк, Нью-Йорк, США", + "lastSearchName":"Центральный Нью-Йорк" + }, + "essId":{ + "sourceName":"GAI", + "sourceId":"553248633938969338" + }, + "coordinates":{ + "lat":"40.759591", + "long":"-73.984912" + }, + "hierarchyInfo":{ + "country":{ + "name":"Соединенные Штаты", + "isoCode2":"US", + "isoCode3":"USA" + } + } + }, + { + "@type":"gaiaRegionResult", + "index":"2", + "gaiaId":"129440", + "type":"NEIGHBORHOOD", + "regionNames":{ + "fullName":"Манхэттен, Нью-Йорк, Нью-Йорк, США", + "shortName":"Манхэттен", + "displayName":"Манхэттен, Нью-Йорк, Нью-Йорк, США", + "primaryDisplayName":"Манхэттен", + "secondaryDisplayName":"Нью-Йорк, Нью-Йорк, США", + "lastSearchName":"Манхэттен" + }, + "essId":{ + "sourceName":"GAI", + "sourceId":"129440" + }, + "coordinates":{ + "lat":"40.783062", + "long":"-73.971252" + }, + "hierarchyInfo":{ + "country":{ + "name":"Соединенные Штаты", + "isoCode2":"US", + "isoCode3":"USA" + } + } + }, + { + "@type":"gaiaRegionResult", + "index":"3", + "gaiaId":"177851", + "type":"CITY", + "regionNames":{ + "fullName":"Бруклин, Нью-Йорк, США", + "shortName":"Бруклин", + "displayName":"Бруклин, Нью-Йорк, США", + "primaryDisplayName":"Бруклин", + "secondaryDisplayName":"Нью-Йорк, США", + "lastSearchName":"Бруклин" + }, + "essId":{ + "sourceName":"GAI", + "sourceId":"177851" + }, + "coordinates":{ + "lat":"40.678177", + "long":"-73.94416" + }, + "hierarchyInfo":{ + "country":{ + "name":"Соединенные Штаты", + "isoCode2":"US", + "isoCode3":"USA" + } + } + }, + { + "@type":"gaiaRegionResult", + "index":"4", + "gaiaId":"4933194", + "type":"AIRPORT", + "regionNames":{ + "fullName":"Нью-Йорк, Нью-Йорк, США (JFK-Джон Ф. Кеннеди, международный)", + "shortName":"Нью-Йорк, Нью-Йорк (JFK-Джон Ф. Кеннеди, международный)", + "displayName":"Нью-Йорк (JFK - Джон Ф. Кеннеди, международный), Нью-Йорк, США", + "primaryDisplayName":"Нью-Йорк (JFK - Джон Ф. Кеннеди, международный)", + "secondaryDisplayName":"Нью-Йорк, США", + "lastSearchName":"Нью-Йорк (JFK - Джон Ф. Кеннеди, международный)" + }, + "essId":{ + "sourceName":"GAI", + "sourceId":"4933194" + }, + "coordinates":{ + "lat":"40.644166", + "long":"-73.782548" + }, + "hierarchyInfo":{ + "country":{ + "name":"Соединенные Штаты", + "isoCode2":"US", + "isoCode3":"USA" + } + }, + "isMinorAirport":"false" + }, + { + "@type":"gaiaRegionResult", + "index":"5", + "gaiaId":"6141743", + "type":"POI", + "regionNames":{ + "fullName":"Всемирный финансовый центр, Нью-Йорк, Нью-Йорк, США", + "shortName":"Всемирный финансовый центр", + "displayName":"Всемирный финансовый центр, Нью-Йорк, Нью-Йорк, США", + "primaryDisplayName":"Всемирный финансовый центр", + "secondaryDisplayName":"Нью-Йорк, Нью-Йорк, США", + "lastSearchName":"Всемирный финансовый центр" + }, + "essId":{ + "sourceName":"GAI", + "sourceId":"6141743" + }, + "coordinates":{ + "lat":"40.71285", + "long":"-74.014432" + }, + "hierarchyInfo":{ + "country":{ + "name":"Соединенные Штаты", + "isoCode2":"US", + "isoCode3":"USA" + } + } + }, + { + "@type":"gaiaRegionResult", + "index":"6", + "gaiaId":"6056463", + "type":"POI", + "regionNames":{ + "fullName":"Центральный парк, Нью-Йорк, Нью-Йорк, США", + "shortName":"Центральный парк", + "displayName":"Центральный парк, Нью-Йорк, Нью-Йорк, США", + "primaryDisplayName":"Центральный парк", + "secondaryDisplayName":"Нью-Йорк, Нью-Йорк, США", + "lastSearchName":"Центральный парк" + }, + "essId":{ + "sourceName":"GAI", + "sourceId":"6056463" + }, + "coordinates":{ + "lat":"40.78072", + "long":"-73.966802" + }, + "hierarchyInfo":{ + "country":{ + "name":"Соединенные Штаты", + "isoCode2":"US", + "isoCode3":"USA" + } + } + }, + { + "@type":"gaiaRegionResult", + "index":"7", + "gaiaId":"6004547", + "type":"NEIGHBORHOOD", + "regionNames":{ + "fullName":"Бруклин-Хайтс, Нью-Йорк, США", + "shortName":"Бруклин-Хайтс", + "displayName":"Бруклин-Хайтс, Нью-Йорк, США", + "primaryDisplayName":"Бруклин-Хайтс", + "secondaryDisplayName":"Нью-Йорк, США", + "lastSearchName":"Бруклин-Хайтс" + }, + "essId":{ + "sourceName":"GAI", + "sourceId":"6004547" + }, + "coordinates":{ + "lat":"40.696762414204954", + "long":"-73.99526676287296" + }, + "hierarchyInfo":{ + "country":{ + "name":"Соединенные Штаты", + "isoCode2":"US", + "isoCode3":"USA" + } + } + }, + { + "@type":"gaiaRegionResult", + "index":"8", + "gaiaId":"800075", + "type":"NEIGHBORHOOD", + "regionNames":{ + "fullName":"Верхний район Уэст-Сайд, Нью-Йорк, Нью-Йорк, США", + "shortName":"Верхний район Уэст-Сайд", + "displayName":"Верхний район Уэст-Сайд, Нью-Йорк, Нью-Йорк, США", + "primaryDisplayName":"Верхний район Уэст-Сайд", + "secondaryDisplayName":"Нью-Йорк, Нью-Йорк, США", + "lastSearchName":"Верхний район Уэст-Сайд" + }, + "essId":{ + "sourceName":"GAI", + "sourceId":"800075" + }, + "coordinates":{ + "lat":"40.78701", + "long":"-73.975365" + }, + "hierarchyInfo":{ + "country":{ + "name":"Соединенные Штаты", + "isoCode2":"US", + "isoCode3":"USA" + } + } + }, + { + "@type":"gaiaRegionResult", + "index":"9", + "gaiaId":"800076", + "type":"NEIGHBORHOOD", + "regionNames":{ + "fullName":"Верхний район Ист-Сайд, Нью-Йорк, Нью-Йорк, США", + "shortName":"Верхний район Ист-Сайд", + "displayName":"Верхний район Ист-Сайд, Нью-Йорк, Нью-Йорк, США", + "primaryDisplayName":"Верхний район Ист-Сайд", + "secondaryDisplayName":"Нью-Йорк, Нью-Йорк, США", + "lastSearchName":"Верхний район Ист-Сайд" + }, + "essId":{ + "sourceName":"GAI", + "sourceId":"800076" + }, + "coordinates":{ + "lat":"40.773563", + "long":"-73.956558" + }, + "hierarchyInfo":{ + "country":{ + "name":"Соединенные Штаты", + "isoCode2":"US", + "isoCode3":"USA" + } + } + } + ] +} \ No newline at end of file