Karma
commited on
Commit
·
5ec82d0
1
Parent(s):
6c4322b
Update reverse.py
Browse files- Mikobot/plugins/reverse.py +77 -30
Mikobot/plugins/reverse.py
CHANGED
@@ -1,13 +1,21 @@
|
|
1 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
-
import traceback,os
|
4 |
-
from pyrogram import Client,filters, types as t
|
5 |
from Mikobot import app
|
6 |
-
from .
|
7 |
-
|
|
|
8 |
|
9 |
-
|
10 |
-
|
|
|
|
|
11 |
try:
|
12 |
reply = await m.reply_text("`Downloading...`")
|
13 |
file = None
|
@@ -15,8 +23,16 @@ async def reverseImageSearch(_: Client,m: t.Message):
|
|
15 |
return await reply.edit("Reply to an image?")
|
16 |
if m.reply_to_message.document is False or m.reply_to_message.photo is False:
|
17 |
return await reply.edit("Reply to an image?")
|
18 |
-
if
|
19 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
return await reply.edit("Reply to an image?")
|
21 |
file = await m.reply_to_message.download()
|
22 |
else:
|
@@ -26,46 +42,77 @@ async def reverseImageSearch(_: Client,m: t.Message):
|
|
26 |
os.remove(file)
|
27 |
if imgUrl is None:
|
28 |
return await reply.edit("Ran into an error.")
|
29 |
-
output = await ReverseImageSearch("google",f"https://graph.org/{imgUrl[0]}")
|
30 |
if output is None:
|
31 |
return await reply.edit("Ran into an error.")
|
32 |
-
message =
|
33 |
-
names = output[
|
34 |
-
urls = output[
|
35 |
btn = t.InlineKeyboardMarkup(
|
36 |
-
[
|
37 |
-
|
38 |
-
t.InlineKeyboardButton(text="Image URL",url=urls[-1])
|
39 |
-
]
|
40 |
-
])
|
41 |
if len(names) > 10:
|
42 |
-
message = "\n".join(
|
43 |
-
|
|
|
|
|
|
|
|
|
44 |
htmlMessage += "<br/><br/><h3>URLS</h3><br/>"
|
45 |
htmlMessage += f"<br/>".join([f"{url}" for url in urls])
|
46 |
-
htmlMessage +=
|
47 |
-
|
|
|
|
|
48 |
message += f"\n\n[More Results]({url})\nBy @LexicaAPI"
|
49 |
await reply.delete()
|
50 |
-
return await m.reply_text(message,reply_markup=btn)
|
51 |
-
message ="\n".join(
|
|
|
|
|
|
|
|
|
|
|
52 |
await reply.delete()
|
53 |
-
await m.reply_text(f"{message}\n\nBy @LexicaAPI",reply_markup=btn)
|
54 |
except Exception as E:
|
55 |
traceback.print_exc()
|
56 |
return await m.reply_text("Ran into an error.")
|
57 |
|
58 |
-
|
|
|
59 |
try:
|
60 |
-
|
61 |
-
response = await client.post(
|
62 |
f"https://lexica.qewertyy.me/image-reverse/{search_engine}?img_url={img_url}",
|
63 |
)
|
64 |
if response.status_code != 200:
|
65 |
return None
|
66 |
output = response.json()
|
67 |
-
if output[
|
68 |
return None
|
69 |
return output
|
70 |
except Exception as E:
|
71 |
-
raise Exception(f"API Error: {E}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# CREATED BY: @Qewertyy
|
2 |
+
|
3 |
+
# <============================================== IMPORTS =========================================================>
|
4 |
+
import os
|
5 |
+
import traceback
|
6 |
+
|
7 |
+
from pyrogram import Client, filters
|
8 |
+
from pyrogram import types as t
|
9 |
|
|
|
|
|
10 |
from Mikobot import app
|
11 |
+
from Mikobot.state import state
|
12 |
+
|
13 |
+
from .telegraph import telegraph, upload_file
|
14 |
|
15 |
+
|
16 |
+
# <================================================ FUNCTIONS =====================================================>
|
17 |
+
@app.on_message(filters.command(["p", "pp", "reverse", "sauce"]))
|
18 |
+
async def reverseImageSearch(_: Client, m: t.Message):
|
19 |
try:
|
20 |
reply = await m.reply_text("`Downloading...`")
|
21 |
file = None
|
|
|
23 |
return await reply.edit("Reply to an image?")
|
24 |
if m.reply_to_message.document is False or m.reply_to_message.photo is False:
|
25 |
return await reply.edit("Reply to an image?")
|
26 |
+
if (
|
27 |
+
m.reply_to_message.document
|
28 |
+
and m.reply_to_message.document.mime_type
|
29 |
+
in ["image/png", "image/jpg", "image/jpeg"]
|
30 |
+
or m.reply_to_message.photo
|
31 |
+
):
|
32 |
+
if (
|
33 |
+
m.reply_to_message.document
|
34 |
+
and m.reply_to_message.document.file_size > 5242880
|
35 |
+
):
|
36 |
return await reply.edit("Reply to an image?")
|
37 |
file = await m.reply_to_message.download()
|
38 |
else:
|
|
|
42 |
os.remove(file)
|
43 |
if imgUrl is None:
|
44 |
return await reply.edit("Ran into an error.")
|
45 |
+
output = await ReverseImageSearch("google", f"https://graph.org/{imgUrl[0]}")
|
46 |
if output is None:
|
47 |
return await reply.edit("Ran into an error.")
|
48 |
+
message = ""
|
49 |
+
names = output["content"]["bestResults"]["names"]
|
50 |
+
urls = output["content"]["bestResults"]["urls"]
|
51 |
btn = t.InlineKeyboardMarkup(
|
52 |
+
[[t.InlineKeyboardButton(text="IMAGE URL", url=urls[-1])]]
|
53 |
+
)
|
|
|
|
|
|
|
54 |
if len(names) > 10:
|
55 |
+
message = "\n".join(
|
56 |
+
[f"{index+1}. {name}" for index, name in enumerate(names[:10])]
|
57 |
+
)
|
58 |
+
htmlMessage = f"<br/>".join(
|
59 |
+
[f"{index+1}. {name}" for index, name in enumerate(names)]
|
60 |
+
)
|
61 |
htmlMessage += "<br/><br/><h3>URLS</h3><br/>"
|
62 |
htmlMessage += f"<br/>".join([f"{url}" for url in urls])
|
63 |
+
htmlMessage += (
|
64 |
+
"<br/><br/>By <a href='https://lexica.qewertyy.me'>LexicaAPI</a>"
|
65 |
+
)
|
66 |
+
url = telegraph.create_page("More Results", html_content=htmlMessage)
|
67 |
message += f"\n\n[More Results]({url})\nBy @LexicaAPI"
|
68 |
await reply.delete()
|
69 |
+
return await m.reply_text(message, reply_markup=btn)
|
70 |
+
message = "\n".join(
|
71 |
+
[
|
72 |
+
f"{index+1}. {name}"
|
73 |
+
for index, name in enumerate(output["content"]["bestResults"]["names"])
|
74 |
+
]
|
75 |
+
)
|
76 |
await reply.delete()
|
77 |
+
await m.reply_text(f"{message}\n\nBy @LexicaAPI", reply_markup=btn)
|
78 |
except Exception as E:
|
79 |
traceback.print_exc()
|
80 |
return await m.reply_text("Ran into an error.")
|
81 |
|
82 |
+
|
83 |
+
async def ReverseImageSearch(search_engine, img_url) -> dict:
|
84 |
try:
|
85 |
+
response = await state.post(
|
|
|
86 |
f"https://lexica.qewertyy.me/image-reverse/{search_engine}?img_url={img_url}",
|
87 |
)
|
88 |
if response.status_code != 200:
|
89 |
return None
|
90 |
output = response.json()
|
91 |
+
if output["code"] != 2:
|
92 |
return None
|
93 |
return output
|
94 |
except Exception as E:
|
95 |
+
raise Exception(f"API Error: {E}")
|
96 |
+
|
97 |
+
|
98 |
+
# <=================================================== HELP ====================================================>
|
99 |
+
|
100 |
+
|
101 |
+
__help__ = """
|
102 |
+
🖼 *IMAGE REVERSE*
|
103 |
+
|
104 |
+
» `/p`, `/pp`, `/reverse`, `/sauce`: Reverse image search using various search engines.
|
105 |
+
|
106 |
+
➠ *Usage:*
|
107 |
+
Reply to an image with one of the above commands to perform a reverse image search.
|
108 |
+
|
109 |
+
➠ *Example:*
|
110 |
+
» `/p` - Perform a reverse image search.
|
111 |
+
|
112 |
+
➠ *Note:*
|
113 |
+
- Supported image formats: PNG, JPG, JPEG.
|
114 |
+
- Maximum file size: 5 MB.
|
115 |
+
"""
|
116 |
+
|
117 |
+
__mod_name__ = "REVERSE"
|
118 |
+
# <================================================ END =======================================================>
|