diff --git a/misskaty/plugins/tes_pagination.py b/misskaty/plugins/tes_pagination.py deleted file mode 100644 index ad56ca35..00000000 --- a/misskaty/plugins/tes_pagination.py +++ /dev/null @@ -1,112 +0,0 @@ -import asyncio -import logging -from pykeyboard import InlineKeyboard, InlineButton -from pyrogram import filters -from misskaty.helper.http import http -from misskaty.helper.tools import get_random_string -from misskaty import app -from misskaty.vars import COMMAND_HANDLER -from misskaty.core.message_utils import * - -LOGGER = logging.getLogger(__name__) -LK_DICT = {} - -def split_arr(arr, size): - arrs = [] - while len(arr) > size: - pice = arr[:size] - arrs.append(pice) - arr = arr[size:] - arrs.append(arr) - return arrs - -async def getDatalk21(chat_id, message_id, kueri, CurrentPage): - if not LK_DICT.get(message_id): - if not kueri: - lk21json = (await http.get('https://yasirapi.eu.org/lk21')).json() - kueri = "Latest Post" - else: - lk21json = (await http.get(f'https://yasirapi.eu.org/lk21?q={kueri}')).json() - if not lk21json.get("result"): - return await app.send_message( - chat_id=chat_id, - reply_to_message_id=message_id, - text=( - f"Kueri: {kueri}\n" - "Results: Sorry could not find any matching results!" - ) - ) - LK_DICT[message_id] = [split_arr(lk21json["result"], 6), kueri] - try: - index = int(CurrentPage - 1) - PageLen = len(LK_DICT[message_id][0]) - - msgs = "" - for c, i in enumerate(LK_DICT[message_id][0][index], start=1): - msgs += f"{c}. {i['judul']}\nCategory: {i['kategori']}\n" - - lkResult = ( - f"**Hasil pencarian dg {kueri}**\n" - f"{msgs}\n\n" - ) - - IGNORE_CHAR = "[]" - lkResult = ''.join(i for i in lkResult if not i in IGNORE_CHAR) - - return ( - lkResult, - PageLen - ) - - except ( - IndexError - or KeyError - ): - await app.send_message( - chat_id=chat_id, - reply_to_message_id=message_id, - text=( - f"Kueri: {kueri}\n" - "Results: Sorry could not find any matching results!" - ) - ) - -@app.on_message(filters.command(['lktes'], COMMAND_HANDLER)) -async def lk21tes(client, message): - chat_id = message.chat.id - kueri = ' '.join(message.command[1:]) - if not kueri: - kueri = None - pesan = await message.reply("Getting data from LK21..") - CurrentPage = 1 - lkres, PageLen = await getDatalk21(chat_id, pesan.id, kueri, CurrentPage) - keyboard = InlineKeyboard() - keyboard.paginate(PageLen, CurrentPage, 'page_lk21#{number}' + f'#{pesan.id}#{message.from_user.id}') - keyboard.row( - InlineButton("āŒ Close", f"close#{message.from_user.id}") - ) - await editPesan(pesan, lkres, reply_markup=keyboard) - -@app.on_callback_query(filters.create(lambda _, __, query: 'page_lk21#' in query.data)) -async def lk21page_callback(client, callback_query): - if callback_query.from_user.id != int(callback_query.data.split('#')[3]): - return await callback_query.answer("Not yours..", True) - message_id = int(callback_query.data.split('#')[2]) - chat_id = callback_query.message.chat.id - CurrentPage = int(callback_query.data.split('#')[1]) - try: - kueri = LK_DICT[message_id][1] - except KeyError: - return await callback_query.answer("Invalid callback data, please send CMD again..") - - try: - lkres, PageLen = await getDatalk21(chat_id, message_id, kueri, CurrentPage) - except TypeError: - return - - keyboard = InlineKeyboard() - keyboard.paginate(PageLen, CurrentPage, 'page_lk21#{number}' + f'#{message_id}#{callback_query.from_user.id}') - keyboard.row( - InlineButton("āŒ Close", f"close#{callback_query.from_user.id}") - ) - await editPesan(callback_query.message, lkres, reply_markup=keyboard) \ No newline at end of file diff --git a/misskaty/plugins/web_scraper.py b/misskaty/plugins/web_scraper.py new file mode 100644 index 00000000..4b76eea9 --- /dev/null +++ b/misskaty/plugins/web_scraper.py @@ -0,0 +1,173 @@ +""" + * @author yasir + * @date 2022-12-01 09:12:27 + * @lastModified 2023-01-11 12:23:31 + * @projectName MissKatyPyro + * Copyright @YasirPedia All rights reserved +""" +import re +import logging +from pykeyboard import InlineKeyboard, InlineButton +from pyrogram import filters +from misskaty.helper.http import http +from misskaty import app +from misskaty.vars import COMMAND_HANDLER +from misskaty.core.message_utils import * + +LOGGER = logging.getLogger(__name__) +LKTERBIT_DICT = {} + +def split_arr(arr, size): + arrs = [] + while len(arr) > size: + pice = arr[:size] + arrs.append(pice) + arr = arr[size:] + arrs.append(arr) + return arrs + +# Terbit21 GetData +async def getDataTerbit21(chat_id, message_id, kueri, CurrentPage): + if not LKTERBIT_DICT.get(message_id): + if not kueri: + terbitjson = (await http.get('https://yasirapi.eu.org/terbit21')).json() + else: + terbitjson = (await http.get(f'https://yasirapi.eu.org/terbit21?q={kueri}')).json() + if not terbitjson.get("result"): + return await app.send_message( + chat_id=chat_id, + reply_to_message_id=message_id, + text="Sorry, could not find any results!" + ) + LKTERBIT_DICT[message_id] = [split_arr(terbitjson["result"], 6), kueri] + try: + index = int(CurrentPage - 1) + PageLen = len(LKTERBIT_DICT[message_id][0]) + + TerbitRes = "" + for c, i in enumerate(LKTERBIT_DICT[message_id][0][index], start=1): + if not kueri: + TerbitRes = f"#Terbit21 Results For: {kueri}\n\n" + else: + TerbitRes = "#Terbit21 Latest:\nšŸŒ€ Use /lk21 [title] to start search with title.\n\n" + TerbitRes += f"{c}. {i['judul']}\nCategory: {i['kategori']}\n" + TerbitRes += "\n" if re.search(r"Complete|Ongoing", i["kategori"]) else f"šŸ’  Download\n\n" + return TerbitRes, PageLen + except (IndexError, KeyError): + await app.send_message( + chat_id=chat_id, + reply_to_message_id=message_id, + text="Sorry, could not find any results!" + ) + +# LK21 GetData +async def getDatalk21(chat_id, message_id, kueri, CurrentPage): + if not LKTERBIT_DICT.get(message_id): + if not kueri: + lk21json = (await http.get('https://yasirapi.eu.org/lk21')).json() + else: + lk21json = (await http.get(f'https://yasirapi.eu.org/lk21?q={kueri}')).json() + if not lk21json.get("result"): + return await app.send_message( + chat_id=chat_id, + reply_to_message_id=message_id, + text="Sorry could not find any matching results!" + ) + LKTERBIT_DICT[message_id] = [split_arr(lk21json["result"], 6), kueri] + try: + index = int(CurrentPage - 1) + PageLen = len(LKTERBIT_DICT[message_id][0]) + + lkResult = "" + for c, i in enumerate(LKTERBIT_DICT[message_id][0][index], start=1): + if not kueri: + lkResult = f"#Layarkaca21 Results For: {kueri}\n\n" + else: + lkResult = "#Layarkaca21 Latest:\nšŸŒ€ Use /lk21 [title] to start search with title.\n\n" + lkResult += f"{c}. {i['judul']}\nCategory: {i['kategori']}\n" + lkResult += "\n" if re.search(r"Complete|Ongoing", i["kategori"]) else f"šŸ’  Download\n\n" + return lkResult, PageLen + except (IndexError, KeyError): + await app.send_message( + chat_id=chat_id, + reply_to_message_id=message_id, + text="Sorry could not find any matching results!" + ) + +# Terbit21 CMD +@app.on_message(filters.command(['terbit21'], COMMAND_HANDLER)) +async def terbit21_s(client, message): + chat_id = message.chat.id + kueri = ' '.join(message.command[1:]) + if not kueri: + kueri = None + pesan = await message.reply("Getting data from Terbit21..") + CurrentPage = 1 + terbitres, PageLen = await getDatalk21(chat_id, pesan.id, kueri, CurrentPage) + keyboard = InlineKeyboard() + keyboard.paginate(PageLen, CurrentPage, 'page_terbit21#{number}' + f'#{pesan.id}#{message.from_user.id}') + keyboard.row( + InlineButton("āŒ Close", f"close#{message.from_user.id}") + ) + await editPesan(pesan, terbitres, reply_markup=keyboard) + +# LK21 CMD +@app.on_message(filters.command(['lk21'], COMMAND_HANDLER)) +async def lk21_s(client, message): + chat_id = message.chat.id + kueri = ' '.join(message.command[1:]) + if not kueri: + kueri = None + pesan = await message.reply("Getting data from LK21..") + CurrentPage = 1 + lkres, PageLen = await getDatalk21(chat_id, pesan.id, kueri, CurrentPage) + keyboard = InlineKeyboard() + keyboard.paginate(PageLen, CurrentPage, 'page_lk21#{number}' + f'#{pesan.id}#{message.from_user.id}') + keyboard.row( + InlineButton("āŒ Close", f"close#{message.from_user.id}") + ) + await editPesan(pesan, lkres, reply_markup=keyboard) + +# Lk21 Page Callback +@app.on_callback_query(filters.create(lambda _, __, query: 'page_terbit21#' in query.data)) +async def terbit21page_callback(client, callback_query): + if callback_query.from_user.id != int(callback_query.data.split('#')[3]): + return await callback_query.answer("Not yours..", True) + message_id = int(callback_query.data.split('#')[2]) + chat_id = callback_query.message.chat.id + CurrentPage = int(callback_query.data.split('#')[1]) + try: + kueri = LKTERBIT_DICT[message_id][1] + except KeyError: + return await callback_query.answer("Invalid callback data, please send CMD again..") + + terbitres, PageLen = await getDataTerbit21(chat_id, message_id, kueri, CurrentPage) + + keyboard = InlineKeyboard() + keyboard.paginate(PageLen, CurrentPage, 'page_terbit21#{number}' + f'#{message_id}#{callback_query.from_user.id}') + keyboard.row( + InlineButton("āŒ Close", f"close#{callback_query.from_user.id}") + ) + await editPesan(callback_query.message, terbitres, reply_markup=keyboard) + +# Lk21 Page Callback +@app.on_callback_query(filters.create(lambda _, __, query: 'page_lk21#' in query.data)) +async def lk21page_callback(client, callback_query): + if callback_query.from_user.id != int(callback_query.data.split('#')[3]): + return await callback_query.answer("Not yours..", True) + message_id = int(callback_query.data.split('#')[2]) + chat_id = callback_query.message.chat.id + CurrentPage = int(callback_query.data.split('#')[1]) + try: + kueri = LKTERBIT_DICT[message_id][1] + except KeyError: + return await callback_query.answer("Invalid callback data, please send CMD again..") + + lkres, PageLen = await getDatalk21(chat_id, message_id, kueri, CurrentPage) + + keyboard = InlineKeyboard() + keyboard.paginate(PageLen, CurrentPage, 'page_lk21#{number}' + f'#{message_id}#{callback_query.from_user.id}') + keyboard.row( + InlineButton("āŒ Close", f"close#{callback_query.from_user.id}") + ) + await editPesan(callback_query.message, lkres, reply_markup=keyboard) \ No newline at end of file