add busses list

This commit is contained in:
Dmitry Afanasyev 2022-08-30 09:47:40 +03:00
parent 207aa1ec54
commit 8280e02aed
3 changed files with 30 additions and 14 deletions

View File

@ -50,6 +50,10 @@ class TransportBot:
driver=driver, driver=driver,
url='https://yandex.ru/maps/213/moscow/stops/stop__9640740/?ll=37.527924%2C55.823470&tab=overview&z=21', url='https://yandex.ru/maps/213/moscow/stops/stop__9640740/?ll=37.527924%2C55.823470&tab=overview&z=21',
message='Остановка Б. Академическая ул, д. 15', message='Остановка Б. Академическая ул, д. 15',
buses=[
'300',
'т19',
],
) )
return await TransportBot.bot.send_message( return await TransportBot.bot.send_message(
@ -66,6 +70,10 @@ class TransportBot:
driver=driver, driver=driver,
url='https://yandex.ru/maps/213/moscow/stops/stop__9640288/?ll=37.505402%2C55.800214&tab=overview&z=21', url='https://yandex.ru/maps/213/moscow/stops/stop__9640288/?ll=37.505402%2C55.800214&tab=overview&z=21',
message='Остановка Улица Алабяна', message='Остановка Улица Алабяна',
buses=[
'300',
'т19',
],
) )
return await TransportBot.bot.send_message( return await TransportBot.bot.send_message(
@ -91,6 +99,10 @@ class TransportBot:
driver=driver, driver=driver,
url='https://yandex.ru/maps/213/moscow/stops/stop__9640740/?ll=37.527924%2C55.823470&tab=overview&z=21', url='https://yandex.ru/maps/213/moscow/stops/stop__9640740/?ll=37.527924%2C55.823470&tab=overview&z=21',
message='Остановка Б. Академическая ул, д. 15', message='Остановка Б. Академическая ул, д. 15',
buses=[
'300',
'т19',
],
) )
await asyncio.gather( await asyncio.gather(
*[ *[

View File

@ -57,7 +57,11 @@ class WebParser:
@staticmethod @staticmethod
def parse_yandex_maps( def parse_yandex_maps(
url: str, message: str, driver: RemoteWebDriver | None = None *,
url: str,
message: str,
buses: list[str],
driver: RemoteWebDriver | None = None,
) -> str: ) -> str:
if not driver: if not driver:
logger.error('Driver is not configured') logger.error('Driver is not configured')
@ -81,26 +85,22 @@ class WebParser:
by='class name', by='class name',
value='masstransit-prognoses-view__title-text', value='masstransit-prognoses-view__title-text',
) )
match bus.text: bus_arrival[bus.text] = (
case "300": bus_arrival_time.text if bus_arrival_time else None
bus_arrival["Автобус 300"] = ( )
bus_arrival_time.text if bus_arrival_time else None
)
case "т19":
bus_arrival["Автобус Т19"] = (
bus_arrival_time.text if bus_arrival_time else None
)
except NoSuchElementException: except NoSuchElementException:
pass pass
except StaleElementReferenceException: except StaleElementReferenceException:
pass pass
if not any(bus_arrival.values()): if not any([bus_arrival.get(bus_name) for bus_name in buses]):
return 'Автобусов 300 или Т19 не найдено. \n\nСмотри на карте :)' return f'Автобусов {", ".join(buses)} не найдено. \n\nСмотри на карте :)'
answer = f'{message}\n\n' answer = f'{message}\n\n'
for bus_name, arrival_time in bus_arrival.items(): for bus_name in buses:
answer += f'{bus_name} - {arrival_time}\n' arrival_time = bus_arrival.get(bus_name)
if arrival_time:
answer += f'Автобус {bus_name} - {arrival_time}\n'
return answer return answer
@staticmethod @staticmethod

View File

@ -69,5 +69,9 @@ async def test_selenoid_parse_yandex() -> None:
driver=driver, driver=driver,
url='https://yandex.ru/maps/213/moscow/stops/stop__9640740/?ll=37.527924%2C55.823470&tab=overview&z=21', url='https://yandex.ru/maps/213/moscow/stops/stop__9640740/?ll=37.527924%2C55.823470&tab=overview&z=21',
message='Остановка Б. Академическая ул, д. 15', message='Остановка Б. Академическая ул, д. 15',
buses=[
'300',
'т19',
],
) )
assert len(text) > 0 assert len(text) > 0