LoggingMiddleware
удален из библиотеки.import logging
import requests
from aiogram import Bot, Dispatcher, types
from aiogram.utils import executor
API_TOKEN =
# Настройка логгирования
logging.basicConfig(level=logging.INFO)
# Инициализация бота и диспетчера
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
# Обработка команды /recipe
@dp.message_handler(commands=['recipe'])
async def send_recipe_link(message: types.Message):
recipe_name = message.get_args()
if not recipe_name:
await message.answer("Пожалуйста, укажите название рецепта после /recipe. Например: /recipe пицца")
return
response = requests.get(f'https://api.edamam.com/search?q={recipe_name}&app_id=API_TOKEN&app_key=API_TOKEN')
if response.status_code == 200:
data = response.json()
if data.get('hits'):
recipe_url = data['hits'][0]['recipe']['url']
await message.answer(f"Вот ссылка на рецепт '{recipe_name}': {recipe_url}")
else:
await message.answer("Извините, не удалось найти рецепт. Попробуйте другой запрос.")
else:
await message.answer("Произошла ошибка при запросе. Пожалуйста, попробуйте позже.")
# Запуск бота
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
from flask import request
request.headers.get('User-Agent').split()[-1].split('/')[0]
from ua_parser import user_agent_parser
from werkzeug.user_agent import UserAgent
from werkzeug.utils import cached_property
class ParsedUserAgent(UserAgent):
@cached_property
def _details(self):
return user_agent_parser.Parse(self.string)
@property
def platform(self):
return self._details['os']['family']
@property
def browser(self):
return self._details['user_agent']['family']
@property
def version(self):
return '.'.join(
part
for key in ('major', 'minor', 'patch')
if (part := self._details['user_agent'][key]) is not None
)
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.properties import ObjectProperty, StringProperty
from kivy.lang.builder import Builder
Builder.load_file("Poput_ex.kv")
TXT = """Мы весёлые ребята,
наше имя — октябрята.
Мы не любим лишних слов.
— Будь готов! — Всегда готов.
Друг за другом станем рядом
и одним большим отрядом
скажем сотней голосов:
— Будь готов! — Всегда готов."""
class Controller(FloatLayout):
def __init__(self, **kwargs):
super(Controller, self).__init__(**kwargs)
class ControllerApp(App):
def build(self):
self.txt = 'some text'
return Controller()
if __name__ == '__main__':
ControllerApp().run()
#: import Factory kivy.factory.Factory
MyPopup@Popup:
auto_dismiss: False
title: "Мой Попуп"
BoxLayout:
orientation: 'vertical'
padding: 20
Button:
text: 'My status is: ' + self.state
#on_press:
Label:
id: my_custom_label
text: app.text
Button:
text: 'Close me!'
on_press: root.dismiss()