51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
from aiogram.types import (
|
|
InlineQueryResultDocument,
|
|
InlineQueryResultCachedAudio,
|
|
InlineKeyboardMarkup,
|
|
InlineKeyboardButton,
|
|
)
|
|
|
|
from bot.modules.database.db import DBDict
|
|
from bot.modules.settings import UserSettings
|
|
|
|
from bot.modules.common.song import BaseSongItem
|
|
from typing import TypeVar
|
|
|
|
|
|
BaseSongT = TypeVar("BaseSongT", bound=BaseSongItem)
|
|
|
|
|
|
async def get_common_search_result(
|
|
audio: BaseSongT, db_table: DBDict, service_id: str, settings: UserSettings
|
|
) -> InlineQueryResultDocument | InlineQueryResultCachedAudio:
|
|
return (
|
|
InlineQueryResultDocument(
|
|
id=f"{service_id}::" + audio.id,
|
|
title=audio.name,
|
|
description=audio.all_artists,
|
|
thumb_url=audio.thumbnail,
|
|
document_url=(
|
|
(audio.preview_url or audio.thumbnail)
|
|
if settings["search_preview"].value == "preview"
|
|
else audio.thumbnail
|
|
),
|
|
mime_type="application/zip",
|
|
reply_markup=InlineKeyboardMarkup(
|
|
inline_keyboard=[
|
|
[InlineKeyboardButton(text="Downloading...", callback_data=".")]
|
|
]
|
|
),
|
|
caption=audio.full_name,
|
|
)
|
|
if audio.id not in list(db_table.keys())
|
|
else InlineQueryResultCachedAudio(
|
|
id=f"{service_id}c::" + audio.id,
|
|
audio_file_id=db_table[audio.id],
|
|
reply_markup=InlineKeyboardMarkup(
|
|
inline_keyboard=[
|
|
[InlineKeyboardButton(text="Verifying...", callback_data=".")]
|
|
]
|
|
),
|
|
)
|
|
)
|