| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- from typing import Any
- import operator
- from aiogram.dispatcher.filters.state import StatesGroup, State
- from aiogram.types import Message, CallbackQuery
- from aiogram_dialog import Window, Dialog, DialogManager, StartMode
- from aiogram_dialog.widgets.kbd import Radio
- from aiogram_dialog.widgets.text import Format
- from aiogram.types import ParseMode
- from summarize import get_paper_desc, get_key_moments, get_summary
- class MySG(StatesGroup):
- main = State()
- buttons = [
- ("Abstract", '1'),
- ("Summary", '2'),
- ("Key Moments", '3'),
- ]
- async def get_data(dialog_manager: DialogManager, **kwargs):
- data = dialog_manager.current_context()
- item_id = data.widget_data.get('radio_buttons') #type: ignore
- p = {"text": "OOOPS!"}
- title = data.start_data["title"] #type: ignore
- url = data.start_data["url"] #type: ignore
-
- if data.dialog_data.get('abs'): #type: ignore
- abst = data.dialog_data.get('abs') #type: ignore
- else:
- data.dialog_data["abs"] = data.start_data["reply_message"] #type: ignore
- abst = data.dialog_data.get('abs') #type: ignore
- if item_id == "2":
- if data.dialog_data.get("summary"):
- summ = data.dialog_data["summary"]
- p = {"text": f"{url}\n\n***{title}***\n\n{summ}"}
- elif item_id == "3":
- if data.dialog_data.get("key_moments"):
- keys = data.dialog_data.get("key_moments")
- p = {"text": f"{url}\n\n***{title}***\n\n{keys}"}
- else:
- p = {"text": abst}
- return p
- async def on_button_selected(c: CallbackQuery, widget: Any, manager: DialogManager, item_id: str):
- data = manager.current_context()
- if item_id == "2":
- if data.dialog_data.get('summary'):
- pass
- else:
- await c.answer("Getting Summary, please wait")
- summary = await get_summary(url = data.start_data["url"])
- data.dialog_data["summary"] = summary
- elif item_id == "3":
- if data.dialog_data.get("key_moments"):
- pass
- else:
- await c.answer("Getting Key Moments, please wait")
- key_moments = await get_key_moments(url=data.start_data["url"])
- data.dialog_data["key_moments"] = key_moments
- else:
- pass
-
- return {"text": item_id}
- buttons_kbd = Radio(
- Format("✓ {item[0]}"),
- Format("{item[0]}"),
- id="radio_buttons",
- item_id_getter=operator.itemgetter(1),
- items=buttons,
- on_click=on_button_selected,
- )
- dialog = Dialog(
- Window(
- Format("{text}"),
- buttons_kbd,
- state=MySG.main,
- getter=get_data,
- parse_mode=ParseMode.MARKDOWN,
- # preview_data={"button": "1"}
- )
- )
|