add hash to driver

This commit is contained in:
Dmitry Afanasyev 2022-08-26 20:52:40 +03:00
parent d15cc2d2c7
commit 4d6dbf60d8
3 changed files with 17 additions and 6 deletions

View File

@ -4,7 +4,8 @@ from aiogram import Bot, types
from aiogram.contrib.middlewares.logging import LoggingMiddleware from aiogram.contrib.middlewares.logging import LoggingMiddleware
from aiogram.dispatcher import Dispatcher from aiogram.dispatcher import Dispatcher
from aiogram.utils.callback_data import CallbackData 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 from app.settings import TELEGRAM_API_TOKEN
bot = Bot(token=TELEGRAM_API_TOKEN) bot = Bot(token=TELEGRAM_API_TOKEN)
@ -36,8 +37,7 @@ def get_keyboard() -> types.InlineKeyboardMarkup:
async def home_office( async def home_office(
query: types.CallbackQuery, callback_data: dict[str, str] query: types.CallbackQuery, callback_data: dict[str, str]
) -> types.Message: ) -> types.Message:
driver = get_driver() driver = get_driver(ttl_hash=get_ttl_hash(seconds=10))
text = parse_site( text = parse_site(
driver=driver, driver=driver,
url='https://yandex.ru/maps/213/moscow/stops/stop__9640740/' url='https://yandex.ru/maps/213/moscow/stops/stop__9640740/'
@ -54,7 +54,7 @@ async def home_office(
async def office_home( async def office_home(
query: types.CallbackQuery, callback_data: dict[str, str] query: types.CallbackQuery, callback_data: dict[str, str]
) -> types.Message: ) -> types.Message:
driver = get_driver() driver = get_driver(ttl_hash=get_ttl_hash())
text = parse_site( text = parse_site(
driver=driver, driver=driver,
url='https://yandex.ru/maps/213/moscow/stops/stop__9640288/?' url='https://yandex.ru/maps/213/moscow/stops/stop__9640288/?'
@ -69,6 +69,8 @@ async def office_home(
@dispatcher.message_handler(commands=['chatid']) @dispatcher.message_handler(commands=['chatid'])
async def chat_id(message: types.Message) -> types.Message: 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) 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: async def morning_bus_mailing(chat_ids: list[int]) -> None:
driver = get_driver() driver = get_driver(ttl_hash=get_ttl_hash())
text = parse_site( text = parse_site(
driver=driver, driver=driver,
url='https://yandex.ru/maps/213/moscow/stops/stop__9640740/' url='https://yandex.ru/maps/213/moscow/stops/stop__9640740/'

View File

@ -1,6 +1,7 @@
import os import os
import tarfile import tarfile
import time import time
from functools import lru_cache
from pathlib import Path from pathlib import Path
import wget import wget
@ -89,7 +90,13 @@ def parse_site(url: str, message: str, driver: RemoteWebDriver | None = None) ->
return answer 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 = options.Options()
opt.headless = True opt.headless = True
driver = RemoteWebDriver( driver = RemoteWebDriver(

View File

@ -44,6 +44,8 @@ services:
args: args:
USER: web USER: web
restart: unless-stopped restart: unless-stopped
volumes:
- /etc/localtime:/etc/localtime:ro
networks: networks:
transport_bot_network: transport_bot_network:
ipv4_address: 200.20.0.11 ipv4_address: 200.20.0.11