Add Samehadaku

This commit is contained in:
yasirarism 2023-04-27 22:46:50 +07:00 committed by GitHub
parent 47d28af012
commit 7d20055eba
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -6,6 +6,7 @@
""" """
import re import re
import logging import logging
import cfscrape
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from pykeyboard import InlineKeyboard, InlineButton from pykeyboard import InlineKeyboard, InlineButton
from pyrogram import filters, Client from pyrogram import filters, Client
@ -29,6 +30,7 @@ __HELP__ = """
/kusonime [query <optional>] - Scrape website data from Kusonime /kusonime [query <optional>] - Scrape website data from Kusonime
/lendrive [query <optional>] - Scrape website data from Lendrive /lendrive [query <optional>] - Scrape website data from Lendrive
/gomov [query <optional>] - Scrape website data from GoMov. /gomov [query <optional>] - Scrape website data from GoMov.
/samehadaku [query <optional>] - Scrape website data from Samehadaku.
""" """
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"} 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"}
@ -328,6 +330,56 @@ async def getDataGomov(msg, kueri, CurrentPage, user, strings):
return None, 0, None return None, 0, None
# getData samehada
async def getSame(msg, query, current_page, strings):
if not savedict.get(msg.id):
cfse = cfscrape.CloudflareScraper()
if query:
data = cfse.get(f"https://samehadaku.cam/?s={query}", headers=headers)
else:
data = cfse.get("https://samehadaku.cam/", headers=headers)
res = BeautifulSoup(data.text, "lxml").find_all(class_="animposx")
sdata = []
for i in res:
url = i.find("a")["href"]
title = i.find("a")["title"]
sta = i.find(class_="type TV").text if i.find(class_="type TV") else "Ongoing"
rate = i.find(class_="score")
sdata.append({"url": url, "title": title, "sta": sta, "rate": rate})
if not sdata:
await msg.edit_msg(strings("no_result"), del_in=5)
return None, None, 0
savedict[msg.id] = [split_arr(sdata, 10), query]
try:
index = int(current_page - 1)
PageLen = len(savedict[msg.id][0])
sameresult = ""
for c, i in enumerate(savedict[msg.id][0][index], start=1):
sameresult += f"<b>{c}. <a href='{i['url']}'>{i['title']}</a>\n<b>Status:</b> {i['sta']}\n</b>Rating:</b> {i['rate']}\n\n"
IGNORE_CHAR = "[]"
sameresult = "".join(i for i in sameresult if not i in IGNORE_CHAR)
return sameresult, PageLen
except (IndexError, KeyError):
await msg.edit_msg(strings("no_result"), del_in=5)
return None, None
# SameHada CMD
@app.on_message(filters.command(["samehadaku"], COMMAND_HANDLER))
@ratelimiter
@use_chat_lang()
async def same_search(client, msg, strings):
query = msg.text.split(" ", 1)[1] if len(msg.command) > 1 else None
bmsg = await sendMsgPyro(msg, strings("get_data"), True)
sameres, PageLen = await getSame(bmsg, query, 1)
if not sameres:
return
keyboard = InlineKeyboard()
keyboard.paginate(PageLen, 1, "samepg#{number}" + f"#{bmsg.id}#{msg.from_user.id}")
keyboard.row(InlineButton(strings("cl_btn"), f"close#{msg.from_user.id}"))
await editMsgPyro(bmsg, sameres, reply_markup=keyboard)
# Terbit21 CMD # Terbit21 CMD
@app.on_message(filters.command(["terbit21"], COMMAND_HANDLER)) @app.on_message(filters.command(["terbit21"], COMMAND_HANDLER))
@ratelimiter @ratelimiter
@ -608,7 +660,7 @@ async def moviekupage_callback(client, callback_query, strings):
try: try:
kueri = SCRAP_DICT[message_id][1] kueri = SCRAP_DICT[message_id][1]
except KeyError: except KeyError:
return await callback_query.answer(strings("invalid_cb")) return await callback_query.answer(strings("invalid_cb"), True)
try: try:
moviekures, PageLen = await getDataMovieku(callback_query.message, kueri, CurrentPage, strings) moviekures, PageLen = await getDataMovieku(callback_query.message, kueri, CurrentPage, strings)
@ -621,6 +673,28 @@ async def moviekupage_callback(client, callback_query, strings):
await callback_query.message.edit_msg(moviekures, disable_web_page_preview=True, reply_markup=keyboard) await callback_query.message.edit_msg(moviekures, disable_web_page_preview=True, reply_markup=keyboard)
# Samehada Page Callback
@app.on_callback_query(filters.create(lambda _, __, query: "pagesame#" in query.data))
@ratelimiter
@use_chat_lang()
async def samepg(client, query, strings):
_, current_page, _id, user_id = query.data.split("#")
if int(user_id) != query.from_user.id:
return await query.answer(strings("unauth"), True)
try:
lquery = savedict[int(_id)][1]
except KeyError:
return await query.answer(strings("invalid_cb"))
try:
sameres, PageLen = await getSame(query.message, lquery, int(current_page))
except TypeError:
return
keyboard = InlineKeyboard()
keyboard.paginate(PageLen, int(current_page), "pagesame#{number}" + f"#{_id}#{query.from_user.id}")
keyboard.row(InlineButton(strings("cl_btn"), f"close#{query.from_user.id}"))
await callback_query.message.edit_msg(sameres, reply_markup=keyboard)
# Terbit21 Page Callback # Terbit21 Page Callback
@app.on_callback_query(filters.create(lambda _, __, query: "page_terbit21#" in query.data)) @app.on_callback_query(filters.create(lambda _, __, query: "page_terbit21#" in query.data))
@ratelimiter @ratelimiter