| | |
| | |
| | |
| | |
| | |
| | |
| | """ |
| | ✘ 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() |
| |
|