Spaces:
Running
Running
# Ultroid - UserBot | |
# Copyright (C) 2021-2023 TeamUltroid | |
# | |
# This file is a part of < https://github.com/TeamUltroid/Ultroid/ > | |
# PLease read the GNU Affero General Public License in | |
# <https://www.github.com/TeamUltroid/Ultroid/blob/main/LICENSE/>. | |
""" | |
β Commands Available - | |
β’ `{i}border <reply to photo/sticker>` | |
To create border around that media.. | |
Ex - `{i}border 12,22,23` | |
- `{i}border 12,22,23 ; width (in number)` | |
β’ `{i}grey <reply to any media>` | |
To make it black nd white. | |
β’ `{i}color <reply to any Black nd White media>` | |
To make it Colorfull. | |
β’ `{i}toon <reply to any media>` | |
To make it toon. | |
β’ `{i}danger <reply to any media>` | |
To make it look Danger. | |
β’ `{i}negative <reply to any media>` | |
To make negative image. | |
β’ `{i}blur <reply to any media>` | |
To make it blurry. | |
β’ `{i}quad <reply to any media>` | |
create a Vortex. | |
β’ `{i}mirror <reply to any media>` | |
To create mirror pic. | |
β’ `{i}flip <reply to any media>` | |
To make it flip. | |
β’ `{i}sketch <reply to any media>` | |
To draw its sketch. | |
β’ `{i}blue <reply to any media>` | |
just cool. | |
β’ `{i}csample <color name /color code>` | |
example : `{i}csample red` | |
`{i}csample #ffffff` | |
β’ `{i}pixelator <reply image>` | |
Create a Pixelated Image.. | |
""" | |
import os | |
from . import LOGS, con | |
try: | |
import cv2 | |
except ImportError: | |
LOGS.error(f"{__file__}: OpenCv not Installed.") | |
import numpy as np | |
try: | |
from PIL import Image | |
except ImportError: | |
Image = None | |
LOGS.info(f"{__file__}: PIL not Installed.") | |
from telegraph import upload_file as upf | |
from telethon.errors.rpcerrorlist import ( | |
ChatSendMediaForbiddenError, | |
MessageDeleteForbiddenError, | |
) | |
from . import ( | |
Redis, | |
async_searcher, | |
download_file, | |
get_string, | |
requests, | |
udB, | |
ultroid_cmd, | |
) | |
async def _(event): | |
reply = await event.get_reply_message() | |
if not (reply and reply.media): | |
return await event.eor("`Reply To a Black and White Image`") | |
xx = await event.eor("`Coloring image π¨ποΈ...`") | |
image = await reply.download_media() | |
img = cv2.VideoCapture(image) | |
ret, frame = img.read() | |
cv2.imwrite("ult.jpg", frame) | |
if udB.get_key("DEEP_API"): | |
key = Redis("DEEP_API") | |
else: | |
key = "quickstart-QUdJIGlzIGNvbWluZy4uLi4K" | |
r = requests.post( | |
"https://api.deepai.org/api/colorizer", | |
files={"image": open("ult.jpg", "rb")}, | |
headers={"api-key": key}, | |
) | |
os.remove("ult.jpg") | |
os.remove(image) | |
if "status" in r.json(): | |
return await event.edit( | |
r.json()["status"] + "\nGet api nd set `{i}setdb DEEP_API key`" | |
) | |
r_json = r.json()["output_url"] | |
await event.client.send_file(event.chat_id, r_json, reply_to=reply) | |
await xx.delete() | |
async def ult_tools(event): | |
match = event.pattern_match.group(1) | |
ureply = await event.get_reply_message() | |
if not (ureply and (ureply.media)): | |
await event.eor(get_string("cvt_3")) | |
return | |
ultt = await ureply.download_media() | |
xx = await event.eor(get_string("com_1")) | |
if ultt.endswith(".tgs"): | |
xx = await xx.edit(get_string("sts_9")) | |
file = await con.convert(ultt, convert_to="png", outname="ult") | |
ult = cv2.imread(file) | |
if match == "grey": | |
ultroid = cv2.cvtColor(ult, cv2.COLOR_BGR2GRAY) | |
elif match == "blur": | |
ultroid = cv2.GaussianBlur(ult, (35, 35), 0) | |
elif match == "negative": | |
ultroid = cv2.bitwise_not(ult) | |
elif match == "danger": | |
dan = cv2.cvtColor(ult, cv2.COLOR_BGR2RGB) | |
ultroid = cv2.cvtColor(dan, cv2.COLOR_HSV2BGR) | |
elif match == "mirror": | |
ish = cv2.flip(ult, 1) | |
ultroid = cv2.hconcat([ult, ish]) | |
elif match == "flip": | |
trn = cv2.flip(ult, 1) | |
ish = cv2.rotate(trn, cv2.ROTATE_180) | |
ultroid = cv2.vconcat([ult, ish]) | |
elif match == "quad": | |
ult = cv2.imread(file) | |
roid = cv2.flip(ult, 1) | |
mici = cv2.hconcat([ult, roid]) | |
fr = cv2.flip(mici, 1) | |
trn = cv2.rotate(fr, cv2.ROTATE_180) | |
ultroid = cv2.vconcat([mici, trn]) | |
elif match == "sketch": | |
gray_image = cv2.cvtColor(ult, cv2.COLOR_BGR2GRAY) | |
inverted_gray_image = 255 - gray_image | |
blurred_img = cv2.GaussianBlur(inverted_gray_image, (21, 21), 0) | |
inverted_blurred_img = 255 - blurred_img | |
ultroid = cv2.divide(gray_image, inverted_blurred_img, scale=256.0) | |
elif match == "toon": | |
height, width, _ = ult.shape | |
samples = np.zeros([height * width, 3], dtype=np.float32) | |
count = 0 | |
for x in range(height): | |
for y in range(width): | |
samples[count] = ult[x][y] | |
count += 1 | |
_, labels, centers = cv2.kmeans( | |
samples, | |
12, | |
None, | |
(cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10000, 0.0001), | |
5, | |
cv2.KMEANS_PP_CENTERS, | |
) | |
centers = np.uint8(centers) | |
ish = centers[labels.flatten()] | |
ultroid = ish.reshape(ult.shape) | |
cv2.imwrite("ult.jpg", ultroid) | |
await ureply.reply( | |
file="ult.jpg", | |
force_document=False, | |
) | |
await xx.delete() | |
os.remove("ult.jpg") | |
os.remove(file) | |
async def sampl(ult): | |
if color := ult.pattern_match.group(1).strip(): | |
img = Image.new("RGB", (200, 100), f"{color}") | |
img.save("csample.png") | |
try: | |
try: | |
await ult.delete() | |
await ult.respond(f"Colour Sample for `{color}` !", file="csample.png") | |
except MessageDeleteForbiddenError: | |
await ult.reply(f"Colour Sample for `{color}` !", file="csample.png") | |
except ChatSendMediaForbiddenError: | |
await ult.eor("Umm! Sending Media is disabled here!") | |
else: | |
await ult.eor("Wrong Color Name/Hex Code specified!") | |
async def ultd(event): | |
ureply = await event.get_reply_message() | |
xx = await event.eor("`...`") | |
if not (ureply and (ureply.media)): | |
await xx.edit(get_string("cvt_3")) | |
return | |
ultt = await ureply.download_media() | |
if ultt.endswith(".tgs"): | |
await xx.edit(get_string("sts_9")) | |
file = await con.convert(ultt, convert_to="png", outname="ult") | |
got = upf(file) | |
lnk = f"https://graph.org{got[0]}" | |
r = await async_searcher( | |
f"https://nekobot.xyz/api/imagegen?type=blurpify&image={lnk}", re_json=True | |
) | |
ms = r.get("message") | |
if not r["success"]: | |
return await xx.edit(ms) | |
await download_file(ms, "ult.png") | |
img = Image.open("ult.png").convert("RGB") | |
img.save("ult.webp", "webp") | |
await event.client.send_file( | |
event.chat_id, | |
"ult.webp", | |
force_document=False, | |
reply_to=event.reply_to_msg_id, | |
) | |
await xx.delete() | |
os.remove("ult.png") | |
os.remove("ult.webp") | |
os.remove(ultt) | |
async def ok(event): | |
hm = await event.get_reply_message() | |
if not (hm and (hm.photo or hm.sticker)): | |
return await event.eor("`Reply to Sticker or Photo..`") | |
col = event.pattern_match.group(1).strip() | |
wh = 20 | |
if not col: | |
col = [255, 255, 255] | |
else: | |
try: | |
if ";" in col: | |
col_ = col.split(";", maxsplit=1) | |
wh = int(col_[1]) | |
col = col_[0] | |
col = [int(col) for col in col.split(",")[:2]] | |
except ValueError: | |
return await event.eor("`Not a Valid Input...`") | |
okla = await hm.download_media() | |
img1 = cv2.imread(okla) | |
constant = cv2.copyMakeBorder(img1, wh, wh, wh, wh, cv2.BORDER_CONSTANT, value=col) | |
cv2.imwrite("output.png", constant) | |
await event.client.send_file(event.chat.id, "output.png") | |
os.remove("output.png") | |
os.remove(okla) | |
await event.delete() | |
async def pixelator(event): | |
reply_message = await event.get_reply_message() | |
if not (reply_message and (reply_message.photo or reply_message.sticker)): | |
return await event.eor("`Reply to a photo`") | |
hw = 50 | |
try: | |
hw = int(event.pattern_match.group(1).strip()) | |
except (ValueError, TypeError): | |
pass | |
msg = await event.eor(get_string("com_1")) | |
image = await reply_message.download_media() | |
input_ = cv2.imread(image) | |
height, width = input_.shape[:2] | |
w, h = (hw, hw) | |
temp = cv2.resize(input_, (w, h), interpolation=cv2.INTER_LINEAR) | |
output = cv2.resize(temp, (width, height), interpolation=cv2.INTER_NEAREST) | |
cv2.imwrite("output.jpg", output) | |
await msg.respond("β’ Pixelated by Ultroid", file="output.jpg") | |
await msg.delete() | |
os.remove("output.jpg") | |
os.remove(image) | |