diff --git a/app/core/bot.py b/app/core/bot.py index 9541978..fa789f8 100644 --- a/app/core/bot.py +++ b/app/core/bot.py @@ -4,7 +4,8 @@ from aiogram import Bot, types from aiogram.contrib.middlewares.logging import LoggingMiddleware from aiogram.dispatcher import Dispatcher from aiogram.utils.callback_data import CallbackData -from app.core.parse_web import get_driver, parse_site +from app.core.logger import logger +from app.core.parse_web import get_driver, get_ttl_hash, parse_site from app.settings import TELEGRAM_API_TOKEN bot = Bot(token=TELEGRAM_API_TOKEN) @@ -36,8 +37,7 @@ def get_keyboard() -> types.InlineKeyboardMarkup: async def home_office( query: types.CallbackQuery, callback_data: dict[str, str] ) -> types.Message: - driver = get_driver() - + driver = get_driver(ttl_hash=get_ttl_hash(seconds=10)) text = parse_site( driver=driver, url='https://yandex.ru/maps/213/moscow/stops/stop__9640740/' @@ -54,7 +54,7 @@ async def home_office( async def office_home( query: types.CallbackQuery, callback_data: dict[str, str] ) -> types.Message: - driver = get_driver() + driver = get_driver(ttl_hash=get_ttl_hash()) text = parse_site( driver=driver, url='https://yandex.ru/maps/213/moscow/stops/stop__9640288/?' @@ -69,6 +69,8 @@ async def office_home( @dispatcher.message_handler(commands=['chatid']) async def chat_id(message: types.Message) -> types.Message: + driver = get_driver(ttl_hash=get_ttl_hash()) + logger.info(driver.session_id) return await bot.send_message(message.chat.id, message.chat.id) @@ -80,7 +82,7 @@ async def echo(message: types.Message) -> types.Message: async def morning_bus_mailing(chat_ids: list[int]) -> None: - driver = get_driver() + driver = get_driver(ttl_hash=get_ttl_hash()) text = parse_site( driver=driver, url='https://yandex.ru/maps/213/moscow/stops/stop__9640740/' diff --git a/app/core/parse_web.py b/app/core/parse_web.py index 19f339b..9802d21 100644 --- a/app/core/parse_web.py +++ b/app/core/parse_web.py @@ -1,6 +1,7 @@ import os import tarfile import time +from functools import lru_cache from pathlib import Path import wget @@ -89,7 +90,13 @@ def parse_site(url: str, message: str, driver: RemoteWebDriver | None = None) -> return answer -def get_driver() -> RemoteWebDriver: +def get_ttl_hash(seconds: int = 28) -> int: + """Return the same value withing `seconds` time period""" + return round(time.time() / seconds) + + +@lru_cache +def get_driver(ttl_hash: int | None = None) -> RemoteWebDriver: opt = options.Options() opt.headless = True driver = RemoteWebDriver( diff --git a/docker-compose.yml b/docker-compose.yml index 1fba740..1d009ee 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -44,6 +44,8 @@ services: args: USER: web restart: unless-stopped + volumes: + - /etc/localtime:/etc/localtime:ro networks: transport_bot_network: ipv4_address: 200.20.0.11