from misskaty.core.message_utils import * from misskaty.vars import COMMAND_HANDLER from pyrogram import filters import cloudscraper, logging from misskaty import app from bs4 import BeautifulSoup from pykeyboard import InlineButton, InlineKeyboard from misskaty.helper import http from misskaty.core.decorator.ratelimiter import ratelimiter LOGGER = logging.getLogger(__name__) @app.on_message(filters.command(["subscene"], COMMAND_HANDLER)) @ratelimiter async def imdb_search_id(client, message): BTN = [] if len(message.command) == 1: return await kirimPesan(message, f"â„šī¸ Please add query after CMD!\nEx: /{message.command[0]} Jurassic World") if message.sender_chat: return await kirimPesan(message, "This feature not supported for channel..") kueri = message.text.split(None, 1)[1] k = await kirimPesan( message, f"🔎 Searching {kueri} Subscene database...", quote=True, ) msg = "" buttons = InlineKeyboard(row_width=4) scraper = cloudscraper.create_scraper() try: param = {"query": kueri} r = scraper.post("https://subscene.com/subtitles/searchbytitle", data=param).text soup = BeautifulSoup(r,"lxml") lists = soup.find("div", {"class": "search-result"}) a = lists.find_all("div", {"class":"title"}) LOGGER.info(a) # if not res: # return await k.edit_caption(f"â›”ī¸ No Result Found For: {kueri}") msg += f"đŸŽŦ Found ({len(a)}) result for : {kueri}\n\n" for num, sub in enumerate(a, start=1): title = sub.find('a').text url = f"https://subscene.com{sub.find('a').get('href')}" msg += f"{num}. {title}\n" BTN.append( InlineButton( text=num, callback_data=f"subscene#{message.from_user.id}#hehehe", ) ) BTN.extend( ( InlineButton( text="❌ Close", callback_data=f"close#{message.from_user.id}", ), ) ) buttons.add(*BTN) await editPesan(k, msg, reply_markup=buttons) except Exception as err: await editPesan(k, f"Ooppss, failed get subtitle list from subscene.\n\nERROR: {err}")