| | from pyrogram.types import ( |
| | InlineKeyboardButton, |
| | InlineKeyboardMarkup, |
| | InlineQueryResultPhoto, |
| | ) |
| | from youtubesearchpython.__future__ import VideosSearch |
| |
|
| | from Devine import app |
| | from Devine.utils.inlinequery import answer |
| | from config import BANNED_USERS |
| |
|
| |
|
| | @app.on_inline_query(~BANNED_USERS) |
| | async def inline_query_handler(client, query): |
| | text = query.query.strip().lower() |
| | answers = [] |
| | if text.strip() == "": |
| | try: |
| | await client.answer_inline_query(query.id, results=answer, cache_time=10) |
| | except: |
| | return |
| | else: |
| | a = VideosSearch(text, limit=20) |
| | result = (await a.next()).get("result") |
| | for x in range(15): |
| | title = (result[x]["title"]).title() |
| | duration = result[x]["duration"] |
| | views = result[x]["viewCount"]["short"] |
| | thumbnail = result[x]["thumbnails"][0]["url"].split("?")[0] |
| | channellink = result[x]["channel"]["link"] |
| | channel = result[x]["channel"]["name"] |
| | link = result[x]["link"] |
| | published = result[x]["publishedTime"] |
| | description = f"{views} | {duration} ᴍɪɴᴜᴛᴇs | {channel} | {published}" |
| | buttons = InlineKeyboardMarkup( |
| | [ |
| | [ |
| | InlineKeyboardButton( |
| | text="ʏᴏᴜᴛᴜʙᴇ", |
| | url=link, |
| | ) |
| | ], |
| | ] |
| | ) |
| | searched_text = f""" |
| | <b>‣ ᴛɪᴛʟᴇ :</b> <a href={link}>{title}</a> |
| | |
| | <b>ᴅᴜʀᴀᴛɪᴏɴ :</b> {duration} ᴍɪɴᴜᴛᴇs |
| | <b>ᴠɪᴇᴡs :</b> <code>{views}</code> |
| | <b>ᴄʜᴀɴɴᴇʟ :</b> <a href={channellink}>{channel}</a> |
| | <b>ᴘᴜʙʟɪsʜᴇᴅ ᴏɴ :</b> {published} |
| | |
| | |
| | <u><b>‣ ɪɴʟɪɴᴇ sᴇᴀʀᴄʜ ᴍᴏᴅᴇ ʙʏ {app.name}</b></u>""" |
| | answers.append( |
| | InlineQueryResultPhoto( |
| | photo_url=thumbnail, |
| | title=title, |
| | thumb_url=thumbnail, |
| | description=description, |
| | caption=searched_text, |
| | reply_markup=buttons, |
| | ) |
| | ) |
| | try: |
| | return await client.answer_inline_query(query.id, results=answers) |
| | except: |
| | return |
| |
|