{title}\n\n" if title else f"#Zonafilm Latest:\nš Use /{msg.command[0]} [title] to start search with title.\n\n"
- msgs = ""
- await m.delete()
- for c, i in enumerate(data, start=1):
- msgs += f"{c}. {i['judul']}\nGenre: {i['genre']}\n"
- msgs += f"Extract: /{msg.command[0]}_scrap {i['link']}\n\n" if "/tv/" not in i["link"] else "\n"
- if len(head.encode("utf-8") + msgs.encode("utf-8")) >= 4000:
- await msg.reply(
- head + msgs,
- True,
- disable_web_page_preview=True,
- reply_markup=InlineKeyboardMarkup(
- [
- [
- InlineKeyboardButton(
- text="ā Close",
- callback_data=f"close#{msg.from_user.id}",
- )
- ]
- ]
- ),
- )
- await asyncio.sleep(2)
- msgs = ""
- if msgs != "":
- await msg.reply(
- head + msgs,
- True,
- disable_web_page_preview=True,
- reply_markup=InlineKeyboardMarkup(
- [
- [
- InlineKeyboardButton(
- text="ā Close",
- callback_data=f"close#{msg.from_user.id}",
- )
- ]
- ]
- ),
- )
- except Exception as e:
- LOGGER.error(e)
- await m.delete()
- await msg.reply(f"ERROR: {e}", True)
-
-
@app.on_message(filters.command(["nodrakor"], COMMAND_HANDLER))
@capture_err
async def nodrakor(_, msg):
diff --git a/misskaty/plugins/web_scraper.py b/misskaty/plugins/web_scraper.py
index 36044ab5..1d9a9194 100644
--- a/misskaty/plugins/web_scraper.py
+++ b/misskaty/plugins/web_scraper.py
@@ -148,6 +148,39 @@ async def getDataMelong(msg, kueri, CurrentPage):
except (IndexError, KeyError):
await msg.edit("Sorry could not find any matching results!")
+# Zonafilm GetData
+async def getDataZonafilm(msg, kueri, CurrentPage):
+ if not SCRAP_DICT.get(msg.id):
+ zonafilm = await http.get(f'https://zonafilm.icu/?s={kueri}', headers=headers)
+ text = BeautifulSoup(zonafilm.text, "lxml")
+ entry = text.find_all(class_="entry-header")
+ if "Nothing Found" in entry[0].text:
+ if not kueri:
+ return await msg.edit("404 Not FOUND!")
+ else:
+ return await msg.edit(f"404 Not FOUND For: {kueri}")
+ data = []
+ for i in entry:
+ genre = i.find(class_="gmr-movie-on").text
+ genre = f"{genre}" if genre != "" else "N/A"
+ judul = i.find(class_="entry-title").find("a").text
+ link = i.find(class_="entry-title").find("a").get("href")
+ data.append({"judul": judul, "link": link, "genre": genre})
+ SCRAP_DICT[msg.id] = [split_arr(data, 6), kueri]
+ try:
+ index = int(CurrentPage - 1)
+ PageLen = len(SCRAP_DICT[msg.id][0])
+
+ ZonafilmResult = f"#Zonafilm Results For: {kueri}\n\n" if kueri else f"#Zonafilm Latest:\nš Use /zonafilm [title] to start search with title.\n\n"
+ for c, i in enumerate(SCRAP_DICT[msg.id][0][index], start=1):
+ msgs += f"{c}. {i['judul']}\nGenre: {i['genre']}\n"
+ msgs += f"Extract: /zonafilm_scrap {i['link']}\n\n" if "/tv/" not in i["link"] else "\n"
+ IGNORE_CHAR = "[]"
+ ZonafilmResult = ''.join(i for i in ZonafilmResult if not i in IGNORE_CHAR)
+ return ZonafilmResult, PageLen
+ except (IndexError, KeyError):
+ await msg.edit("Sorry could not find any matching results!")
+
# GoMov GetData
async def getDataGomov(msg, kueri, CurrentPage):
if not SCRAP_DICT.get(msg.id):
@@ -247,6 +280,38 @@ async def gomov_s(client, message):
)
await editPesan(pesan, gomovres, reply_markup=keyboard)
+# Zonafilm CMD
+@app.on_message(filters.command(['zonafilm'], COMMAND_HANDLER))
+async def zonafilm_s(client, message):
+ kueri = ' '.join(message.command[1:])
+ if not kueri:
+ kueri = ""
+ pesan = await message.reply("Getting data from Zonafilm Web..")
+ CurrentPage = 1
+ zonafilmres, PageLen = await getDataZonafilm(pesan, kueri, CurrentPage)
+ keyboard = InlineKeyboard()
+ keyboard.paginate(PageLen, CurrentPage, 'page_zonafilm#{number}' + f'#{pesan.id}#{message.from_user.id}')
+ keyboard.row(
+ InlineButton("ā Close", f"close#{message.from_user.id}")
+ )
+ await editPesan(pesan, zonafilmres, reply_markup=keyboard)
+
+# MelongMovie CMD
+@app.on_message(filters.command(['melongmovie'], COMMAND_HANDLER))
+async def melong_s(client, message):
+ kueri = ' '.join(message.command[1:])
+ if not kueri:
+ kueri = ""
+ pesan = await message.reply("Getting data from Gomov Web..")
+ CurrentPage = 1
+ melongres, PageLen = await getDataMelong(pesan, kueri, CurrentPage)
+ keyboard = InlineKeyboard()
+ keyboard.paginate(PageLen, CurrentPage, 'page_melong#{number}' + f'#{pesan.id}#{message.from_user.id}')
+ keyboard.row(
+ InlineButton("ā Close", f"close#{message.from_user.id}")
+ )
+ await editPesan(pesan, melongres, reply_markup=keyboard)
+
# Terbit21 Page Callback
@app.on_callback_query(filters.create(lambda _, __, query: 'page_terbit21#' in query.data))
async def terbit21page_callback(client, callback_query):
@@ -271,6 +336,29 @@ async def terbit21page_callback(client, callback_query):
)
await editPesan(callback_query.message, terbitres, reply_markup=keyboard)
+@app.on_callback_query(filters.create(lambda _, __, query: 'page_melong#' in query.data))
+async def melongpage_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])
+ CurrentPage = int(callback_query.data.split('#')[1])
+ try:
+ kueri = SCRAP_DICT[message_id][1]
+ except KeyError:
+ return await callback_query.answer("Invalid callback data, please send CMD again..")
+
+ try:
+ terbitres, PageLen = await getDataMelong(callback_query.message, kueri, CurrentPage)
+ except TypeError:
+ return
+
+ keyboard = InlineKeyboard()
+ keyboard.paginate(PageLen, CurrentPage, 'page_melong#{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):
@@ -343,6 +431,29 @@ async def gomovpage_callback(client, callback_query):
)
await editPesan(callback_query.message, gomovres, reply_markup=keyboard)
+@app.on_callback_query(filters.create(lambda _, __, query: 'page_zonafilm#' in query.data))
+async def zonafilmpage_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])
+ CurrentPage = int(callback_query.data.split('#')[1])
+ try:
+ kueri = SCRAP_DICT[message_id][1]
+ except KeyError:
+ return await callback_query.answer("Invalid callback data, please send CMD again..")
+
+ try:
+ zonafilmres, PageLen = await getDataZonafilm(callback_query.message, kueri, CurrentPage)
+ except TypeError:
+ return
+
+ keyboard = InlineKeyboard()
+ keyboard.paginate(PageLen, CurrentPage, 'page_gomov#{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, zonafilmres, reply_markup=keyboard)
+
### Scrape DDL Link From Web ###
# Savefilm21 DDL