# This plugin to scrape from melongmovie, and lk21 from bs4 import BeautifulSoup import aiohttp import re import requests import traceback from misskaty import app from pyrogram import filters from pyrogram.errors import MessageTooLong from info import COMMAND_HANDLER from misskaty.core.decorator.errors import capture_err from misskaty.helper.tools import rentry __MODULE__ = "WebScraper" __HELP__ = """ /melongmovie - Scrape website data from MelongMovie Web. If without query will give latest movie list. /lk21 [query ] - Scrape website data from LayarKaca21. If without query will give latest movie list. /terbit21 [query ] - Scrape website data from Terbit21. If without query will give latest movie list. /savefilm21 [query ] - Scrape website data from Savefilm21. If without query will give latest movie list. /movieku [query ] - Scrape website data from Movieku.cc /gomov [query ] - Scrape website data from GoMov. If without query will give latest movie list. """ # Broken @app.on_message(filters.command(["nodrakor"], COMMAND_HANDLER)) @capture_err async def nodrakor(_, message): try: judul = message.text.split(" ", maxsplit=1)[1] except IndexError: judul = "" msg = await message.reply("Sedang proses scrap, mohon tunggu..") try: headers = { "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" } html = requests.get( f"https://109.234.34.246/?s={judul}", headers=headers, allow_redirects=False, verify=False, ) soup = BeautifulSoup(html.text, "lxml") res = soup.find_all(class_="content-thumbnail text-center") data = [] for i in res: link = i.find_all("a")[0]["href"] judul = i.find_all("a")[0]["title"].split(": ")[1] data.append({"judul": judul, "link": link}) if not data: return await msg.edit("Oops, data film tidak ditemukan.") res = "".join(f"{i['judul']}\n{i['link']}\n\n" for i in data) await msg.edit( f"Hasil Pencarian di Nodrakor:\n{res}\nScraped by @MissKatyRoBot" ) except Exception as e: await msg.edit(f"ERROR: {str(e)}") # Broken @app.on_message(filters.command(["ngefilm21"], COMMAND_HANDLER)) @capture_err async def ngefilm21(_, message): try: title = message.text.split(" ", maxsplit=1)[1] except IndexError: title = "" msg = await message.reply("Sedang proses scrap, mohon tunggu..") try: headers = { "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" } html = requests.get(f"http://185.237.253.209/search?q={title}", headers=headers) soup = BeautifulSoup(html.text, "lxml") res = soup.find_all("h2") data = [] for i in res: a = i.find_all("a")[0] judul = a.find_all(class_="r-snippetized") b = i.find_all("a")[0]["href"] data.append({"judul": judul[0].text, "link": b}) # print(f"{judul[0].text}{b}\n") if not data: return await msg.edit("Oops, data film tidak ditemukan.") res = "".join(f"{i['judul']}\n{i['link']}\n" for i in data) await msg.edit(f"Hasil Scrap dari Ngefilm21:\n{res}") except Exception as e: await msg.edit(f"ERROR: {str(e)}") @app.on_message(filters.command(["movieku"], COMMAND_HANDLER)) @capture_err async def movikucc(_, message): try: judul = message.text.split(" ", maxsplit=1)[1] except IndexError: judul = "" msg = await message.reply("Sedang proses scrap, mohon tunggu..") try: headers = { "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" } html = requests.get(f"https://107.152.39.187/?s={judul}", headers=headers) soup = BeautifulSoup(html.text, "lxml") data = soup.find_all(class_="bx") res = "".join( f"Judul: {i.find_all('a')[0]['title']}\nLink: {i.find_all('a')[0]['href']}\n\n" for i in data ) await msg.edit( f"Hasil Scrap di Movieku.cc:\n{res} ⚠️ Gunakan command /movieku_scrap [link] untuk mengambil link download (hanya untuk movie)." ) except Exception as e: await msg.edit(f"ERROR: {str(e)}") @app.on_message(filters.command(["savefilm21"], COMMAND_HANDLER)) @capture_err async def savefilm21(_, message): try: judul = message.text.split(" ", maxsplit=1)[1] except IndexError: judul = "" msg = await message.reply("Sedang proses scrap, mohon tunggu..") try: headers = { "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" } html = requests.get( f"http://38.242.196.210/?s={judul}", headers=headers, allow_redirects=False ) soup = BeautifulSoup(html.text, "lxml") res = soup.find_all(class_="entry-title") data = [] for i in res: pas = i.find_all("a") judul = pas[0].text link = pas[0]["href"] data.append({"judul": judul, "link": link}) if not data: return await msg.edit("Oops, data film tidak ditemukan") res = "".join( f"Judul: {i['judul']}\nLink: {i['link']}\n\n" for i in data ) await msg.edit( f"Hasil Scrap {judul} dari Savefilm21:\n{res}\n\n⚠️ Gunakan /savefilm21_scrap [link] untuk mengambil link downloadnya." ) except Exception as e: await msg.edit(f"ERROR: {str(e)}") @app.on_message(filters.command(["melongmovie"], COMMAND_HANDLER)) @capture_err async def melongmovie(_, message): try: judul = message.text.split(" ", maxsplit=1)[1] except IndexError: judul = "" msg = await message.reply("Sedang proses scrap, mohon tunggu..") try: headers = { "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" } html = requests.get(f"http://167.99.31.48/?s={judul}", headers=headers) soup = BeautifulSoup(html.text, "lxml") data = [] for res in soup.select(".box"): dd = res.select("a") url = dd[0]["href"] title = dd[0]["title"] try: kualitas = dd[0].find(class_="quality").text except: kualitas = "" data.append({"judul": title, "link": url, "kualitas": kualitas}) if not data: return await msg.edit("Oops, data film tidak ditemukan di melongmovie") res = "".join( f"Judul: {i['judul']}\nKualitas: {i['kualitas']}\nLink: {i['link']}\n\n" for i in data ) # return await message.reply(json.dumps(data, indent=2, ensure_ascii=False)) return await msg.edit(res) except Exception as e: await msg.edit(f"ERROR: {str(e)}") @app.on_message(filters.command(["terbit21"], COMMAND_HANDLER)) @capture_err async def terbit21_scrap(_, message): if len(message.command) == 1: async with aiohttp.ClientSession() as session: r = await session.get(f"https://yasirapi.eu.org/terbit21") res = await r.json() data = "".join( f"**Judul: {i['judul']}**\n`{i['kategori']}`\n{i['link']}\n**Download:** [Klik Disini]({i['dl']})\n\n" for i in res["result"] ) try: return await message.reply( f"**Daftar rilis movie terbaru di web Terbit21**:\n{data}", disable_web_page_preview=True, ) except MessageTooLong: msg = await rentry(data) return await message.reply( f"Karena hasil scrape terlalu panjang, maka hasil scrape di post ke rentry.\n\n{msg}" ) judul = message.text.split(" ", maxsplit=1)[1] msg = await message.reply(f"Mencari film di Terbit21 dg keyword {judul}..") async with aiohttp.ClientSession() as session: r = await session.get(f"https://yasirapi.eu.org/terbit21?q={judul}") res = await r.json() data = "".join( f"**Judul: {i['judul']}**\n`{i['kategori']}`\n{i['link']}\n**Download:** [Klik Disini]({i['dl']})\n\n" for i in res["result"] ) if not res["result"]: return await msg.edit("Yahh, ga ada hasil ditemukan") try: await msg.edit( f"Hasil pencarian query {judul} di lk21:\n{data}", disable_web_page_preview=True, ) except MessageTooLong: pesan = await rentry(data) await msg.edit( f"Karena hasil scrape terlalu panjang, maka hasil scrape di post ke rentry.\n\n{pesan}" ) @app.on_message(filters.command(["lk21"], COMMAND_HANDLER)) @capture_err async def lk21_scrap(_, message): if len(message.command) == 1: msg = await message.reply(f"Mendapatkan daftar post film terbaru di lk21") async with aiohttp.ClientSession() as session: r = await session.get(f"https://yasirapi.eu.org/lk21") res = await r.json() if res.get("detail", None): return await msg.edit(f"ERROR: {res['detail']}") data = "".join( f"**Judul: {i['judul']}**\n`{i['kategori']}`\n{i['link']}\n**Download:** [Klik Disini]({i['dl']})\n\n" for i in res["result"] ) try: return await msg.edit( f"**Daftar rilis movie terbaru di web LK21**:\n{data}", disable_web_page_preview=True, ) except MessageTooLong: msg = await rentry(data) await msg.edit( f"Karena hasil scrape terlalu panjang, maka hasil scrape di post ke rentry.\n\n{msg}" ) judul = message.text.split(" ", maxsplit=1)[1] msg = await message.reply(f"Mencari film di lk21 dg keyword {judul}..") async with aiohttp.ClientSession() as session: r = await session.get(f"https://yasirapi.eu.org/lk21?q={judul}") res = await r.json() if res.get("detail", None): return await msg.edit(f"ERROR: {res['detail']}") data = "".join( f"**Judul: {i['judul']}**\n`{i['kategori']}`\n{i['link']}\n**Download:** [Klik Disini]({i['dl']})\n\n" for i in res["result"] ) if not res["result"]: return await msg.edit("Yahh, ga ada hasil ditemukan") try: await msg.edit( f"Hasil pencarian query {judul} di lk21:\n{data}", disable_web_page_preview=True, ) except MessageTooLong: pesan = await rentry(data) return await msg.edit( f"Karena hasil scrape terlalu panjang, maka hasil scrape di post ke rentry.\n\n{pesan}" ) @app.on_message(filters.command(["gomov"], COMMAND_HANDLER)) @capture_err async def gomov_scrap(_, message): try: judul = message.text.split(" ", maxsplit=1)[1] except IndexError: judul = "" msg = await message.reply(f"Scraping GoMov Website..") try: headers = { "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" } html = requests.get(f"https://185.173.38.216/?s={judul}", headers=headers) soup = BeautifulSoup(html.text, "lxml") entry = soup.find_all(class_="entry-header") DATA = [] for i in entry: genre = i.find(class_="gmr-movie-on").text 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}) if not DATA: return await msg.edit("Oops, data film tidak ditemukan di GoMov") res = "".join( f"{num}. {i['judul']}\n{i['genre']}\n{i['link']}\n\n" for num, i in enumerate(DATA, start=1) ) await msg.edit( f"Hasil Pencarian di website GoMov:\n{res}\nScraped by @MissKatyRoBot" ) except Exception: exc = traceback.format_exc() await msg.edit(f"ERROR: {exc}") @app.on_message(filters.command(["savefilm21_scrap"], COMMAND_HANDLER)) @capture_err async def savefilm21_scrap(_, message): try: link = message.text.split(" ", maxsplit=1)[1] headers = { "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" } html = requests.get(link, headers=headers, allow_redirects=False) soup = BeautifulSoup(html.text, "lxml") res = soup.find_all(class_="button button-shadow") res = "".join(f"{i.text}\n{i['href']}\n\n" for i in res) await message.reply(f"Hasil Scrap dari {link}:\n\n{res}") except IndexError: return await message.reply( "Gunakan command /savefilm21_scrap [link] untuk scrap link download" ) except Exception as e: await message.reply(f"ERROR: {str(e)}") @app.on_message(filters.command(["nodrakor_scrap"], COMMAND_HANDLER)) @capture_err async def nodrakor_scrap(_, message): try: link = message.text.split(" ", maxsplit=1)[1] headers = { "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" } html = requests.get(link, headers=headers, allow_redirects=False, verify=False) soup = BeautifulSoup(html.text, "lxml") hasil = soup.find_all(class_="gmr-download-wrap clearfix")[0] await message.reply(f"Hasil Scrap dari {link}:\n{hasil}") except IndexError: return await message.reply( "Gunakan command /nodrakor_scrap [link] untuk scrap link download" ) except Exception as e: await message.reply(f"ERROR: {str(e)}") @app.on_message(filters.command(["movieku_scrap"], COMMAND_HANDLER)) @capture_err async def muviku_scrap(_, message): try: link = message.text.split(" ", maxsplit=1)[1] headers = { "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" } html = requests.get(link, headers=headers) soup = BeautifulSoup(html.text, "lxml") res = soup.find_all(class_="smokeurl") data = [] for i in res: for b in range(len(i.find_all("a"))): link = i.find_all("a")[b]["href"] kualitas = i.find_all("a")[b].text # print(f"{kualitas}\n{link data.append({"link": link, "kualitas": kualitas}) if not data: return await message.reply("Oops, data film tidak ditemukan.") res = "".join(f"Host: {i['kualitas']}\n{i['link']}\n\n" for i in data) await message.reply(res) except IndexError: return await message.reply( "Gunakan command /movieku_scrap [link] untuk scrap link download" ) except Exception as e: await message.reply(f"ERROR: {str(e)}") @app.on_message( filters.command(["melong"], COMMAND_HANDLER) & filters.user([617426792, 1985689491, 1172699512, 2024984460]) ) @capture_err async def melong_scrap(_, message): try: link = message.text.split(" ", maxsplit=1)[1] headers = { "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" } html = requests.get(link, headers=headers) soup = BeautifulSoup(html.text, "lxml") for ep in soup.findAll(text=re.compile(r"(?i)episode\s+\d+|LINK DOWNLOAD")): hardsub = ep.findPrevious("div") softsub = ep.findNext("div") rep = f"{hardsub}\n{softsub}" await message.reply(rep) except IndexError: await message.reply( "Gunakan command /melong [link] untuk scrap link download" ) @app.on_message(filters.command(["gomov_scrap"], COMMAND_HANDLER)) @capture_err async def gomov_dl(_, message): try: link = message.text.split(" ", maxsplit=1)[1] headers = { "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" } html = requests.get(link, headers=headers, verify=False) soup = BeautifulSoup(html.text, "lxml") entry = soup.find(class_="gmr-download-wrap clearfix") hasil = soup.find(class_="title-download").text for i in entry.find(class_="list-inline gmr-download-list clearfix"): title = i.find("a").text link = i.find("a")["href"] hasil += f"\n{title}\n{link}\n" await message.reply(hasil) except IndexError: await message.reply( "Gunakan command /melong [link] untuk scrap link download" )