uploaderbot / plugins /custom_thumbnail.py
rastroberto's picture
Upload 11 files
c7b139e verified
#!/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)
#from helper_funcs.chat_base import TRChatBase
@pyrogram.Client.on_message(pyrogram.filters.command(["generatecustomthumbnail"]))
async def generate_custom_thumbnail(bot, update):
if update.from_user.id in Translation.ALLOWED:
if update.from_user.id in Config.BANNED_USERS:
await bot.delete_messages(
chat_id=update.chat.id,
message_ids=update.id,
revoke=True
)
return
#TRChatBase(update.from_user.id, update.text, "generatecustomthumbnail")
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 True:
# 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
# await bot.send_photo(
# chat_id=update.chat.id,
# photo=save_final_image,
# caption=Translation.CUSTOM_CAPTION_UL_FILE,
# reply_to_message_id=update.id
# )
# else:
await bot.send_message(
chat_id=update.chat.id,
text=Translation.ERR_ONLY_TWO_MEDIA_IN_ALBUM,
reply_to_message_id=update.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.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.id
)
else:
await bot.send_message(
chat_id=update.chat.id,
text=Translation.REPLY_TO_UNALLOWED,
reply_to_message_id=update.id
)
@pyrogram.Client.on_message(pyrogram.filters.photo)
async def save_photo(bot, update):
if update.from_user.id in Translation.ALLOWED:
if update.from_user.id in Config.BANNED_USERS:
await bot.delete_messages(
chat_id=update.chat.id,
message_ids=update.id,
revoke=True
)
return
#TRChatBase(update.from_user.id, update.text, "save_photo")
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.id
)
else:
await bot.send_message(
chat_id=update.chat.id,
text=Translation.REPLY_TO_UNALLOWED,
reply_to_message_id=update.id
)
@pyrogram.Client.on_message(pyrogram.filters.command(["deletethumbnail"]))
async def delete_thumbnail(bot, update):
if update.from_user.id in Translation.ALLOWED:
if update.from_user.id in Config.BANNED_USERS:
await bot.delete_messages(
chat_id=update.chat.id,
message_ids=update.id,
revoke=True
)
return
#TRChatBase(update.from_user.id, update.text, "deletethumbnail")
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.id
)
else:
await bot.send_message(
chat_id=update.chat.id,
text=Translation.REPLY_TO_UNALLOWED,
reply_to_message_id=update.id
)