|
|
|
|
|
|
|
|
|
|
|
|
|
""" |
|
✘ Commands Available - |
|
|
|
• `{i}mediainfo <reply to media>/<file path>/<url>` |
|
To get info about it. |
|
|
|
• `{i}rotate <degree/angle> <reply to media>` |
|
Rotate any video/photo/media.. |
|
Note : for video it should be angle of 90's |
|
""" |
|
import os |
|
import time |
|
from datetime import datetime as dt |
|
|
|
from pyUltroid.fns.misc import rotate_image |
|
from pyUltroid.fns.tools import make_html_telegraph |
|
|
|
from . import ( |
|
LOGS, |
|
Telegraph, |
|
bash, |
|
downloader, |
|
get_string, |
|
upload_file, |
|
is_url_ok, |
|
mediainfo, |
|
ultroid_cmd, |
|
) |
|
|
|
try: |
|
import cv2 |
|
except ImportError: |
|
LOGS.info("WARNING: 'cv2' not found!") |
|
cv2 = None |
|
|
|
|
|
@ultroid_cmd(pattern="mediainfo( (.*)|$)") |
|
async def mi(e): |
|
r = await e.get_reply_message() |
|
match = e.pattern_match.group(1).strip() |
|
taime = time.time() |
|
extra = "" |
|
if r and r.media: |
|
xx = mediainfo(r.media) |
|
murl = r.media.stringify() |
|
url = await make_html_telegraph("Mediainfo", f"<pre>{murl}</pre>") |
|
extra = f"**[{xx}]({url})**\n\n" |
|
e = await e.eor(f"{extra}`Loading More...`", link_preview=False) |
|
|
|
if hasattr(r.media, "document"): |
|
file = r.media.document |
|
mime_type = file.mime_type |
|
filename = r.file.name |
|
if not filename: |
|
if "audio" in mime_type: |
|
filename = "audio_" + dt.now().isoformat("_", "seconds") + ".ogg" |
|
elif "video" in mime_type: |
|
filename = "video_" + dt.now().isoformat("_", "seconds") + ".mp4" |
|
dl = await downloader( |
|
f"resources/downloads/{filename}", |
|
file, |
|
e, |
|
taime, |
|
f"{extra}`Loading More...`", |
|
) |
|
|
|
naam = dl.name |
|
else: |
|
naam = await r.download_media() |
|
elif match and ( |
|
os.path.isfile(match) |
|
or (match.startswith("https://") and (await is_url_ok(match))) |
|
): |
|
naam, xx = match, "file" |
|
else: |
|
return await e.eor(get_string("cvt_3"), time=5) |
|
out, er = await bash(f"mediainfo '{naam}'") |
|
if er: |
|
LOGS.info(er) |
|
out = extra or str(er) |
|
return await e.edit(out, link_preview=False) |
|
makehtml = "" |
|
if naam.endswith((".jpg", ".png")): |
|
if os.path.exists(naam): |
|
med = upload_file(naam) |
|
else: |
|
med = match |
|
makehtml += f"<img src='{med}'><br>" |
|
for line in out.split("\n"): |
|
line = line.strip() |
|
if not line: |
|
makehtml += "<br>" |
|
elif ":" not in line: |
|
makehtml += f"<h3>{line}</h3>" |
|
else: |
|
makehtml += f"<p>{line}</p>" |
|
try: |
|
urll = await make_html_telegraph("Mediainfo", makehtml) |
|
except Exception as er: |
|
LOGS.exception(er) |
|
return |
|
await e.eor(f"{extra}[{get_string('mdi_1')}]({urll})", link_preview=False) |
|
if not match: |
|
os.remove(naam) |
|
|
|
|
|
@ultroid_cmd(pattern="rotate( (.*)|$)") |
|
async def rotate_(ult): |
|
match = ult.pattern_match.group(1).strip() |
|
if not ult.is_reply: |
|
return await ult.eor("`Reply to a media...`") |
|
if match: |
|
try: |
|
match = int(match) |
|
except ValueError: |
|
match = None |
|
if not match: |
|
return await ult.eor("`Please provide a valid angle to rotate media..`") |
|
reply = await ult.get_reply_message() |
|
msg = await ult.eor(get_string("com_1")) |
|
photo = reply.game.photo if reply.game else None |
|
if reply.video: |
|
media = await reply.download_media() |
|
file = f"{media}.mp4" |
|
await bash( |
|
f'ffmpeg -i "{media}" -c copy -metadata:s:v:0 rotate={match} "{file}" -y' |
|
) |
|
elif photo or reply.photo or reply.sticker: |
|
media = await ult.client.download_media(photo or reply) |
|
img = cv2.imread(media) |
|
new_ = rotate_image(img, match) |
|
file = "ult.png" |
|
cv2.imwrite(file, new_) |
|
else: |
|
return await msg.edit("`Unsupported Media..\nReply to Photo/Video`") |
|
if os.path.exists(file): |
|
await ult.client.send_file( |
|
ult.chat_id, file=file, video_note=bool(reply.video_note), reply_to=reply.id |
|
) |
|
os.remove(media) |
|
await msg.try_delete() |
|
|