Spaces:
Paused
Paused
| #!/usr/bin/env python3 | |
| # -*- coding: utf-8 -*- | |
| # (c) Shrimadhav U K | |
| # the logging things | |
| import logging | |
| logging.basicConfig(level=logging.DEBUG, | |
| format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') | |
| logger = logging.getLogger(__name__) | |
| import numpy | |
| import os | |
| from PIL import Image | |
| import time | |
| # the secret configuration specific things | |
| if bool(os.environ.get("WEBHOOK", False)): | |
| from sample_config import Config | |
| else: | |
| from config import Config | |
| # the Strings used for this "thing" | |
| from translation import Translation | |
| import pyrogram | |
| logging.getLogger("pyrogram").setLevel(logging.WARNING) | |
| async def generate_custom_thumbnail(bot, update): | |
| if update.from_user.id not in Config.AUTH_USERS: | |
| if update.reply_to_message is not None: | |
| reply_message = update.reply_to_message | |
| if reply_message.media_group_id is not None: | |
| download_location = Config.DOWNLOAD_LOCATION + "/" + str(update.from_user.id) + "/" + str(reply_message.media_group_id) + "/" | |
| save_final_image = download_location + str(round(time.time())) + ".jpg" | |
| list_im = os.listdir(download_location) | |
| if len(list_im) == 2: | |
| imgs = [ Image.open(download_location + i) for i in list_im ] | |
| inm_aesph = sorted([(numpy.sum(i.size), i.size) for i in imgs]) | |
| min_shape = inm_aesph[1][1] | |
| imgs_comb = numpy.hstack(numpy.asarray(i.resize(min_shape)) for i in imgs) | |
| imgs_comb = Image.fromarray(imgs_comb) | |
| # combine: https://stackoverflow.com/a/30228789/4723940 | |
| imgs_comb.save(save_final_image) | |
| # send | |
| user = await bot.get_me() | |
| mention = user["mention"] | |
| await bot.send_photo( | |
| chat_id=update.chat.id, | |
| photo=save_final_image, | |
| caption=Translation.CUSTOM_CAPTION_UL_FILE.format(mention), | |
| reply_to_message_id=update.message_id | |
| ) | |
| else: | |
| await bot.send_message( | |
| chat_id=update.chat.id, | |
| text=Translation.ERR_ONLY_TWO_MEDIA_IN_ALBUM, | |
| reply_to_message_id=update.message_id | |
| ) | |
| try: | |
| [os.remove(download_location + i) for i in list_im ] | |
| os.remove(download_location) | |
| except: | |
| pass | |
| else: | |
| await bot.send_message( | |
| chat_id=update.chat.id, | |
| text=Translation.REPLY_TO_MEDIA_ALBUM_TO_GEN_THUMB, | |
| reply_to_message_id=update.message_id | |
| ) | |
| else: | |
| await bot.send_message( | |
| chat_id=update.chat.id, | |
| text=Translation.REPLY_TO_MEDIA_ALBUM_TO_GEN_THUMB, | |
| reply_to_message_id=update.message_id | |
| ) | |
| async def save_photo(bot, update): | |
| if update.from_user.id not in Config.AUTH_USERS: | |
| if update.media_group_id is not None: | |
| # album is sent | |
| download_location = Config.DOWNLOAD_LOCATION + "/" + str(update.from_user.id) + "/" + str(update.media_group_id) + "/" | |
| # create download directory, if not exist | |
| if not os.path.isdir(download_location): | |
| os.makedirs(download_location) | |
| await bot.download_media( | |
| message=update, | |
| file_name=download_location | |
| ) | |
| else: | |
| # received single photo | |
| download_location = Config.DOWNLOAD_LOCATION + "/" + str(update.from_user.id) + ".jpg" | |
| await bot.download_media( | |
| message=update, | |
| file_name=download_location | |
| ) | |
| await bot.send_message( | |
| chat_id=update.chat.id, | |
| text=Translation.SAVED_CUSTOM_THUMB_NAIL, | |
| reply_to_message_id=update.message_id | |
| ) | |
| async def delthumbnail(bot, update): | |
| if update.from_user.id not in Config.AUTH_USERS: | |
| download_location = Config.DOWNLOAD_LOCATION + "/" + str(update.from_user.id) | |
| try: | |
| os.remove(download_location + ".jpg") | |
| # os.remove(download_location + ".json") | |
| except: | |
| pass | |
| await bot.send_message( | |
| chat_id=update.chat.id, | |
| text=Translation.DEL_ETED_CUSTOM_THUMB_NAIL, | |
| reply_to_message_id=update.message_id | |
| ) | |