From 9992970b78d54849ac02322e2ef096cfc251ca38 Mon Sep 17 00:00:00 2001 From: yasir Date: Wed, 15 Feb 2023 15:13:01 +0700 Subject: [PATCH] Rvert because unstable --- misskaty/plugins/genssv2.py | 293 -------------------------------- misskaty/plugins/mediainfov2.py | 124 -------------- 2 files changed, 417 deletions(-) delete mode 100644 misskaty/plugins/genssv2.py delete mode 100644 misskaty/plugins/mediainfov2.py diff --git a/misskaty/plugins/genssv2.py b/misskaty/plugins/genssv2.py deleted file mode 100644 index 7d575fbf..00000000 --- a/misskaty/plugins/genssv2.py +++ /dev/null @@ -1,293 +0,0 @@ -import asyncio -import datetime -import json -import os -import random -import re -import shlex -import shutil -import subprocess -import time -from urllib.parse import unquote - -import requests -from pyrogram import filters -from pyrogram.errors import MessageNotModified -from requests_toolbelt import MultipartEncoder - -from misskaty import app -from misskaty.core.message_utils import * -from misskaty.core.decorator.ratelimiter import ratelimiter -from misskaty.helper import SUPPORTED_URL_REGEX, progress_for_pyrogram, get_random_string -from misskaty.vars import COMMAND_HANDLER - - -async def slowpics_collection(message, file_name, path): - """ - Uploads image(s) to https://slow.pics/ from a specified directory. - """ - - msg = await kirimPesan(message, "uploading generated screenshots to slow.pics.", quote=True) - - img_list = os.listdir(path) - data = { - "collectionName": f"{unquote(file_name)}", - "hentai": "false", - "optimizeImages": "false", - "public": "false", - } - - for i in range(0, len(img_list)): - data[f"images[{i}].name"] = img_list[i] - data[f"images[{i}].file"] = ( - img_list[i], - open(f"{path}/{img_list[i]}", "rb"), - "image/png", - ) - - with requests.Session() as client: - client.get("https://slow.pics/api/collection") - files = MultipartEncoder(data) - length = str(files.len) - - headers = { - "Accept": "*/*", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "en-US,en;q=0.5", - "Content-Length": length, - "Content-Type": files.content_type, - "Origin": "https://slow.pics/", - "Referer": "https://slow.pics/collection", - "Sec-Fetch-Mode": "cors", - "Sec-Fetch-Site": "same-origin", - "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36", - "X-XSRF-TOKEN": client.cookies.get_dict()["XSRF-TOKEN"]} - - response = client.post("https://slow.pics/api/collection", data=files, headers=headers) - await msg.edit( - f"File Name: `{unquote(file_name)}`\n\nFrames: https://slow.pics/c/{response.text}", - disable_web_page_preview=True) - - -async def generate_ss_from_file( - message, - replymsg, - file_name, - frame_count, - file_duration -): - """ - Generates screenshots from partially/fully downloaded files using ffmpeg. - """ - - await editPesan(replymsg, f"Generating **{frame_count}** screnshots from `{unquote(file_name)}`, please wait...") - - rand_str = get_random_string(7) - os.mkdir(f"screenshot_{rand_str}") - - loop_count = frame_count - while loop_count != 0: - - random_timestamp = random.uniform(1, file_duration) - timestamp = str(datetime.timedelta(seconds=int(random_timestamp))) - outputpath = f"screenshot_{rand_str}/{(frame_count - loop_count) + 1}.png" - - ffmpeg_command = f"mediaextract -y -ss {timestamp} -i '{file_name}' -vframes 1 {outputpath}" - args = shlex.split(ffmpeg_command) - - shell = await asyncio.create_subprocess_exec(*args, stdout=asyncio.subprocess.PIPE, - stderr=asyncio.subprocess.PIPE) - - stdout, stderr = await shell.communicate() - result = str(stdout.decode().strip()) + str(stderr.decode().strip()) - - if "File ended prematurely" in result: - loop_count += 1 - loop_count -= 1 - - await hapusPesan(replymsg) - await slowpics_collection(message, file_name, path=f"{os.getcwd()}/screenshot_{rand_str}") - - shutil.rmtree(f"screenshot_{rand_str}") - os.remove(file_name) - - -async def generate_ss_from_link( - message, - replymsg, - file_url, - headers, - file_name, - frame_count, - file_duration -): - """ - Generates screenshots from direct download links using ffmpeg. - """ - - await editPesan(replymsg, f"Generating **{frame_count}** screnshots from `{unquote(file_name)}`, please wait...") - - rand_str = get_random_string(7) - os.mkdir(f"screenshot_{rand_str}") - - loop_count = frame_count - while loop_count != 0: - random_timestamp = random.uniform(1, file_duration) - timestamp = str(datetime.timedelta(seconds=int(random_timestamp))) - outputpath = f"screenshot_{rand_str}/{(frame_count - loop_count) + 1}.png" - - ffmpeg_command = f"mediaextract -headers '{headers}' -y -ss {timestamp} -i {file_url} -vframes 1 {outputpath}" - args = shlex.split(ffmpeg_command) - - shell = await asyncio.create_subprocess_exec(*args, stdout=asyncio.subprocess.PIPE, - stderr=asyncio.subprocess.PIPE) - - _, __ = await shell.communicate() - loop_count -= 1 - await asyncio.sleep(3) - - await hapusPesan(replymsg) - await slowpics_collection(message, file_name, path=f"{os.getcwd()}/screenshot_{rand_str}") - shutil.rmtree(f"screenshot_{rand_str}") - - -async def ddl_screenshot(message, frame_count, url): - """ - Generates Screenshots from Direct Download links. - """ - - replymsg = await message.reply_text(f"Checking direct download url....**", quote=True) - - try: - - file_url = f"'{url}'" - file_name = re.search(".+/(.+)", url).group(1) - - total_duration = subprocess.check_output( - f"ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 {file_url}", - shell=True).decode("utf-8") - total_duration = float(total_duration.strip()) - - headers = "user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4136.7 Safari/537.36" - - await generate_ss_from_link( - message, - replymsg, - file_url, - headers, - file_name, - frame_count, - file_duration=float(total_duration)) - - except MessageNotModified: - pass - except Exception: - return await replymsg.edit( - f"Something went wrong with the given url. Make sure that url is downloadable video file wich is non ip specific and should return proper response code without any required headers") - - -async def telegram_screenshot(client, message, frame_count): - """ - Generates Screenshots from Telegram Video Files. - """ - - replymsg = message.reply_to_message - if replymsg.text: - return await kirimPesan(message, "Reply to a proper video file to Generate Screenshots. **", quote=True) - - elif replymsg.media.value == "video": - media = replymsg.video - - elif replymsg.media.value == "document": - media = replymsg.document - - else: - return await kirimPesan(message, "can only generate screenshots from video file....", quote=True) - - file_name = str(media.file_name) - mime = media.mime_type - size = media.file_size - - if replymsg.media.value == "document" and "video" not in mime: - return await kirimPesan(message, "Can only generate screenshots from video file....", quote=True) - - # Downloading partial file. - msg = await kirimPesan(message, f"Downloading partial video file....", quote=True) - - if int(size) <= 200000000: - c_time = time.time() - await replymsg.download( - os.path.join(os.getcwd(), file_name), - progress=progress_for_pyrogram, - progress_args=("Trying to download..", msg, c_time) - ) - downloaded_percentage = 100 # (100% download) - - else: - limit = ((25 * size) / 100) / 1000000 - async for chunk in client.stream_media(replymsg, limit=int(limit)): - with open(file_name, "ab") as file: - file.write(chunk) - - downloaded_percentage = 25 - - await msg.edit("Partial file downloaded....") - # Partial file downloaded - - mediainfo_json = json.loads(subprocess.check_output(["mediainfo", file_name, "--Output=JSON"]).decode("utf-8")) - total_duration = mediainfo_json["media"]["track"][0]["Duration"] - - if downloaded_percentage == 100: - partial_file_duration = float(total_duration) - else: - partial_file_duration = (downloaded_percentage * float(total_duration)) / 100 - - await generate_ss_from_file( - message, - msg, - file_name, - frame_count, - file_duration=partial_file_duration) - - -@app.on_message(filters.command("genss2", COMMAND_HANDLER)) -@ratelimiter -async def genscreenshotv2(client, message): - replied_message = message.reply_to_message - if replied_message: - try: - user_input = message.text.split(None, 1)[1] - frame_count = int(user_input.strip()) - except: - frame_count = 5 - - if frame_count > 15: - frame_count = 15 - return await telegram_screenshot(client, message, frame_count) - - if len(message.command) < 2: - mediainfo_usage = "Generates video frame screenshot from Telegram files or direct download links." - return await kirimPesan(message, mediainfo_usage, quote=True) - - user_input = message.text.split(None, 1)[1] - if "|" in user_input: - - frame_count = user_input.split("|")[-1].strip() - url = user_input.split("|")[0].strip() - - try: - frame_count = int(frame_count) - except: - frame_count = 5 - if frame_count > 15: - frame_count = 15 - - else: - frame_count = 5 - url = user_input.split("|")[0].strip() - - for (key, value) in SUPPORTED_URL_REGEX.items(): - if bool(re.search(Rf"{key}", url)): - if value == "ddl": - return await ddl_screenshot(message, frame_count, url) - return await kirimPesan(message, "This type of link is not supported.", quote=True) \ No newline at end of file diff --git a/misskaty/plugins/mediainfov2.py b/misskaty/plugins/mediainfov2.py deleted file mode 100644 index f018adad..00000000 --- a/misskaty/plugins/mediainfov2.py +++ /dev/null @@ -1,124 +0,0 @@ -import os -import re -import subprocess -import time -from urllib.parse import unquote - -from pyrogram import filters - -from misskaty import app -from misskaty.core.message_utils import * -from misskaty.core.decorator.ratelimiter import ratelimiter -from misskaty.helper import (SUPPORTED_URL_REGEX, post_to_telegraph, - progress_for_pyrogram, runcmd) -from misskaty.vars import COMMAND_HANDLER -from utils import get_file_id - - -async def ddl_mediainfo(_, message, url): - """ - Generates Mediainfo from a Direct Download Link. - """ - - try: - reply_msg = await kirimPesan(message, "Generating Mediainfo, Please wait..", quote=True) - output_ = await runcmd(f'mediainfo "{url}"') - out = output_[0] if len(output_) != 0 else None - content = f""" -MissKatyBot MediaInfo -
-DETAILS -
{out or 'Not Supported'}
- """ - output = await post_to_telegraph(False, "MissKaty MediaInfo", content) - - await editPesan(reply_msg, f"**Link :** `{url}`\n\n**Mediainfo :** {output}", disable_web_page_preview=True) - - except Exception as err: - await hapusPesan(reply_msg) - await kirimPesan(message, f"Something went wrong while generating Mediainfo from the given url.\n\nERR: {err}", quote=True) - - -async def telegram_mediainfo(client, message): - """ - Generates Mediainfo from a Telegram File. - """ - - replymsg = message.reply_to_message - - if replymsg.text: - return await kirimPesan(message, "Reply to a proper media file for generating Mediainfo.**", quote=True) - - elif replymsg.media.value == 'video': - media = replymsg.video - - elif replymsg.media.value == 'audio': - media = replymsg.audio - - elif replymsg.media.value == 'document': - media = replymsg.document - - elif replymsg.media.value == 'voice': - media = replymsg.voice - - else: - return await kirimPesan(message, "This type of media is not supported for generating Mediainfo.**", quote=True) - - filename = str(media.file_name) - mime = media.mime_type - size = media.file_size - - reply_msg = await kirimPesan(message, "Generating Mediainfo, Please wait..", quote=True) - - if int(size) <= 50000000: - c_time = time.time() - await replymsg.download( - os.path.join(os.getcwd(), filename), - progress=progress_for_pyrogram, - progress_args=("Trying to download..", reply_msg, c_time) - ) - - else: - async for chunk in client.stream_media(replymsg, limit=10): - with open(filename, 'ab') as f: - f.write(chunk) - - try: - output_ = await runcmd(f'mediainfo "{filename}"') - out = output_[0] if len(output_) != 0 else None - file_info = get_file_id(replymsg) - content = f""" -MissKatyBot MediaInfo -JSON -
{file_info}.type
-
-DETAILS -
{out or 'Not Supported'}
- """ - output = await post_to_telegraph(False, "MissKaty MediaInfo", content) - - await editPesan(reply_msg, f"**File Name :** `{filename}`\n\n**Mediainfo :** {output}", disable_web_page_preview=True) - os.remove(filename) - - except Exception as err: - await hapusPesan(reply_msg) - await kirimPesan(message, f"Something went wrong while generating Mediainfo of replied Telegram file.\n\nERR: {err}", quote=True) - - -@ratelimiter -@app.on_message(filters.command("mediainfo2", COMMAND_HANDLER)) -async def mediainfo(client, message): - mediainfo_usage = f"**Generate mediainfo from Telegram files or direct download links. Reply to any telegram file or just pass the link after the command." - - if message.reply_to_message: - return await telegram_mediainfo(client, message) - - elif len(message.command) < 2: - return await kirimPesan(message, mediainfo_usage, quote=True) - - user_url = message.text.split(None, 1)[1].split(" ")[0] - for (key, value) in SUPPORTED_URL_REGEX.items(): - if bool(re.search(FR"{key}", user_url)): - if value == "ddl": - return await ddl_mediainfo(client, message, url=user_url) - await kirimPesan(message, "This type of URL is not supported.", quote=True) \ No newline at end of file