feat(weather): add weather location search
This commit is contained in:
6334
tests/data/gismeteo/10-days.html
Normal file
6334
tests/data/gismeteo/10-days.html
Normal file
File diff suppressed because one or more lines are too long
12
tests/data/gismeteo/__init__.py
Normal file
12
tests/data/gismeteo/__init__.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from pathlib import Path
|
||||
|
||||
from tests.common.mock import MockSource
|
||||
|
||||
GISMETEO_MOCK_SOURCE = MockSource(
|
||||
Path(__file__).parent,
|
||||
{
|
||||
"today": "today.html",
|
||||
"10-days": "10-days.html",
|
||||
"mq/city/q": "mq_city_q.json",
|
||||
},
|
||||
)
|
||||
400
tests/data/gismeteo/mq_city_q.json
Normal file
400
tests/data/gismeteo/mq_city_q.json
Normal file
@@ -0,0 +1,400 @@
|
||||
{
|
||||
"meta": { "status": true },
|
||||
"data": [
|
||||
{
|
||||
"id": 4432,
|
||||
"kind": "M",
|
||||
"slug": "orel",
|
||||
"coordinates": { "latitude": 52.968498, "longitude": 36.0695 },
|
||||
"obsStationId": 11948,
|
||||
"timeZone": 180,
|
||||
"country": { "id": 156, "slug": "russia", "code": "RU" },
|
||||
"district": { "id": 253, "slug": "oryol-oblast" },
|
||||
"subdistrict": { "id": 4728, "slug": "urban-district-city-oryol" },
|
||||
"translations": {
|
||||
"ru": {
|
||||
"city": { "name": "Орел", "nameP": "в Орле" },
|
||||
"country": { "name": "Россия", "nameP": "в России", "nameR": "России" },
|
||||
"district": { "name": "Орловская область", "nameP": "в Орловской области", "nameR": "Орловской области" },
|
||||
"subdistrict": {
|
||||
"name": "городской округ город Орёл",
|
||||
"nameP": "в городском округе города Орёл",
|
||||
"nameR": "городского округа города Орёл"
|
||||
}
|
||||
},
|
||||
"kk": {
|
||||
"city": { "name": "Орел", "nameP": "в Орле" },
|
||||
"country": { "name": "Россия", "nameP": "в России", "nameR": "России" },
|
||||
"district": { "name": "Орловская область", "nameP": "в Орловской области", "nameR": "Орловской области" },
|
||||
"subdistrict": {
|
||||
"name": "городской округ город Орёл",
|
||||
"nameP": "в городском округе города Орёл",
|
||||
"nameR": "городского округа города Орёл"
|
||||
}
|
||||
}
|
||||
},
|
||||
"visitCount": 0,
|
||||
"options": { "altitude": 0, "mrlExists": false, "significantHeightDiff": false, "landSeaMask": 0 },
|
||||
"meta": { "nowcast": true, "allergy": { "birch": true, "grass": true, "ragweed": true } },
|
||||
"redirectUrl": {}
|
||||
},
|
||||
{
|
||||
"id": 13074,
|
||||
"kind": "A",
|
||||
"slug": "orel-yuzhnyy-im-i-s-turgeneva",
|
||||
"coordinates": { "latitude": 52.935001, "longitude": 36.001671 },
|
||||
"obsStationId": 11948,
|
||||
"timeZone": 180,
|
||||
"country": { "id": 156, "slug": "russia", "code": "RU" },
|
||||
"district": { "id": 253, "slug": "oryol-oblast" },
|
||||
"subdistrict": { "id": 4728, "slug": "urban-district-city-oryol" },
|
||||
"translations": {
|
||||
"ru": {
|
||||
"city": { "name": "Орел / Южный им. И. С. Тургенева", "nameP": "Орел / Южный им. И. С. Тургенева" },
|
||||
"country": { "name": "Россия", "nameP": "в России", "nameR": "России" },
|
||||
"district": { "name": "Орловская область", "nameP": "в Орловской области", "nameR": "Орловской области" },
|
||||
"subdistrict": {
|
||||
"name": "городской округ город Орёл",
|
||||
"nameP": "в городском округе города Орёл",
|
||||
"nameR": "городского округа города Орёл"
|
||||
}
|
||||
},
|
||||
"kk": {
|
||||
"city": { "name": "Орел / Южный им. И. С. Тургенева", "nameP": "Орел / Южный им. И. С. Тургенева" },
|
||||
"country": { "name": "Россия", "nameP": "в России", "nameR": "России" },
|
||||
"district": { "name": "Орловская область", "nameP": "в Орловской области", "nameR": "Орловской области" },
|
||||
"subdistrict": {
|
||||
"name": "городской округ город Орёл",
|
||||
"nameP": "в городском округе города Орёл",
|
||||
"nameR": "городского округа города Орёл"
|
||||
}
|
||||
}
|
||||
},
|
||||
"visitCount": 0,
|
||||
"options": { "altitude": 0, "mrlExists": false, "significantHeightDiff": false, "landSeaMask": 0 },
|
||||
"meta": { "nowcast": true, "allergy": { "birch": true, "grass": true, "ragweed": true } },
|
||||
"redirectUrl": {}
|
||||
},
|
||||
{
|
||||
"id": 112316,
|
||||
"kind": "T",
|
||||
"slug": "orel",
|
||||
"coordinates": { "latitude": 52.0172, "longitude": 30.849199 },
|
||||
"obsStationId": 12921,
|
||||
"timeZone": 180,
|
||||
"country": { "id": 19, "slug": "belarus", "code": "BY" },
|
||||
"district": { "id": 346, "slug": "gomel-region" },
|
||||
"subdistrict": { "id": 1828, "slug": "loyev-district" },
|
||||
"translations": {
|
||||
"ru": {
|
||||
"city": { "name": "Орел", "nameP": "в Орле" },
|
||||
"country": { "name": "Беларусь", "nameP": "в Беларуси", "nameR": "Беларуси" },
|
||||
"district": { "name": "Гомельская область", "nameP": "в Гомельской области", "nameR": "Гомельской области" },
|
||||
"subdistrict": { "name": "Лоевский район", "nameP": "в Лоевском районе", "nameR": "Лоевского района" }
|
||||
},
|
||||
"kk": {
|
||||
"city": { "name": "Орел", "nameP": "в Орле" },
|
||||
"country": { "name": "Беларусь", "nameP": "в Беларуси", "nameR": "Беларуси" },
|
||||
"district": { "name": "Гомельская область", "nameP": "в Гомельской области", "nameR": "Гомельской области" },
|
||||
"subdistrict": { "name": "Лоевский район", "nameP": "в Лоевском районе", "nameR": "Лоевского района" }
|
||||
}
|
||||
},
|
||||
"visitCount": 0,
|
||||
"options": { "altitude": 0, "mrlExists": false, "significantHeightDiff": false, "landSeaMask": 0 },
|
||||
"meta": { "nowcast": true, "allergy": { "birch": true, "grass": true, "ragweed": true } },
|
||||
"redirectUrl": {}
|
||||
},
|
||||
{
|
||||
"id": 178290,
|
||||
"kind": "T",
|
||||
"slug": "orel",
|
||||
"coordinates": { "latitude": 58.799999, "longitude": 34.453701 },
|
||||
"obsStationId": 11657,
|
||||
"timeZone": 180,
|
||||
"country": { "id": 156, "slug": "russia", "code": "RU" },
|
||||
"district": { "id": 248, "slug": "novgorod-oblast" },
|
||||
"subdistrict": { "id": 2857, "slug": "municipal-district-khvoyninsky" },
|
||||
"translations": {
|
||||
"ru": {
|
||||
"city": { "name": "Орел", "nameP": "в Орле" },
|
||||
"country": { "name": "Россия", "nameP": "в России", "nameR": "России" },
|
||||
"district": {
|
||||
"name": "Новгородская область",
|
||||
"nameP": "в Новгородской области",
|
||||
"nameR": "Новгородской области"
|
||||
},
|
||||
"subdistrict": {
|
||||
"name": "муниципальный округ Хвойнинский",
|
||||
"nameP": "в муниципальном округе Хвойнинском",
|
||||
"nameR": "муниципального округа Хвойнинского"
|
||||
}
|
||||
},
|
||||
"kk": {
|
||||
"city": { "name": "Орел", "nameP": "в Орле" },
|
||||
"country": { "name": "Россия", "nameP": "в России", "nameR": "России" },
|
||||
"district": {
|
||||
"name": "Новгородская область",
|
||||
"nameP": "в Новгородской области",
|
||||
"nameR": "Новгородской области"
|
||||
},
|
||||
"subdistrict": {
|
||||
"name": "муниципальный округ Хвойнинский",
|
||||
"nameP": "в муниципальном округе Хвойнинском",
|
||||
"nameR": "муниципального округа Хвойнинского"
|
||||
}
|
||||
}
|
||||
},
|
||||
"visitCount": 0,
|
||||
"options": { "altitude": 0, "mrlExists": false, "significantHeightDiff": false, "landSeaMask": 0 },
|
||||
"meta": { "nowcast": true, "allergy": { "birch": true, "grass": true, "ragweed": true } },
|
||||
"redirectUrl": {}
|
||||
},
|
||||
{
|
||||
"id": 112830,
|
||||
"kind": "T",
|
||||
"slug": "orel",
|
||||
"coordinates": { "latitude": 52.182499, "longitude": 30.4349 },
|
||||
"obsStationId": 12920,
|
||||
"timeZone": 180,
|
||||
"country": { "id": 19, "slug": "belarus", "code": "BY" },
|
||||
"district": { "id": 346, "slug": "gomel-region" },
|
||||
"subdistrict": { "id": 1833, "slug": "rechytsa-district" },
|
||||
"translations": {
|
||||
"ru": {
|
||||
"city": { "name": "Орел", "nameP": "в Орле" },
|
||||
"country": { "name": "Беларусь", "nameP": "в Беларуси", "nameR": "Беларуси" },
|
||||
"district": { "name": "Гомельская область", "nameP": "в Гомельской области", "nameR": "Гомельской области" },
|
||||
"subdistrict": { "name": "Речицкий район", "nameP": "в Речицком районе", "nameR": "Речицкого района" }
|
||||
},
|
||||
"kk": {
|
||||
"city": { "name": "Орел", "nameP": "в Орле" },
|
||||
"country": { "name": "Беларусь", "nameP": "в Беларуси", "nameR": "Беларуси" },
|
||||
"district": { "name": "Гомельская область", "nameP": "в Гомельской области", "nameR": "Гомельской области" },
|
||||
"subdistrict": { "name": "Речицкий район", "nameP": "в Речицком районе", "nameR": "Речицкого района" }
|
||||
}
|
||||
},
|
||||
"visitCount": 0,
|
||||
"options": { "altitude": 0, "mrlExists": false, "significantHeightDiff": false, "landSeaMask": 0 },
|
||||
"meta": { "nowcast": true, "allergy": { "birch": true, "grass": true, "ragweed": true } },
|
||||
"redirectUrl": {}
|
||||
},
|
||||
{
|
||||
"id": 97816,
|
||||
"kind": "T",
|
||||
"slug": "orilske",
|
||||
"coordinates": { "latitude": 49.088799, "longitude": 36.228401 },
|
||||
"obsStationId": 13147,
|
||||
"timeZone": 180,
|
||||
"country": { "id": 198, "slug": "ukraine", "code": "UA" },
|
||||
"district": { "id": 335, "slug": "kharkiv-oblast" },
|
||||
"subdistrict": { "id": 1646, "slug": "berestyn-district" },
|
||||
"translations": {
|
||||
"ru": {
|
||||
"city": { "name": "Орельское", "nameP": "в Орельском" },
|
||||
"country": { "name": "Украина", "nameP": "на Украине", "nameR": "Украины" },
|
||||
"district": {
|
||||
"name": "Харьковская область",
|
||||
"nameP": "в Харьковской области",
|
||||
"nameR": "Харьковской области"
|
||||
},
|
||||
"subdistrict": {
|
||||
"name": "Берестинский район",
|
||||
"nameP": "в Берестинском районе",
|
||||
"nameR": "Берестинского района"
|
||||
}
|
||||
},
|
||||
"kk": {
|
||||
"city": { "name": "Орельское", "nameP": "в Орельском" },
|
||||
"country": { "name": "Украина", "nameP": "на Украине", "nameR": "Украины" },
|
||||
"district": {
|
||||
"name": "Харьковская область",
|
||||
"nameP": "в Харьковской области",
|
||||
"nameR": "Харьковской области"
|
||||
},
|
||||
"subdistrict": {
|
||||
"name": "Берестинский район",
|
||||
"nameP": "в Берестинском районе",
|
||||
"nameR": "Берестинского района"
|
||||
}
|
||||
}
|
||||
},
|
||||
"visitCount": 0,
|
||||
"options": { "altitude": 0, "mrlExists": false, "significantHeightDiff": false, "landSeaMask": 0 },
|
||||
"meta": { "nowcast": true, "allergy": { "birch": true, "grass": true, "ragweed": true } },
|
||||
"redirectUrl": {}
|
||||
},
|
||||
{
|
||||
"id": 97619,
|
||||
"kind": "T",
|
||||
"slug": "orilka",
|
||||
"coordinates": { "latitude": 48.980499, "longitude": 36.0075 },
|
||||
"obsStationId": 13147,
|
||||
"timeZone": 180,
|
||||
"country": { "id": 198, "slug": "ukraine", "code": "UA" },
|
||||
"district": { "id": 335, "slug": "kharkiv-oblast" },
|
||||
"subdistrict": { "id": 1649, "slug": "lozivskyi-district" },
|
||||
"translations": {
|
||||
"ru": {
|
||||
"city": { "name": "Орелька", "nameP": "в Орельке" },
|
||||
"country": { "name": "Украина", "nameP": "на Украине", "nameR": "Украины" },
|
||||
"district": {
|
||||
"name": "Харьковская область",
|
||||
"nameP": "в Харьковской области",
|
||||
"nameR": "Харьковской области"
|
||||
},
|
||||
"subdistrict": { "name": "Лозовский район", "nameP": "в Лозовском районе", "nameR": "Лозовского района" }
|
||||
},
|
||||
"kk": {
|
||||
"city": { "name": "Орелька", "nameP": "в Орельке" },
|
||||
"country": { "name": "Украина", "nameP": "на Украине", "nameR": "Украины" },
|
||||
"district": {
|
||||
"name": "Харьковская область",
|
||||
"nameP": "в Харьковской области",
|
||||
"nameR": "Харьковской области"
|
||||
},
|
||||
"subdistrict": { "name": "Лозовский район", "nameP": "в Лозовском районе", "nameR": "Лозовского района" }
|
||||
}
|
||||
},
|
||||
"visitCount": 0,
|
||||
"options": { "altitude": 0, "mrlExists": false, "significantHeightDiff": false, "landSeaMask": 0 },
|
||||
"meta": { "nowcast": true, "allergy": { "birch": true, "grass": true, "ragweed": true } },
|
||||
"redirectUrl": {}
|
||||
},
|
||||
{
|
||||
"id": 78141,
|
||||
"kind": "T",
|
||||
"slug": "orilka",
|
||||
"coordinates": { "latitude": 48.945999, "longitude": 35.689098 },
|
||||
"obsStationId": 13158,
|
||||
"timeZone": 180,
|
||||
"country": { "id": 198, "slug": "ukraine", "code": "UA" },
|
||||
"district": { "id": 319, "slug": "dnipropetrovsk-oblast" },
|
||||
"subdistrict": { "id": 1184, "slug": "samarivskyi-district" },
|
||||
"translations": {
|
||||
"ru": {
|
||||
"city": { "name": "Орелька", "nameP": "в Орельке" },
|
||||
"country": { "name": "Украина", "nameP": "на Украине", "nameR": "Украины" },
|
||||
"district": {
|
||||
"name": "Днепропетровская область",
|
||||
"nameP": "в Днепропетровской области",
|
||||
"nameR": "Днепропетровской области"
|
||||
},
|
||||
"subdistrict": {
|
||||
"name": "Самаровский район",
|
||||
"nameP": "в Самаровском районе",
|
||||
"nameR": "Самаровского района"
|
||||
}
|
||||
},
|
||||
"kk": {
|
||||
"city": { "name": "Орелька", "nameP": "в Орельке" },
|
||||
"country": { "name": "Украина", "nameP": "на Украине", "nameR": "Украины" },
|
||||
"district": {
|
||||
"name": "Днепропетровская область",
|
||||
"nameP": "в Днепропетровской области",
|
||||
"nameR": "Днепропетровской области"
|
||||
},
|
||||
"subdistrict": {
|
||||
"name": "Самаровский район",
|
||||
"nameP": "в Самаровском районе",
|
||||
"nameR": "Самаровского района"
|
||||
}
|
||||
}
|
||||
},
|
||||
"visitCount": 0,
|
||||
"options": { "altitude": 0, "mrlExists": false, "significantHeightDiff": false, "landSeaMask": 0 },
|
||||
"meta": { "nowcast": true, "allergy": { "birch": true, "grass": true, "ragweed": true } },
|
||||
"redirectUrl": {}
|
||||
},
|
||||
{
|
||||
"id": 77735,
|
||||
"kind": "T",
|
||||
"slug": "orilske",
|
||||
"coordinates": { "latitude": 48.587799, "longitude": 34.8111 },
|
||||
"obsStationId": 13158,
|
||||
"timeZone": 180,
|
||||
"country": { "id": 198, "slug": "ukraine", "code": "UA" },
|
||||
"district": { "id": 319, "slug": "dnipropetrovsk-oblast" },
|
||||
"subdistrict": { "id": 1178, "slug": "dniprovskyi-district" },
|
||||
"translations": {
|
||||
"ru": {
|
||||
"city": { "name": "Орельское (Партизанское)", "nameP": "в Орельском (Партизанском)" },
|
||||
"country": { "name": "Украина", "nameP": "на Украине", "nameR": "Украины" },
|
||||
"district": {
|
||||
"name": "Днепропетровская область",
|
||||
"nameP": "в Днепропетровской области",
|
||||
"nameR": "Днепропетровской области"
|
||||
},
|
||||
"subdistrict": {
|
||||
"name": "Днепровский район",
|
||||
"nameP": "в Днепровском районе",
|
||||
"nameR": "Днепровского района"
|
||||
}
|
||||
},
|
||||
"kk": {
|
||||
"city": { "name": "Орельское (Партизанское)", "nameP": "в Орельском (Партизанском)" },
|
||||
"country": { "name": "Украина", "nameP": "на Украине", "nameR": "Украины" },
|
||||
"district": {
|
||||
"name": "Днепропетровская область",
|
||||
"nameP": "в Днепропетровской области",
|
||||
"nameR": "Днепропетровской области"
|
||||
},
|
||||
"subdistrict": {
|
||||
"name": "Днепровский район",
|
||||
"nameP": "в Днепровском районе",
|
||||
"nameR": "Днепровского района"
|
||||
}
|
||||
}
|
||||
},
|
||||
"visitCount": 0,
|
||||
"options": { "altitude": 0, "mrlExists": false, "significantHeightDiff": false, "landSeaMask": 0 },
|
||||
"meta": { "nowcast": true, "allergy": { "birch": true, "grass": true, "ragweed": true } },
|
||||
"redirectUrl": {}
|
||||
},
|
||||
{
|
||||
"id": 171956,
|
||||
"kind": "T",
|
||||
"slug": "orel",
|
||||
"coordinates": { "latitude": 55.516499, "longitude": 44.0658 },
|
||||
"obsStationId": 11899,
|
||||
"timeZone": 180,
|
||||
"country": { "id": 156, "slug": "russia", "code": "RU" },
|
||||
"district": { "id": 266, "slug": "nizhny-novgorod-oblast" },
|
||||
"subdistrict": { "id": 2796, "slug": "municipal-district-vadsky" },
|
||||
"translations": {
|
||||
"ru": {
|
||||
"city": { "name": "Орел", "nameP": "в Орле" },
|
||||
"country": { "name": "Россия", "nameP": "в России", "nameR": "России" },
|
||||
"district": {
|
||||
"name": "Нижегородская область",
|
||||
"nameP": "в Нижегородской области",
|
||||
"nameR": "Нижегородской области"
|
||||
},
|
||||
"subdistrict": {
|
||||
"name": "муниципальный округ Вадский",
|
||||
"nameP": "в муниципальном округе Вадском",
|
||||
"nameR": "муниципального округа Вадского"
|
||||
}
|
||||
},
|
||||
"kk": {
|
||||
"city": { "name": "Орел", "nameP": "в Орле" },
|
||||
"country": { "name": "Россия", "nameP": "в России", "nameR": "России" },
|
||||
"district": {
|
||||
"name": "Нижегородская область",
|
||||
"nameP": "в Нижегородской области",
|
||||
"nameR": "Нижегородской области"
|
||||
},
|
||||
"subdistrict": {
|
||||
"name": "муниципальный округ Вадский",
|
||||
"nameP": "в муниципальном округе Вадском",
|
||||
"nameR": "муниципального округа Вадского"
|
||||
}
|
||||
}
|
||||
},
|
||||
"visitCount": 0,
|
||||
"options": { "altitude": 0, "mrlExists": false, "significantHeightDiff": false, "landSeaMask": 0 },
|
||||
"meta": { "nowcast": true, "allergy": { "birch": true, "grass": true, "ragweed": true } },
|
||||
"redirectUrl": {}
|
||||
}
|
||||
],
|
||||
"error": null
|
||||
}
|
||||
6114
tests/data/gismeteo/today.html
Normal file
6114
tests/data/gismeteo/today.html
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user