| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- """
- MIT License
- Copyright (c) 2024 TheHamkerCat
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
- """
- import math
- import os
- from PIL import Image
- from pyrogram import Client, raw
- from pyrogram.file_id import FileId
- STICKER_DIMENSIONS = (512, 512)
- async def resize_file_to_sticker_size(file_path: str) -> str:
- im = Image.open(file_path)
- if (im.width, im.height) < STICKER_DIMENSIONS:
- size1 = im.width
- size2 = im.height
- if im.width > im.height:
- scale = STICKER_DIMENSIONS[0] / size1
- size1new = STICKER_DIMENSIONS[0]
- size2new = size2 * scale
- else:
- scale = STICKER_DIMENSIONS[1] / size2
- size1new = size1 * scale
- size2new = STICKER_DIMENSIONS[1]
- size1new = math.floor(size1new)
- size2new = math.floor(size2new)
- sizenew = (size1new, size2new)
- im = im.resize(sizenew)
- else:
- im.thumbnail(STICKER_DIMENSIONS)
- try:
- os.remove(file_path)
- file_path = f"{file_path}.png"
- return file_path
- finally:
- im.save(file_path)
- async def upload_document(
- client: Client, file_path: str, chat_id: int
- ) -> raw.base.InputDocument:
- media = await client.invoke(
- raw.functions.messages.UploadMedia(
- peer=await client.resolve_peer(chat_id),
- media=raw.types.InputMediaUploadedDocument(
- mime_type=client.guess_mime_type(file_path)
- or "application/zip",
- file=await client.save_file(file_path),
- attributes=[
- raw.types.DocumentAttributeFilename(
- file_name=os.path.basename(file_path)
- )
- ],
- ),
- )
- )
- return raw.types.InputDocument(
- id=media.document.id,
- access_hash=media.document.access_hash,
- file_reference=media.document.file_reference,
- )
- async def get_document_from_file_id(
- file_id: str,
- ) -> raw.base.InputDocument:
- decoded = FileId.decode(file_id)
- return raw.types.InputDocument(
- id=decoded.media_id,
- access_hash=decoded.access_hash,
- file_reference=decoded.file_reference,
- )
|