From 55d866eee4990a56413b046d23e33c5fcc08bf7f Mon Sep 17 00:00:00 2001 From: valoka Date: Fri, 20 Sep 2024 22:36:16 +0900 Subject: [PATCH] added week function --- main.py | 57 +++++++++++++++++++++++++++++++----------------- requierments.txt | 4 ++++ 2 files changed, 41 insertions(+), 20 deletions(-) create mode 100644 requierments.txt diff --git a/main.py b/main.py index 53435cb..7c183fa 100644 --- a/main.py +++ b/main.py @@ -5,6 +5,7 @@ from selenium.webdriver.common.by import By import time from bs4 import BeautifulSoup import lxml +import threading import discord from discord.ext import commands @@ -27,42 +28,58 @@ url = "https://amursu.ru/obrazovanie/timetable/timetable-group/?id_group=1891" # 3. приводим в читаемый вид | fail # 4. отправляем в дс | ок -def get_day_info(day : int, url : str) -> list: - '''Get's day of th week number - posible numbers: 3-9 (included)''' +def get_element_from_driver(url, instruction : list) -> list: driver = webdriver.Firefox() + driver.implicitly_wait(10) driver.get(url) assert "Расписание" in driver.title elem = [] - arr = '' - elem.append(driver.find_element(By.XPATH, f'/html/body/main/div[2]/div/div/div[3]/div[4]/div[{day}]').get_attribute('innerHTML')) + for i in instruction: + elem.append(driver.find_element(By.XPATH, i).get_attribute('innerHTML')) driver.close() - text = str(elem) + return elem - soup = BeautifulSoup(str(text), 'lxml') +def get_day_info(html : str) -> list: + '''Get's day of th week number + posible numbers: 3-9 (included)''' + + soup = BeautifulSoup(html, 'lxml') soupa = soup.findAll("a", attrs = {'class':'ui link blue speak'}) soup = BeautifulSoup(str(soupa)).find_all('a') - for data in soup: - arr += data.get('data-speech') + '\n' - - print(arr) - return arr + soupa = '' + + for data in soup: + soupa += data.get('data-speech') + '\n' + + return soupa -def get_week_info(): - week_info = [] - for i in range(3, 10): - week_info.append(get_day_info()) - return week_info @prikols.command() async def day(ctx, arg): - await ctx.send(get_day_info(arg, url=url)) + try: + await ctx.send(get_day_info(arg, url=url)) + except BaseException as err: + await ctx.send(err) @prikols.command() -async def week(ctx, arg): - await ctx.send(get_day_info(arg, url=url)) +async def week(ctx): + try: + arr = [] + for day in range(3,9): + arr.append(f'/html/body/main/div[2]/div/div/div[3]/div[4]/div[{day}]') + + html = get_element_from_driver(url=url, instruction=arr) + + for i in html: + await ctx.send(get_day_info(i)) + except BaseException as err: + await ctx.send(err) + +# @prikols.command() +# async def week(ctx, arg): +# await ctx.send(get_day_info(arg, url=url)) @prikols.event async def on_ready(): diff --git a/requierments.txt b/requierments.txt new file mode 100644 index 0000000..6c826a4 --- /dev/null +++ b/requierments.txt @@ -0,0 +1,4 @@ +selenium +bs4 +lxml +discord.py