anydlbot / plugins /custom_thumbnail.py
imseldrith's picture
Upload 6 files
013b9a2
raw
history blame
4.83 kB
#!/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)
@pyrogram.Client.on_message(pyrogram.filters.command(["genthumbnail"]))
async def generate_custom_thumbnail(bot, update):
if update.from_user.id 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
)
@pyrogram.Client.on_message(pyrogram.filters.photo)
async def save_photo(bot, update):
if update.from_user.id 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
)
@pyrogram.Client.on_message(pyrogram.filters.command(["delthumbnail"]))
async def delthumbnail(bot, update):
if update.from_user.id 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
)