mirror of
https://github.com/yasirarism/MissKatyPyro.git
synced 2026-01-07 04:14:51 +00:00
Beberapa perbaikan kode lagi, males nulis apa aja
This commit is contained in:
parent
79d1a32b20
commit
923c962b88
10 changed files with 47 additions and 34 deletions
|
|
@ -3,7 +3,6 @@
|
||||||
"conv_sub_help": "Use command /{cmd} by reply to .ass or .vtt file, to convert subtitle from .ass or .vtt to srt.",
|
"conv_sub_help": "Use command /{cmd} by reply to .ass or .vtt file, to convert subtitle from .ass or .vtt to srt.",
|
||||||
"progress_str": "⏳ Processing your request..",
|
"progress_str": "⏳ Processing your request..",
|
||||||
"convert_str": "⏳ Converting...",
|
"convert_str": "⏳ Converting...",
|
||||||
"val_sec": " second",
|
|
||||||
"unauth_cb": "⚠️ Access Denied!",
|
"unauth_cb": "⚠️ Access Denied!",
|
||||||
"cancel_btn": "❌ Cancel",
|
"cancel_btn": "❌ Cancel",
|
||||||
"invalid_cb": "⚠️ DONT DELETE YOUR MESSAGE!",
|
"invalid_cb": "⚠️ DONT DELETE YOUR MESSAGE!",
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,7 @@
|
||||||
"sub_extr_help": "Harap gunakan perintah /{cmd} [tautan] untuk memeriksa teks film atau audio dalam berkas video.",
|
"sub_extr_help": "Harap gunakan perintah /{cmd} [tautan] untuk memeriksa teks film atau audio dalam berkas video.",
|
||||||
"conv_sub_help": "Gunakan perintah /{cmd} dengan membalas berkas .ass atau .vtt, untuk mengonversi teks film dari .ass atau .vtt ke srt.",
|
"conv_sub_help": "Gunakan perintah /{cmd} dengan membalas berkas .ass atau .vtt, untuk mengonversi teks film dari .ass atau .vtt ke srt.",
|
||||||
"progress_str": "⏳ Memproses permintaan Anda..",
|
"progress_str": "⏳ Memproses permintaan Anda..",
|
||||||
"convert_str": "⏳ Mengonversi...",
|
"convert_str": "⏳ Mengkonversi...",
|
||||||
"val_sec": " detik",
|
|
||||||
"unauth_cb": "⚠️ Akses Ditolak!",
|
"unauth_cb": "⚠️ Akses Ditolak!",
|
||||||
"batal_btn": "❌ Batal",
|
"batal_btn": "❌ Batal",
|
||||||
"invalid_cb": "⚠️ JANGAN HAPUS PESAN ANDA!",
|
"invalid_cb": "⚠️ JANGAN HAPUS PESAN ANDA!",
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,8 @@
|
||||||
"conv_sub_help": "Gunakake printah /{cmd} kanthi mbales berkas .ass utawa .vtt, kanggo ngowahi subtitle saka .ass utawa .vtt dadi srt.",
|
"conv_sub_help": "Gunakake printah /{cmd} kanthi mbales berkas .ass utawa .vtt, kanggo ngowahi subtitle saka .ass utawa .vtt dadi srt.",
|
||||||
"progress_str": "⏳ Ngolah panjalukmu..",
|
"progress_str": "⏳ Ngolah panjalukmu..",
|
||||||
"convert_str": "⏳ Ngonversi...",
|
"convert_str": "⏳ Ngonversi...",
|
||||||
"val_sec": "Kapindho",
|
|
||||||
"unauth_cb": "⚠️ Akses Ditolak!",
|
"unauth_cb": "⚠️ Akses Ditolak!",
|
||||||
"cancel_btn": "❌ Batal",
|
"cancel_btn": "❌ Rasido",
|
||||||
"invalid_cb": "⚠️ AJA Mbusak PESAN!",
|
"invalid_cb": "⚠️ AJA Mbusak PESAN!",
|
||||||
"up_str": "Ngunggahaké berkas..",
|
"up_str": "Ngunggahaké berkas..",
|
||||||
"press_btn_msg": "Pencet tombol ing ngisor iki kanggo ngekstrak subtitle/audio. Mung ndhukung link langsung saiki.\nDiproses ing {timelog}",
|
"press_btn_msg": "Pencet tombol ing ngisor iki kanggo ngekstrak subtitle/audio. Mung ndhukung link langsung saiki.\nDiproses ing {timelog}",
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import time
|
||||||
from pyrogram.errors import FloodWait, MessageNotModified, MessageIdInvalid
|
from pyrogram.errors import FloodWait, MessageNotModified, MessageIdInvalid
|
||||||
|
|
||||||
|
|
||||||
async def progress_for_pyrogram(current, total, ud_type, message, start):
|
async def progress_for_pyrogram(current, total, ud_type, message, start, dc_id):
|
||||||
"""generic progress display for Telegram Upload / Download status"""
|
"""generic progress display for Telegram Upload / Download status"""
|
||||||
now = time.time()
|
now = time.time()
|
||||||
diff = now - start
|
diff = now - start
|
||||||
|
|
@ -32,10 +32,11 @@ async def progress_for_pyrogram(current, total, ud_type, message, start):
|
||||||
round(percentage, 2),
|
round(percentage, 2),
|
||||||
)
|
)
|
||||||
|
|
||||||
tmp = progress + "{0} of {1}\nSpeed: {2}/s\nETA: {3}\n".format(
|
tmp = progress + "{0} <b>of</b> {1}\n<b>Speed:</b> {2}/s\n<b>DC ID:</b> {3}\n<b>ETA:</b> {4}</b>\n".format(
|
||||||
humanbytes(current),
|
humanbytes(current),
|
||||||
humanbytes(total),
|
humanbytes(total),
|
||||||
humanbytes(speed),
|
humanbytes(speed),
|
||||||
|
dc_id,
|
||||||
estimated_total_time if estimated_total_time != "" else "0 s",
|
estimated_total_time if estimated_total_time != "" else "0 s",
|
||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
|
|
|
||||||
|
|
@ -214,7 +214,7 @@ async def afk_state(self: Client, ctx: Message, strings):
|
||||||
group=1,
|
group=1,
|
||||||
)
|
)
|
||||||
@use_chat_lang()
|
@use_chat_lang()
|
||||||
async def chat_watcher_func(self: Client, ctx: Message, strings):
|
async def afk_watcher_func(self: Client, ctx: Message, strings):
|
||||||
if ctx.sender_chat:
|
if ctx.sender_chat:
|
||||||
return
|
return
|
||||||
userid = ctx.from_user.id
|
userid = ctx.from_user.id
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ from datetime import datetime
|
||||||
from logging import getLogger
|
from logging import getLogger
|
||||||
|
|
||||||
from pyrogram import filters
|
from pyrogram import filters
|
||||||
|
from pyrogram.file_id import FileId
|
||||||
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
|
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
|
||||||
from pySmartDL import SmartDL
|
from pySmartDL import SmartDL
|
||||||
|
|
||||||
|
|
@ -35,16 +36,16 @@ __HELP__ = """
|
||||||
async def upload(bot, message):
|
async def upload(bot, message):
|
||||||
if not message.reply_to_message:
|
if not message.reply_to_message:
|
||||||
return await message.reply("Please reply to media file.")
|
return await message.reply("Please reply to media file.")
|
||||||
if message.reply_to_message is not None:
|
vid = [message.reply_to_message.video, message.reply_to_message.document, message.reply_to_message.audio, message.reply_to_message.photo]
|
||||||
vid = [message.reply_to_message.video, message.reply_to_message.document]
|
media = next((v for v in vid if v is not None), None)
|
||||||
for v in vid:
|
if not media:
|
||||||
if v is not None:
|
return await message.reply("Unsupported media type..")
|
||||||
break
|
|
||||||
m = await message.reply("Download your file to my Server...")
|
m = await message.reply("Download your file to my Server...")
|
||||||
now = time.time()
|
now = time.time()
|
||||||
|
dc_id = FileId.decode(media.file_id).dc_id
|
||||||
fileku = await message.reply_to_message.download(
|
fileku = await message.reply_to_message.download(
|
||||||
progress=progress_for_pyrogram,
|
progress=progress_for_pyrogram,
|
||||||
progress_args=("Trying to download, please wait..", m, now),
|
progress_args=("Trying to download, please wait..", m, now, dc_id),
|
||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
files = {"file": open(fileku, "rb")}
|
files = {"file": open(fileku, "rb")}
|
||||||
|
|
@ -67,10 +68,15 @@ async def download(client, message):
|
||||||
if message.reply_to_message is not None:
|
if message.reply_to_message is not None:
|
||||||
start_t = datetime.now()
|
start_t = datetime.now()
|
||||||
c_time = time.time()
|
c_time = time.time()
|
||||||
|
vid = [message.reply_to_message.video, message.reply_to_message.document, message.reply_to_message.audio, message.reply_to_message.photo]
|
||||||
|
media = next((v for v in vid if v is not None), None)
|
||||||
|
if not media:
|
||||||
|
return await pesan.edit_msg("Unsupported media type..")
|
||||||
|
dc_id = FileId.decode(media.file_id).dc_id
|
||||||
the_real_download_location = await client.download_media(
|
the_real_download_location = await client.download_media(
|
||||||
message=message.reply_to_message,
|
message=message.reply_to_message,
|
||||||
progress=progress_for_pyrogram,
|
progress=progress_for_pyrogram,
|
||||||
progress_args=("trying to download, sabar yakk..", pesan, c_time),
|
progress_args=("Trying to download, sabar yakk..", pesan, c_time, dc_id),
|
||||||
)
|
)
|
||||||
end_t = datetime.now()
|
end_t = datetime.now()
|
||||||
ms = (end_t - start_t).seconds
|
ms = (end_t - start_t).seconds
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ from logging import getLogger
|
||||||
|
|
||||||
from pyrogram import enums, filters, Client
|
from pyrogram import enums, filters, Client
|
||||||
from pyrogram.errors import FloodWait
|
from pyrogram.errors import FloodWait
|
||||||
|
from pyrogram.file_id import FileId
|
||||||
from pyrogram.types import InlineKeyboardMarkup, Message, CallbackQuery
|
from pyrogram.types import InlineKeyboardMarkup, Message, CallbackQuery
|
||||||
|
|
||||||
from misskaty import app
|
from misskaty import app
|
||||||
|
|
@ -62,10 +63,11 @@ async def genss(self: Client, ctx: Message, strings):
|
||||||
if media.file_size > 2097152000:
|
if media.file_size > 2097152000:
|
||||||
return await process.edit_msg(strings("limit_dl"))
|
return await process.edit_msg(strings("limit_dl"))
|
||||||
c_time = time.time()
|
c_time = time.time()
|
||||||
|
dc_id = FileId.decode(media.file_id).dc_id
|
||||||
dl = await replied.download(
|
dl = await replied.download(
|
||||||
file_name="/downloads/",
|
file_name="/downloads/",
|
||||||
progress=progress_for_pyrogram,
|
progress=progress_for_pyrogram,
|
||||||
progress_args=(strings("dl_progress"), process, c_time),
|
progress_args=(strings("dl_progress"), process, c_time, dc_id),
|
||||||
)
|
)
|
||||||
the_real_download_location = os.path.join("/downloads/", os.path.basename(dl))
|
the_real_download_location = os.path.join("/downloads/", os.path.basename(dl))
|
||||||
if the_real_download_location is not None:
|
if the_real_download_location is not None:
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import os
|
||||||
from logging import getLogger
|
from logging import getLogger
|
||||||
from re import I
|
from re import I
|
||||||
from re import split as ngesplit
|
from re import split as ngesplit
|
||||||
from time import perf_counter, time
|
from time import time
|
||||||
from urllib.parse import unquote
|
from urllib.parse import unquote
|
||||||
|
|
||||||
from pyrogram import filters, Client
|
from pyrogram import filters, Client
|
||||||
|
|
@ -22,6 +22,7 @@ from misskaty.core.misskaty_patch.listen.listen import ListenerTimeout
|
||||||
from misskaty.helper.pyro_progress import progress_for_pyrogram
|
from misskaty.helper.pyro_progress import progress_for_pyrogram
|
||||||
from misskaty.helper.tools import get_random_string
|
from misskaty.helper.tools import get_random_string
|
||||||
from misskaty.helper.localization import use_chat_lang
|
from misskaty.helper.localization import use_chat_lang
|
||||||
|
from misskaty.helper.human_read import get_readable_time
|
||||||
from misskaty.plugins.dev import shell_exec
|
from misskaty.plugins.dev import shell_exec
|
||||||
from misskaty.vars import COMMAND_HANDLER
|
from misskaty.vars import COMMAND_HANDLER
|
||||||
|
|
||||||
|
|
@ -57,8 +58,8 @@ def get_subname(lang, url, format):
|
||||||
fragment_removed = url.split("#")[0] # keep to left of first #
|
fragment_removed = url.split("#")[0] # keep to left of first #
|
||||||
query_string_removed = fragment_removed.split("?")[0]
|
query_string_removed = fragment_removed.split("?")[0]
|
||||||
scheme_removed = query_string_removed.split("://")[-1].split(":")[-1]
|
scheme_removed = query_string_removed.split("://")[-1].split(":")[-1]
|
||||||
if scheme_removed.find("/") == -1:
|
if scheme_removed.find("/") == -1 or not get_base_name(os.path.basename(unquote(scheme_removed))):
|
||||||
return f"[{lang.upper()}] MissKatySub_{get_random_string(4)}.{format}"
|
return f"[{lang.upper()}] MissKatySub{get_random_string(4)}.{format}"
|
||||||
return f"[{lang.upper()}] {get_base_name(os.path.basename(unquote(scheme_removed)))}.{format}"
|
return f"[{lang.upper()}] {get_base_name(os.path.basename(unquote(scheme_removed)))}.{format}"
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -69,7 +70,7 @@ async def ceksub(self: Client, ctx: Message, strings):
|
||||||
if len(ctx.command) == 1:
|
if len(ctx.command) == 1:
|
||||||
return await ctx.reply_msg(strings("sub_extr_help").format(cmd=ctx.command[0]), quote=True, del_in=5)
|
return await ctx.reply_msg(strings("sub_extr_help").format(cmd=ctx.command[0]), quote=True, del_in=5)
|
||||||
link = ctx.command[1]
|
link = ctx.command[1]
|
||||||
start_time = perf_counter()
|
start_time = time()
|
||||||
pesan = await ctx.reply_msg(strings("progress_str"), quote=True)
|
pesan = await ctx.reply_msg(strings("progress_str"), quote=True)
|
||||||
try:
|
try:
|
||||||
res = (await shell_exec(f"ffprobe -loglevel 0 -print_format json -show_format -show_streams {link}"))[0]
|
res = (await shell_exec(f"ffprobe -loglevel 0 -print_format json -show_format -show_streams {link}"))[0]
|
||||||
|
|
@ -96,11 +97,10 @@ async def ceksub(self: Client, ctx: Message, strings):
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
end_time = perf_counter()
|
timelog = time() - start_time
|
||||||
timelog = "{:.2f}".format(end_time - start_time) + strings("val_sec")
|
|
||||||
buttons.append([InlineKeyboardButton(strings("cancel_btn"), f"close#{ctx.from_user.id}")])
|
buttons.append([InlineKeyboardButton(strings("cancel_btn"), f"close#{ctx.from_user.id}")])
|
||||||
msg = await pesan.edit_msg(
|
msg = await pesan.edit_msg(
|
||||||
strings("press_btn_msg").format(timelog=timelog),
|
strings("press_btn_msg").format(timelog=get_readable_time(timelog)),
|
||||||
reply_markup=InlineKeyboardMarkup(buttons),
|
reply_markup=InlineKeyboardMarkup(buttons),
|
||||||
)
|
)
|
||||||
await msg.wait_for_click(
|
await msg.wait_for_click(
|
||||||
|
|
@ -134,7 +134,7 @@ async def convertsrt(self: Client, ctx: Message, strings):
|
||||||
caption=strings("capt_conv_sub").format(nf=filename, bot=self.me.username),
|
caption=strings("capt_conv_sub").format(nf=filename, bot=self.me.username),
|
||||||
thumb="assets/thumb.jpg",
|
thumb="assets/thumb.jpg",
|
||||||
progress=progress_for_pyrogram,
|
progress=progress_for_pyrogram,
|
||||||
progress_args=(strings("up_str"), msg, c_time),
|
progress_args=(strings("up_str"), msg, c_time, self.me.dc_id),
|
||||||
)
|
)
|
||||||
await msg.delete_msg()
|
await msg.delete_msg()
|
||||||
try:
|
try:
|
||||||
|
|
@ -166,21 +166,20 @@ async def stream_extract(self: Client, update: CallbackQuery, strings):
|
||||||
format = "eac3"
|
format = "eac3"
|
||||||
else:
|
else:
|
||||||
format = "srt"
|
format = "srt"
|
||||||
start_time = perf_counter()
|
start_time = time()
|
||||||
namafile = get_subname(lang, link, format)
|
namafile = get_subname(lang, link, format)
|
||||||
try:
|
try:
|
||||||
LOGGER.info(f"ExtractSub: {namafile} by {update.from_user.first_name} [{update.from_user.id}]")
|
LOGGER.info(f"ExtractSub: {namafile} by {update.from_user.first_name} [{update.from_user.id}]")
|
||||||
(await shell_exec(f"mediaextract -i {link} -map {map} '{namafile}'"))[0]
|
(await shell_exec(f"mediaextract -i {link} -map {map} '{namafile}'"))[0]
|
||||||
end_time = perf_counter()
|
timelog = time() - start_time
|
||||||
timelog = "{:.2f}".format(end_time - start_time) + strings("val_sec")
|
|
||||||
c_time = time()
|
c_time = time()
|
||||||
await update.message.reply_document(
|
await update.message.reply_document(
|
||||||
namafile,
|
namafile,
|
||||||
caption=strings("capt_extr_sub").format(nf=namafile, bot=self.me.username, timelog=timelog),
|
caption=strings("capt_extr_sub").format(nf=namafile, bot=self.me.username, timelog=get_readable_time(timelog)),
|
||||||
reply_to_message_id=usr.id,
|
reply_to_message_id=usr.id,
|
||||||
thumb="assets/thumb.jpg",
|
thumb="assets/thumb.jpg",
|
||||||
progress=progress_for_pyrogram,
|
progress=progress_for_pyrogram,
|
||||||
progress_args=(strings("up_str"), update.message, c_time),
|
progress_args=(strings("up_str"), update.message, c_time, self.me.dc_id),
|
||||||
)
|
)
|
||||||
await update.message.delete_msg()
|
await update.message.delete_msg()
|
||||||
try:
|
try:
|
||||||
|
|
@ -11,6 +11,7 @@ import time
|
||||||
from os import remove as osremove, path
|
from os import remove as osremove, path
|
||||||
|
|
||||||
from pyrogram import filters, Client
|
from pyrogram import filters, Client
|
||||||
|
from pyrogram.file_id import FileId
|
||||||
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Message
|
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Message
|
||||||
|
|
||||||
from misskaty import app
|
from misskaty import app
|
||||||
|
|
@ -36,10 +37,11 @@ async def mediainfo(self: Client, ctx: Message, strings):
|
||||||
if (ctx.reply_to_message.video and ctx.reply_to_message.video.file_size > 2097152000) or (ctx.reply_to_message.document and ctx.reply_to_message.document.file_size > 2097152000):
|
if (ctx.reply_to_message.video and ctx.reply_to_message.video.file_size > 2097152000) or (ctx.reply_to_message.document and ctx.reply_to_message.document.file_size > 2097152000):
|
||||||
return await process.edit_msg(strings("dl_limit_exceeded"), del_in=6)
|
return await process.edit_msg(strings("dl_limit_exceeded"), del_in=6)
|
||||||
c_time = time.time()
|
c_time = time.time()
|
||||||
|
dc_id = FileId.decode(file_info.file_id).dc_id
|
||||||
dl = await ctx.reply_to_message.download(
|
dl = await ctx.reply_to_message.download(
|
||||||
file_name="/downloads/",
|
file_name="/downloads/",
|
||||||
progress=progress_for_pyrogram,
|
progress=progress_for_pyrogram,
|
||||||
progress_args=(strings("dl_args_text"), process, c_time),
|
progress_args=(strings("dl_args_text"), process, c_time, dc_id),
|
||||||
)
|
)
|
||||||
file_path = path.join("/downloads/", path.basename(dl))
|
file_path = path.join("/downloads/", path.basename(dl))
|
||||||
output_ = await runcmd(f'mediainfo "{file_path}"')
|
output_ = await runcmd(f'mediainfo "{file_path}"')
|
||||||
|
|
|
||||||
|
|
@ -30,13 +30,13 @@ __HELP__ = "/ocr [reply to photo] - Read Text From Image"
|
||||||
@use_chat_lang()
|
@use_chat_lang()
|
||||||
async def ocr(self: Client, ctx: Message, strings):
|
async def ocr(self: Client, ctx: Message, strings):
|
||||||
reply = ctx.reply_to_message
|
reply = ctx.reply_to_message
|
||||||
if not reply or not reply.photo and (reply.document and not reply.document.mime_type.startswith("image")) and not reply.sticker:
|
if not reply and not reply.photo or not (reply.document and reply.document.mime_type.startswith("image")) or not reply.sticker:
|
||||||
return await ctx.reply_msg(strings("no_photo").format(cmd=ctx.command[0]), quote=True, del_in=6)
|
return await ctx.reply_msg(strings("no_photo").format(cmd=ctx.command[0]), quote=True, del_in=6)
|
||||||
msg = await ctx.reply_msg(strings("read_ocr"), quote=True)
|
msg = await ctx.reply_msg(strings("read_ocr"), quote=True)
|
||||||
try:
|
try:
|
||||||
file_path = await reply.download()
|
file_path = await reply.download()
|
||||||
if reply.sticker:
|
if reply.sticker:
|
||||||
file_path = await reply.download(f"ocr_{ctx.from_user.id}.jpg")
|
file_path = await reply.download(f"ocr_{ctx.from_user.id if ctx.from_user else ctx.sender_chat.id}.jpg")
|
||||||
response = await Telegraph().upload_file(file_path)
|
response = await Telegraph().upload_file(file_path)
|
||||||
url = f"https://telegra.ph{response[0]['src']}"
|
url = f"https://telegra.ph{response[0]['src']}"
|
||||||
req = (
|
req = (
|
||||||
|
|
@ -46,7 +46,13 @@ async def ocr(self: Client, ctx: Message, strings):
|
||||||
)
|
)
|
||||||
).json()
|
).json()
|
||||||
await msg.edit_msg(strings("result_ocr").format(result=req["text"]))
|
await msg.edit_msg(strings("result_ocr").format(result=req["text"]))
|
||||||
os.remove(file_path)
|
try:
|
||||||
|
os.remove(file_path)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
await msg.edit_msg(str(e))
|
await msg.edit_msg(str(e))
|
||||||
os.remove(file_path)
|
try:
|
||||||
|
os.remove(file_path)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue