Spaces:
Runtime error
Runtime error
import os | |
import requests | |
from pyrogram.types import Message | |
from Hellbot.core import ENV | |
from Hellbot.functions.images import remove_bg | |
from Hellbot.functions.media import get_media_text_ocr | |
from Hellbot.functions.paste import spaceBin | |
from . import Config, HelpMenu, db, hellbot, on_message | |
async def readImage(_, message: Message): | |
if not message.reply_to_message or not message.reply_to_message.photo: | |
return await hellbot.delete(message, "Reply to a photo to read text on it.") | |
api_key = await db.get_env(ENV.ocr_api) | |
if not api_key: | |
return await hellbot.delete( | |
message, "To read texts from images you need to setup OCR Space Api key." | |
) | |
language = "eng" | |
if len(message.command) >= 2: | |
language = message.command[1] | |
hell = await hellbot.edit(message, "Reading image...") | |
filename = await message.reply_to_message.download(Config.TEMP_DIR) | |
text = get_media_text_ocr(filename, api_key, language) | |
try: | |
await hellbot.edit(hell, text["ParsedResults"][0]["ParsedText"]) | |
except Exception as e: | |
await hellbot.error(hell, f"`{e}`") | |
os.remove(filename) | |
async def removeBg(_, message: Message): | |
api_key = await db.get_env(ENV.remove_bg_api) | |
if not api_key: | |
return await hellbot.delete( | |
message, "To remove background you need to setup Remove BG Api key." | |
) | |
if message.reply_to_message: | |
if ( | |
message.reply_to_message.document | |
and message.reply_to_message.document.mime_type.lower().startswith("image") | |
): | |
filename = await message.reply_to_message.download(Config.TEMP_DIR) | |
elif message.reply_to_message.photo: | |
filename = await message.reply_to_message.download(Config.TEMP_DIR) | |
elif ( | |
message.reply_to_message.sticker | |
and not message.reply_to_message.sticker.is_animated | |
and not message.reply_to_message.sticker.is_video | |
): | |
filename = await message.reply_to_message.download(Config.TEMP_DIR + "sticker.png") | |
else: | |
return await hellbot.delete( | |
message, "Reply to an image or give the url to remove background." | |
) | |
elif len(message.command) >= 2: | |
resp = requests.get(await hellbot.input(message)) | |
filename = f"{Config.TEMP_DIR}/{message.id}.png" | |
with open(filename, "wb") as f: | |
f.write(resp.content) | |
else: | |
return await hellbot.delete( | |
message, "Reply to an image or give the url to remove background." | |
) | |
hell = await hellbot.edit(message, "Removing background...") | |
try: | |
removed_img = await remove_bg(api_key, filename) | |
doc_file = await message.reply_document( | |
removed_img, | |
caption="π« **Removed Background!**", | |
force_document=True, | |
) | |
await doc_file.reply_photo(removed_img, caption="πΌοΈ **Preview!**") | |
os.remove(filename) | |
os.remove(removed_img) | |
except Exception as e: | |
await hellbot.error(hell, f"`{e}`") | |
async def paste_text(_, message: Message): | |
hell = await hellbot.edit(message, "Pasting text...") | |
text_to_paste = "" | |
extention = "none" | |
if len(message.command) >= 2: | |
text_to_paste = await hellbot.input(message) | |
elif message.reply_to_message.text: | |
text_to_paste = message.reply_to_message.text | |
elif message.reply_to_message.document: | |
filename = await message.reply_to_message.download(Config.TEMP_DIR) | |
with open(filename, "r") as f: | |
text_to_paste = f.read() | |
extention = filename.split(".")[-1] | |
os.remove(filename) | |
else: | |
return await hellbot.delete(message, "Reply to a text to paste it.") | |
try: | |
await hell.edit( | |
f"**π Pasted to:** {spaceBin(text_to_paste, extention)}", | |
disable_web_page_preview=True, | |
) | |
except Exception as e: | |
await hellbot.error(hell, f"`{e}`") | |
async def currencyAPI(_, message: Message): | |
if len(message.command) < 3: | |
return await hellbot.delete(message, "Give currency code to get it's value.") | |
from_code = message.command[1].upper() | |
to_code = message.command[2].upper() | |
apikey = await db.get_env(ENV.currency_api) | |
if not apikey: | |
return await hellbot.delete(message, "Please setup currency api key.") | |
hell = await hellbot.edit(message, "Getting currency value...") | |
url = "https://v6.exchangerate-api.com/v6/{0}/pair/{1}/{2}" | |
resp = requests.get(url.format(apikey, from_code, to_code)) | |
data = resp.json() | |
if data["result"] == "success": | |
await hellbot.edit( | |
hell, | |
f"**π« Currency Exchange Rate** \n\n**π° {data['base_code']} to {data['target_code']}:** `{data['conversion_rate']}`\n\n**π§ Updated At:** `{data['time_last_update_utc']} UTC`", | |
) | |
else: | |
await hellbot.error(hell, f"**Error:** `{data['error-type']}`") | |
async def currencyAPI2(_, message: Message): | |
if len(message.command) < 4: | |
return await hellbot.delete( | |
message, "Give amount and currency codes to get it's value." | |
) | |
try: | |
amount = float(message.command[1]) | |
except Exception: | |
return await hellbot.delete(message, "Give amount in numbers.") | |
from_code = message.command[2].upper() | |
to_code = message.command[3].upper() | |
apikey = await db.get_env(ENV.currency_api) | |
if not apikey: | |
return await hellbot.delete(message, "Please setup currency api key.") | |
hell = await hellbot.edit(message, "Getting currency value...") | |
url = "https://v6.exchangerate-api.com/v6/{0}/pair/{1}/{2}/{3}" | |
resp = requests.get(url.format(apikey, from_code, to_code, amount)) | |
data = resp.json() | |
if data["result"] == "success": | |
await hellbot.edit( | |
hell, | |
f"**π« Currency Exchange Rate** \n\nπ° `{amount} {data['base_code']}` = `{data['conversion_result']} {data['target_code']}` \n**π Conversion Rate:** `{data['conversion_rate']}`\n\n**π§ Updated At:** `{data['time_last_update_utc']} UTC`", | |
) | |
else: | |
await hellbot.error(hell, f"**Error:** `{data['error-type']}`") | |
async def currencyCodes(_, message: Message): | |
hell = await hellbot.edit(message, "Getting currency codes...") | |
apikey = await db.get_env(ENV.currency_api) | |
if not apikey: | |
return await hellbot.delete(hell, "Please setup currency api key.") | |
url = "https://v6.exchangerate-api.com/v6/{0}/codes" | |
resp = requests.get(url.format(apikey)) | |
data = resp.json() | |
supported_codes: list = data["supported_codes"] | |
outStr = "Supported Currency Codes:\n\n" | |
for i, code in enumerate(supported_codes): | |
outStr += f"{i+1}) {code[0]} - {code[1]}\n" | |
paste_link = spaceBin(outStr) | |
await hell.edit( | |
f"**π« Supported Currency Codes:** `{len(supported_codes)}` \n\n**π Paste Link:** {paste_link}", | |
disable_web_page_preview=True, | |
) | |
HelpMenu("utilities").add( | |
"readimage", | |
"<reply to message> <language code (optional)>", | |
"Read the texts on the image and send it as a message.", | |
"read eng", | |
"Need to setup OCR Space Api key from https://ocr.space/ocrapi", | |
).add( | |
"removebg", | |
"<reply to image> or <image url>", | |
"Remove the background of the image and send it as a document. You will need to setup Remove BG Api key.", | |
"removebg https://example.com/image.png", | |
"An alias of 'rmbg' is also available.\nNeed to setup Remove BG Api key from https://www.remove.bg/api", | |
).add( | |
"paste", | |
"<reply to message> or <text>", | |
"Paste the text to spaceb.in and send the link.", | |
"paste", | |
).add( | |
"exchangerate", | |
"<from currency code> <to currency code>", | |
"Get the exchange rate of the given currency codes.", | |
"exchangerate usd inr", | |
"Need to setup currency api from https://www.exchangerate-api.com", | |
).add( | |
"currency", | |
"<amount> <from currency code> <to currency code>", | |
"Get the exchange rate of the given currency codes.", | |
"currency 10 usd inr", | |
"Need to setup currency api from https://www.exchangerate-api.com", | |
).add( | |
"currencies", | |
None, | |
"Get the list of supported currency codes.", | |
"currencies", | |
"Need to setup currency api from https://www.exchangerate-api.com", | |
).info( | |
"Some utilities command!" | |
).done() | |