Files
2025-03-15 10:10:55 +05:00

57 lines
2.2 KiB
Python

import asyncio
import aiohttp
from bs4 import BeautifulSoup
import random
import logging
URL = 'https://nekdo.ru/random/'
HEADERS = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"
}
JOKES_list = [
'''— Доктор, у меня проблема: я всё время забываю, что хотел сказать.
— Сколько это уже продолжается?
— Что «это»?''',
'''— Почему вы опоздали на работу?
— Проспал.
— И что, до 16:00 спали?
— Нет, до 15:55.''',
'''— Папа, а кто такой пессимист?
— Это человек, который, когда ему дают выбор между двумя злами, выбирает оба.''',
]
def findInSoup(soup: BeautifulSoup):
element = soup.find('div', id=True, class_=True)
return element
async def getAnecdote() -> str:
logging.info("Запрашиваю анекдот с сайта.")
async with aiohttp.ClientSession(headers=HEADERS) as session:
try:
async with session.get(URL) as response:
if response.status == 200:
logging.info("Успешно получен ответ от сервера.")
html = await response.text()
soup = BeautifulSoup(html, 'html.parser')
element = findInSoup(soup)
if element:
logging.info("Анекдот успешно найден на странице.")
return element.text.strip()
logging.warning(f"Получен неудачный статус ответа: {response.status}. Использую локальный анекдот.")
return random.choice(JOKES_list)
except Exception as e:
logging.error(f"Ошибка при запросе: {e}. Использую локальный анекдот.")
return random.choice(JOKES_list)
if __name__ == "__main__":
async def main():
text = await getAnecdote()
print(text)
asyncio.run(main())