<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">import os
from typing import Union

import requests
from pyrogram import Client
from pyrogram.file_id import FileId
from pyrogram.raw.functions.messages import UploadMedia
from pyrogram.raw.types import (
    DocumentAttributeFilename,
    InputDocument,
    InputMediaUploadedDocument,
)
from pyrogram.types import Animation, Audio, Document, Message, Photo, Sticker, Video

from Hellbot.core import Symbols


async def get_metedata(media: Union[Animation, Audio, Document, Photo, Sticker, Video]):
    output = "рџ“„ MetaData:\n\n"
    if isinstance(media, Animation):
        output += f"&lt;b&gt;{Symbols.diamond_2} File ID:&lt;/b&gt; &lt;code&gt;{media.file_id}&lt;/code&gt;\n"
        output += f"&lt;b&gt;{Symbols.diamond_2} Width:&lt;/b&gt; &lt;code&gt;{media.width}&lt;/code&gt;\n"
        output += f"&lt;b&gt;{Symbols.diamond_2} Height:&lt;/b&gt; &lt;code&gt;{media.height}&lt;/code&gt;\n"
        output += (
            f"&lt;b&gt;{Symbols.diamond_2} Duration:&lt;/b&gt; &lt;code&gt;{media.duration}&lt;/code&gt;\n"
        )
        output += (
            f"&lt;b&gt;{Symbols.diamond_2} File Name:&lt;/b&gt; &lt;code&gt;{media.file_name}&lt;/code&gt;\n"
        )
        output += (
            f"&lt;b&gt;{Symbols.diamond_2} Mime Type:&lt;/b&gt; &lt;code&gt;{media.mime_type}&lt;/code&gt;\n"
        )
        output += (
            f"&lt;b&gt;{Symbols.diamond_2} File Size:&lt;/b&gt; &lt;code&gt;{media.file_size}&lt;/code&gt;\n"
        )
        output += f"&lt;b&gt;{Symbols.diamond_2} Date:&lt;/b&gt; &lt;code&gt;{media.date}&lt;/code&gt;\n"
        output += f"&lt;b&gt;{Symbols.diamond_2} File Type:&lt;/b&gt; &lt;code&gt;Animation&lt;/code&gt;\n"
    elif isinstance(media, Audio):
        output += f"&lt;b&gt;{Symbols.diamond_2} File ID:&lt;/b&gt; &lt;code&gt;{media.file_id}&lt;/code&gt;\n"
        output += (
            f"&lt;b&gt;{Symbols.diamond_2} Duration:&lt;/b&gt; &lt;code&gt;{media.duration}&lt;/code&gt;\n"
        )
        output += (
            f"&lt;b&gt;{Symbols.diamond_2} Performer:&lt;/b&gt; &lt;code&gt;{media.performer}&lt;/code&gt;\n"
        )
        output += f"&lt;b&gt;{Symbols.diamond_2} Title:&lt;/b&gt; &lt;code&gt;{media.title}&lt;/code&gt;\n"
        output += (
            f"&lt;b&gt;{Symbols.diamond_2} File Name:&lt;/b&gt; &lt;code&gt;{media.file_name}&lt;/code&gt;\n"
        )
        output += (
            f"&lt;b&gt;{Symbols.diamond_2} Mime Type:&lt;/b&gt; &lt;code&gt;{media.mime_type}&lt;/code&gt;\n"
        )
        output += (
            f"&lt;b&gt;{Symbols.diamond_2} File Size:&lt;/b&gt; &lt;code&gt;{media.file_size}&lt;/code&gt;\n"
        )
        output += f"&lt;b&gt;{Symbols.diamond_2} Date:&lt;/b&gt; &lt;code&gt;{media.date}&lt;/code&gt;\n"
        output += f"&lt;b&gt;{Symbols.diamond_2} File Type:&lt;/b&gt; &lt;code&gt;Audio&lt;/code&gt;\n"
    elif isinstance(media, Document):
        output += f"&lt;b&gt;{Symbols.diamond_2} File ID:&lt;/b&gt; &lt;code&gt;{media.file_id}&lt;/code&gt;\n"
        output += (
            f"&lt;b&gt;{Symbols.diamond_2} File Name:&lt;/b&gt; &lt;code&gt;{media.file_name}&lt;/code&gt;\n"
        )
        output += (
            f"&lt;b&gt;{Symbols.diamond_2} Mime Type:&lt;/b&gt; &lt;code&gt;{media.mime_type}&lt;/code&gt;\n"
        )
        output += (
            f"&lt;b&gt;{Symbols.diamond_2} File Size:&lt;/b&gt; &lt;code&gt;{media.file_size}&lt;/code&gt;\n"
        )
        output += f"&lt;b&gt;{Symbols.diamond_2} Date:&lt;/b&gt; &lt;code&gt;{media.date}&lt;/code&gt;\n"
        output += f"&lt;b&gt;{Symbols.diamond_2} File Type:&lt;/b&gt; &lt;code&gt;Document&lt;/code&gt;\n"
    elif isinstance(media, Photo):
        output += f"&lt;b&gt;{Symbols.diamond_2} File ID:&lt;/b&gt; &lt;code&gt;{media.file_id}&lt;/code&gt;\n"
        output += f"&lt;b&gt;{Symbols.diamond_2} Width:&lt;/b&gt; &lt;code&gt;{media.width}&lt;/code&gt;\n"
        output += f"&lt;b&gt;{Symbols.diamond_2} Height:&lt;/b&gt; &lt;code&gt;{media.height}&lt;/code&gt;\n"
        output += f"&lt;b&gt;{Symbols.diamond_2} File Name:&lt;/b&gt; &lt;code&gt;photo.jpg&lt;/code&gt;\n"
        output += f"&lt;b&gt;{Symbols.diamond_2} Mime Type:&lt;/b&gt; &lt;code&gt;image/jpeg&lt;/code&gt;\n"
        output += (
            f"&lt;b&gt;{Symbols.diamond_2} File Size:&lt;/b&gt; &lt;code&gt;{media.file_size}&lt;/code&gt;\n"
        )
        output += f"&lt;b&gt;{Symbols.diamond_2} Date:&lt;/b&gt; &lt;code&gt;{media.date}&lt;/code&gt;\n"
        output += f"&lt;b&gt;{Symbols.diamond_2} File Type:&lt;/b&gt; &lt;code&gt;Photo&lt;/code&gt;\n"
    elif isinstance(media, Sticker):
        output += f"&lt;b&gt;{Symbols.diamond_2} File ID:&lt;/b&gt; &lt;code&gt;{media.file_id}&lt;/code&gt;\n"
        output += f"&lt;b&gt;{Symbols.diamond_2} Width:&lt;/b&gt; &lt;code&gt;{media.width}&lt;/code&gt;\n"
        output += f"&lt;b&gt;{Symbols.diamond_2} Height:&lt;/b&gt; &lt;code&gt;{media.height}&lt;/code&gt;\n"
        output += (
            f"&lt;b&gt;{Symbols.diamond_2} File Name:&lt;/b&gt; &lt;code&gt;{media.file_name}&lt;/code&gt;\n"
        )
        output += (
            f"&lt;b&gt;{Symbols.diamond_2} Mime Type:&lt;/b&gt; &lt;code&gt;{media.mime_type}&lt;/code&gt;\n"
        )
        output += (
            f"&lt;b&gt;{Symbols.diamond_2} File Size:&lt;/b&gt; &lt;code&gt;{media.file_size}&lt;/code&gt;\n"
        )
        output += f"&lt;b&gt;{Symbols.diamond_2} Date:&lt;/b&gt; &lt;code&gt;{media.date}&lt;/code&gt;\n"
        output += f"&lt;b&gt;{Symbols.diamond_2} Emoji:&lt;/b&gt; &lt;code&gt;{media.emoji}&lt;/code&gt;\n"
        output += (
            f"&lt;b&gt;{Symbols.diamond_2} Set Name:&lt;/b&gt; &lt;code&gt;{media.set_name}&lt;/code&gt;\n"
        )
        output += f"&lt;b&gt;{Symbols.diamond_2} File Type:&lt;/b&gt; &lt;code&gt;Sticker&lt;/code&gt;\n"
    elif isinstance(media, Video):
        output += f"&lt;b&gt;{Symbols.diamond_2} File ID:&lt;/b&gt; &lt;code&gt;{media.file_id}&lt;/code&gt;\n"
        output += f"&lt;b&gt;{Symbols.diamond_2} Width:&lt;/b&gt; &lt;code&gt;{media.width}&lt;/code&gt;\n"
        output += f"&lt;b&gt;{Symbols.diamond_2} Height:&lt;/b&gt; &lt;code&gt;{media.height}&lt;/code&gt;\n"
        output += (
            f"&lt;b&gt;{Symbols.diamond_2} Duration:&lt;/b&gt; &lt;code&gt;{media.duration}&lt;/code&gt;\n"
        )
        output += (
            f"&lt;b&gt;{Symbols.diamond_2} File Name:&lt;/b&gt; &lt;code&gt;{media.file_name}&lt;/code&gt;\n"
        )
        output += (
            f"&lt;b&gt;{Symbols.diamond_2} Mime Type:&lt;/b&gt; &lt;code&gt;{media.mime_type}&lt;/code&gt;\n"
        )
        output += (
            f"&lt;b&gt;{Symbols.diamond_2} File Size:&lt;/b&gt; &lt;code&gt;{media.file_size}&lt;/code&gt;\n"
        )
        output += f"&lt;b&gt;{Symbols.diamond_2} Date:&lt;/b&gt; &lt;code&gt;{media.date}&lt;/code&gt;\n"
        output += f"&lt;b&gt;{Symbols.diamond_2} File Type:&lt;/b&gt; &lt;code&gt;Video&lt;/code&gt;\n"
    else:
        return None

    return output


def get_media_text_ocr(filename: str, api_key: str, language: str = "eng") -&gt; dict:
    payload = {
        "isOverlayRequired": False,
        "apikey": api_key,
        "language": language,
    }

    with open(filename, "rb") as f:
        r = requests.post(
            "https://api.ocr.space/parse/image",
            files={filename: f},
            data=payload,
        )

    return r.json()


async def upload_media(client: Client, chat_id: int, file: str) -&gt; InputDocument:
    media = await client.invoke(
        UploadMedia(
            peer=(await client.resolve_peer(chat_id)),
            media=InputMediaUploadedDocument(
                file=(await client.save_file(file)),
                mime_type=client.guess_mime_type(file) or "application/zip",
                attributes=[
                    DocumentAttributeFilename(file_name=os.path.basename(file))
                ],
                force_file=True,
            ),
        ),
    )

    return InputDocument(
        id=media.document.id,
        access_hash=media.document.access_hash,
        file_reference=media.document.file_reference,
    )


async def get_media_from_id(file_id: str) -&gt; InputDocument:
    file = FileId.decode(file_id)

    return InputDocument(
        id=file.media_id,
        access_hash=file.access_hash,
        file_reference=file.file_reference,
    )


async def get_media_fileid(message: Message) -&gt; str | None:
    file_id = None
    if message.photo:
        file_id = message.photo.file_id
    elif message.animation:
        file_id = message.animation.file_id
    elif message.audio:
        file_id = message.audio.file_id
    elif message.document:
        file_id = message.document.file_id
    elif message.video:
        file_id = message.video.file_id
    elif message.sticker:
        file_id = message.sticker.file_id
    elif message.video_note:
        file_id = message.video_note.file_id
    elif message.voice:
        file_id = message.voice.file_id
    return file_id
</pre></body></html>