diff --git a/app/core/bot.py b/app/core/bot.py index 2ad6703..31aea14 100644 --- a/app/core/bot.py +++ b/app/core/bot.py @@ -5,9 +5,8 @@ from aiogram.contrib.middlewares.logging import LoggingMiddleware from aiogram.dispatcher import Dispatcher from aiogram.dispatcher.webhook import SendMessage from aiogram.utils.callback_data import CallbackData - -from core.parse_web import parse_site, configure_firefox_driver, download_gecko_driver -from settings import API_TOKEN +from app.core.parse_web import configure_firefox_driver, download_gecko_driver, parse_site +from app.settings import API_TOKEN bot = Bot(token=API_TOKEN) dispatcher = Dispatcher(bot) diff --git a/app/core/logger.py b/app/core/logger.py index 77bb6ce..0e741d2 100644 --- a/app/core/logger.py +++ b/app/core/logger.py @@ -1,4 +1,5 @@ import sys + from loguru import logger logger.remove() diff --git a/app/core/parse_web.py b/app/core/parse_web.py index bd6a12f..93e5b5a 100644 --- a/app/core/parse_web.py +++ b/app/core/parse_web.py @@ -4,14 +4,13 @@ import time from pathlib import Path import wget +from app.core.logger import logger from selenium import webdriver from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.firefox import options from selenium.webdriver.firefox.service import Service from selenium.webdriver.firefox.webdriver import WebDriver - -from core.logger import logger -from settings import BASE_DIR, GECKO_DRIVER_VERSION +from app.settings import BASE_DIR, GECKO_DRIVER_VERSION def download_gecko_driver(): @@ -20,13 +19,13 @@ def download_gecko_driver(): f'geckodriver-v{GECKO_DRIVER_VERSION}-linux64.tar.gz' ) - if not Path(f'{BASE_DIR}/geckodriver').exists(): + if not Path(BASE_DIR / 'geckodriver').exists(): logger.info(f'Downloading gecodriver v {GECKO_DRIVER_VERSION}...') - geckodriver_file = wget.download(url=gecko_driver, out=BASE_DIR) + geckodriver_file = wget.download(url=gecko_driver, out=BASE_DIR.resolve().as_posix()) with tarfile.open(geckodriver_file) as tar: tar.extractall(BASE_DIR) - os.remove(f'{BASE_DIR}/geckodriver-v{GECKO_DRIVER_VERSION}-linux64.tar.gz') + os.remove(f'{BASE_DIR / "geckodriver"}-v{GECKO_DRIVER_VERSION}-linux64.tar.gz') logger.info(f'\ngeckodriver has been downloaded to folder {BASE_DIR}') @@ -37,7 +36,7 @@ def configure_firefox_driver(private_window: bool = False) -> WebDriver: opt.add_argument(f'{Path.home()}/snap/firefox/common/.mozilla/firefox') if private_window: opt.set_preference("browser.privatebrowsing.autostart", True) - service = Service(executable_path=f'{BASE_DIR}/geckodriver') + service = Service(executable_path=BASE_DIR / 'geckodriver') firefox_driver = webdriver.Firefox(service=service, options=opt) return firefox_driver @@ -80,3 +79,5 @@ def parse_site(driver: WebDriver, url: str, message: str) -> str: if bus_t19: answer += f'Автобус {bus_t19.text} - {bus_t19_arrival.text}' return answer + +download_gecko_driver() \ No newline at end of file diff --git a/app/core/scheduler.py b/app/core/scheduler.py index c53deb6..de5ccd2 100644 --- a/app/core/scheduler.py +++ b/app/core/scheduler.py @@ -1,4 +1,4 @@ -from core.bot import morning_bus_mailing +from app.core.bot import morning_bus_mailing cron_jobs = [ {'trigger': 'cron', 'day_of_week': 'mon-fri', 'hour': 8, 'minute': 59, 'second': 0}, diff --git a/app/main.py b/app/main.py index c771b25..f03b9f7 100644 --- a/app/main.py +++ b/app/main.py @@ -1,17 +1,16 @@ from aiogram.utils.executor import start_webhook - from core.bot import bot, dispatcher from core.logger import logger from core.scheduler import asyncio_schedule -from settings import WEBHOOK_URL, WEBHOOK_PATH, WEBAPP_HOST, WEBAPP_PORT +from settings import WEBAPP_HOST, WEBAPP_PORT, WEBHOOK_PATH, WEBHOOK_URL -async def on_startup(dispatcher) -> None: +async def on_startup() -> None: await bot.set_webhook(WEBHOOK_URL) asyncio_schedule() -async def on_shutdown(dispatcher): +async def on_shutdown() -> None: logger.warning('Shutting down..') # Remove webhook (not acceptable in some cases) diff --git a/app/settings.py b/app/settings.py index 8af3ca7..6aac19c 100644 --- a/app/settings.py +++ b/app/settings.py @@ -14,7 +14,6 @@ config = AutoConfig(search_path=env_path) GECKO_DRIVER_VERSION = config('GECKO_DRIVER_VERSION') -BASE_DIR = Path(__file__).parent.resolve().as_posix() API_TOKEN = config('API_TOKEN') diff --git a/scripts/start-bot.sh b/scripts/start-bot.sh index e2df6cb..7c0c91f 100644 --- a/scripts/start-bot.sh +++ b/scripts/start-bot.sh @@ -2,6 +2,5 @@ echo "starting the bot" -cd /opt/mosgortrans/app \ -&& source /home/balsh/.cache/pypoetry/virtualenvs/mosgortrans-3eZxMcY3-py3.10/bin/activate \ -&& python main.py \ No newline at end of file +cd /opt/mosgortrans \ +&& poetry run python app/main.py \ No newline at end of file