mirror of
https://github.com/yasirarism/MissKatyPyro.git
synced 2025-12-29 17:44:50 +00:00
Refactor movieku scraper v2
This commit is contained in:
parent
9fb073c17a
commit
5136b96a45
1 changed files with 50 additions and 23 deletions
|
|
@ -236,7 +236,7 @@ async def getDataKuso(msg, kueri, CurrentPage, user, strings):
|
||||||
|
|
||||||
|
|
||||||
# Movieku GetData
|
# Movieku GetData
|
||||||
async def getDataMovieku(msg, kueri, CurrentPage, strings):
|
async def getDataMovieku(msg, kueri, CurrentPage, user, strings):
|
||||||
if not SCRAP_DICT.get(msg.id):
|
if not SCRAP_DICT.get(msg.id):
|
||||||
moviekudata = []
|
moviekudata = []
|
||||||
with contextlib.redirect_stdout(sys.stderr):
|
with contextlib.redirect_stdout(sys.stderr):
|
||||||
|
|
@ -264,6 +264,7 @@ async def getDataMovieku(msg, kueri, CurrentPage, strings):
|
||||||
SCRAP_DICT.add(msg.id, [split_arr(moviekudata, 6), kueri], timeout=1800)
|
SCRAP_DICT.add(msg.id, [split_arr(moviekudata, 6), kueri], timeout=1800)
|
||||||
index = int(CurrentPage - 1)
|
index = int(CurrentPage - 1)
|
||||||
PageLen = len(SCRAP_DICT[msg.id][0])
|
PageLen = len(SCRAP_DICT[msg.id][0])
|
||||||
|
extractbtn = []
|
||||||
|
|
||||||
moviekuResult = (
|
moviekuResult = (
|
||||||
strings("header_no_query").format(web="Movieku", cmd="movieku")
|
strings("header_no_query").format(web="Movieku", cmd="movieku")
|
||||||
|
|
@ -271,8 +272,13 @@ async def getDataMovieku(msg, kueri, CurrentPage, strings):
|
||||||
else strings("header_with_query").format(web="Movieku", kueri=kueri)
|
else strings("header_with_query").format(web="Movieku", kueri=kueri)
|
||||||
)
|
)
|
||||||
for c, i in enumerate(SCRAP_DICT[msg.id][0][index], start=1):
|
for c, i in enumerate(SCRAP_DICT[msg.id][0][index], start=1):
|
||||||
moviekuResult += f"<b>{index*6+c}. <a href='{i['link']}'>{i['judul']}</a></b>\n<b>{strings('quality')}/Status:</b> {i['type']}\n<b>Extract:</b> <code>/movieku_scrap {i['link']}</code>\n\n"
|
moviekuResult += f"<b>{index*6+c}. <a href='{i['link']}'>{i['judul']}</a></b>\n<b>{strings('quality')}/Status:</b> {i['type']}\n\n"
|
||||||
return moviekuResult, PageLen
|
extractbtn.append(
|
||||||
|
InlineButton(
|
||||||
|
index * 6 + c, f"moviekuextract#{CurrentPage}#{c}#{user}#{msg.id}"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return moviekuResult, PageLen, extractbtn
|
||||||
|
|
||||||
|
|
||||||
# NoDrakor GetData
|
# NoDrakor GetData
|
||||||
|
|
@ -846,7 +852,7 @@ async def movieku_s(self, ctx: Message, strings):
|
||||||
kueri = ""
|
kueri = ""
|
||||||
pesan = await ctx.reply_msg(strings("get_data"), quote=True)
|
pesan = await ctx.reply_msg(strings("get_data"), quote=True)
|
||||||
CurrentPage = 1
|
CurrentPage = 1
|
||||||
moviekures, PageLen = await getDataMovieku(pesan, kueri, CurrentPage, strings)
|
moviekures, PageLen, btn = await getDataMovieku(pesan, kueri, CurrentPage, ctx.from_user.id, strings)
|
||||||
if not moviekures:
|
if not moviekures:
|
||||||
return
|
return
|
||||||
keyboard = InlineKeyboard()
|
keyboard = InlineKeyboard()
|
||||||
|
|
@ -855,6 +861,8 @@ async def movieku_s(self, ctx: Message, strings):
|
||||||
CurrentPage,
|
CurrentPage,
|
||||||
"page_movieku#{number}" + f"#{pesan.id}#{ctx.from_user.id}",
|
"page_movieku#{number}" + f"#{pesan.id}#{ctx.from_user.id}",
|
||||||
)
|
)
|
||||||
|
keyboard.row(InlineButton(strings("ex_data"), user_id=self.me.id))
|
||||||
|
keyboard.row(*btn)
|
||||||
keyboard.row(InlineButton(strings("cl_btn"), f"close#{ctx.from_user.id}"))
|
keyboard.row(InlineButton(strings("cl_btn"), f"close#{ctx.from_user.id}"))
|
||||||
await pesan.edit_msg(
|
await pesan.edit_msg(
|
||||||
moviekures, disable_web_page_preview=True, reply_markup=keyboard
|
moviekures, disable_web_page_preview=True, reply_markup=keyboard
|
||||||
|
|
@ -1038,7 +1046,7 @@ async def lendrivepage_callback(self, callback_query, strings):
|
||||||
# Movieku Page Callback
|
# Movieku Page Callback
|
||||||
@app.on_cb("page_movieku#")
|
@app.on_cb("page_movieku#")
|
||||||
@use_chat_lang()
|
@use_chat_lang()
|
||||||
async def moviekupage_callback(_, callback_query, strings):
|
async def moviekupage_callback(self, callback_query, strings):
|
||||||
try:
|
try:
|
||||||
if callback_query.from_user.id != int(callback_query.data.split("#")[3]):
|
if callback_query.from_user.id != int(callback_query.data.split("#")[3]):
|
||||||
return await callback_query.answer(strings("unauth"), True)
|
return await callback_query.answer(strings("unauth"), True)
|
||||||
|
|
@ -1051,8 +1059,8 @@ async def moviekupage_callback(_, callback_query, strings):
|
||||||
return await callback_query.message.edit_msg(strings("invalid_cb"), True)
|
return await callback_query.message.edit_msg(strings("invalid_cb"), True)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
moviekures, PageLen = await getDataMovieku(
|
moviekures, PageLen, btn = await getDataMovieku(
|
||||||
callback_query.message, kueri, CurrentPage, strings
|
callback_query.message, kueri, CurrentPage, callback_query.from_user.id, strings
|
||||||
)
|
)
|
||||||
except TypeError:
|
except TypeError:
|
||||||
return
|
return
|
||||||
|
|
@ -1063,6 +1071,8 @@ async def moviekupage_callback(_, callback_query, strings):
|
||||||
CurrentPage,
|
CurrentPage,
|
||||||
"page_movieku#{number}" + f"#{message_id}#{callback_query.from_user.id}",
|
"page_movieku#{number}" + f"#{message_id}#{callback_query.from_user.id}",
|
||||||
)
|
)
|
||||||
|
keyboard.row(InlineButton(strings("ex_data"), user_id=self.me.id))
|
||||||
|
keyboard.row(*btn)
|
||||||
keyboard.row(
|
keyboard.row(
|
||||||
InlineButton(strings("cl_btn"), f"close#{callback_query.from_user.id}")
|
InlineButton(strings("cl_btn"), f"close#{callback_query.from_user.id}")
|
||||||
)
|
)
|
||||||
|
|
@ -1440,13 +1450,32 @@ async def nodrakorddl_scrap(_, callback_query, strings):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# Scrape Link Download Movieku.CC
|
# Scrape DDL Link Melongmovie
|
||||||
@app.on_cmd("movieku_scrap")
|
@app.on_cb("moviekuextract#")
|
||||||
@use_chat_lang()
|
@use_chat_lang()
|
||||||
async def muviku_scrap(_, message, strings):
|
async def movieku_scrap(_, callback_query, strings):
|
||||||
|
try:
|
||||||
|
if callback_query.from_user.id != int(callback_query.data.split("#")[3]):
|
||||||
|
return await callback_query.answer(strings("unauth"), True)
|
||||||
|
idlink = int(callback_query.data.split("#")[2])
|
||||||
|
message_id = int(callback_query.data.split("#")[4])
|
||||||
|
CurrentPage = int(callback_query.data.split("#")[1])
|
||||||
|
link = SCRAP_DICT[message_id][0][CurrentPage - 1][idlink - 1].get("link")
|
||||||
|
except QueryIdInvalid:
|
||||||
|
return
|
||||||
|
except KeyError:
|
||||||
|
return await callback_query.message.edit_msg(strings("invalid_cb"))
|
||||||
|
|
||||||
|
keyboard = InlineKeyboard()
|
||||||
|
keyboard.row(
|
||||||
|
InlineButton(
|
||||||
|
strings("back_btn"),
|
||||||
|
f"page_movieku#{CurrentPage}#{message_id}#{callback_query.from_user.id}",
|
||||||
|
),
|
||||||
|
InlineButton(strings("cl_btn"), f"close#{callback_query.from_user.id}"),
|
||||||
|
)
|
||||||
with contextlib.redirect_stdout(sys.stderr):
|
with contextlib.redirect_stdout(sys.stderr):
|
||||||
try:
|
try:
|
||||||
link = message.text.split(maxsplit=1)[1]
|
|
||||||
html = await fetch.get(link)
|
html = await fetch.get(link)
|
||||||
html.raise_for_status()
|
html.raise_for_status()
|
||||||
soup = BeautifulSoup(html.text, "lxml")
|
soup = BeautifulSoup(html.text, "lxml")
|
||||||
|
|
@ -1466,6 +1495,7 @@ async def muviku_scrap(_, message, strings):
|
||||||
if strong_tag:
|
if strong_tag:
|
||||||
resolution = strong_tag.text.strip()
|
resolution = strong_tag.text.strip()
|
||||||
if resolution in valid_resolutions:
|
if resolution in valid_resolutions:
|
||||||
|
total_links += 1
|
||||||
links = ', '.join([f'<a href="{a["href"]}">{a.text.strip()}</a>' for a in element.find_all('a')])
|
links = ', '.join([f'<a href="{a["href"]}">{a.text.strip()}</a>' for a in element.find_all('a')])
|
||||||
data[current_title].append(f"{resolution} {links}")
|
data[current_title].append(f"{resolution} {links}")
|
||||||
|
|
||||||
|
|
@ -1473,24 +1503,21 @@ async def muviku_scrap(_, message, strings):
|
||||||
output.append(title)
|
output.append(title)
|
||||||
output.extend(resolutions)
|
output.extend(resolutions)
|
||||||
output.append('')
|
output.append('')
|
||||||
for res in resolutions:
|
|
||||||
total_links += res.count('<a href=')
|
|
||||||
if not data:
|
if not data:
|
||||||
return await message.reply(strings("no_result"))
|
return await message.reply(strings("no_result"))
|
||||||
if total_links > 70:
|
if total_links > 70:
|
||||||
url = await post_to_telegraph(False, link, "<br>".join(output))
|
url = await post_to_telegraph(False, link, "<br>".join(output))
|
||||||
return await message.reply_msg(f"Your result is too long, i have pasted your result on Telegraph:\n{url}")
|
return await callback_query.message.edit_msg(strings("res_scrape").format(link=link, kl=f"Your result is too long, i have pasted your result on Telegraph:\n{url})", reply_markup=keyboard)
|
||||||
await message.reply_msg("\n".join(output))
|
await callback_query.message.edit_msg(strings("res_scrape").format(link=link, kl="\n".join(output)), reply_markup=keyboard)
|
||||||
except IndexError:
|
|
||||||
return await message.reply(
|
|
||||||
strings("invalid_cmd_scrape").format(cmd=message.command[0])
|
|
||||||
)
|
|
||||||
except httpx.HTTPError as exc:
|
except httpx.HTTPError as exc:
|
||||||
await message.reply(
|
await callback_query.message.edit_msg(
|
||||||
f"HTTP Exception for {exc.request.url} - <code>{exc}</code>"
|
f"HTTP Exception for {exc.request.url} - <code>{exc}</code>",
|
||||||
|
reply_markup=keyboard,
|
||||||
|
)
|
||||||
|
except Exception as err:
|
||||||
|
await callback_query.message.edit_msg(
|
||||||
|
f"ERROR: {err}", reply_markup=keyboard
|
||||||
)
|
)
|
||||||
except Exception as e:
|
|
||||||
await message.reply(f"ERROR: {str(e)}")
|
|
||||||
|
|
||||||
|
|
||||||
# Scrape DDL Link Melongmovie
|
# Scrape DDL Link Melongmovie
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue