2
0
mirror of https://github.com/Nick80835/microbot synced 2025-09-05 17:05:52 +00:00
Files
microbot/ubot/modules/sankaku.py

109 lines
2.9 KiB
Python
Raw Normal View History

# SPDX-License-Identifier: GPL-2.0-or-later
2020-06-10 12:11:26 -04:00
from time import time_ns
from ubot.micro_bot import micro_bot
ldr = micro_bot.loader
SAN_URL = "https://capi-v2.sankakucomplex.com/posts"
2020-06-06 11:45:03 -04:00
SAN_SAUCE_URL = "https://beta.sankakucomplex.com/post/show/"
2020-06-10 12:11:26 -04:00
@ldr.add("sanping", sudo=True)
async def sankaku_ping(event):
params = {"page": 1,
"limit": 5,
"tags": f"order:random"}
start = time_ns()
async with ldr.aioclient.get(SAN_URL, params=params) as _:
time_taken_ms = int((time_ns() - start) / 1000000)
await event.reply(f"Sankaku response time -> **{time_taken_ms}**ms")
2020-06-16 19:16:06 -04:00
@ldr.add("san(s|x|q|)(f|)", nsfw=True, userlocking=True)
async def sankaku(event):
safety_arg = event.pattern_match.group(1)
as_file = bool(event.pattern_match.group(2))
rating = ""
if safety_arg == "x":
rating = "rating:explicit"
elif safety_arg == "s":
rating = "rating:safe"
elif safety_arg == "q":
rating = "rating:questionable"
params = {"page": 1,
"limit": 5,
"tags": f"order:random {rating} {event.args}".strip().replace(" ", " ")}
2020-05-09 13:15:08 -04:00
async with ldr.aioclient.get(SAN_URL, params=params) as response:
if response.status == 200:
response = await response.json()
else:
2020-06-06 11:04:14 -04:00
await event.reply(f"An error occurred, response code: **{response.status}**")
return
if not response:
2020-06-06 11:04:14 -04:00
await event.reply(f"No results for query: {event.args}")
return
valid_urls = []
2020-05-03 20:45:35 -04:00
for post in response:
if 'file_url' in post.keys():
2020-06-06 11:45:03 -04:00
valid_urls.append([post['file_url'], post['id']])
if not valid_urls:
2020-06-06 11:04:14 -04:00
await event.reply(f"Failed to find URLs for query: {event.args}")
return
2020-06-06 11:45:03 -04:00
for image in valid_urls:
try:
2020-06-06 11:45:03 -04:00
await event.reply(f"[sauce]({SAN_SAUCE_URL}{image[1]})", file=image[0], force_document=as_file)
return
except:
pass
2020-06-06 11:04:14 -04:00
await event.reply(f"Failed to fetch media for query: {event.args}")
2020-05-16 17:52:29 -04:00
2020-05-21 13:53:11 -04:00
@ldr.add_inline_photo("san(s|x|q|)", default="san")
async def sankaku_inline(event):
safety_arg = event.pattern_match.group(1)
rating = ""
if safety_arg == "x":
rating = "rating:explicit"
elif safety_arg == "s":
rating = "rating:safe"
elif safety_arg == "q":
rating = "rating:questionable"
2020-05-16 17:52:29 -04:00
params = {"page": 1,
2020-05-21 13:53:11 -04:00
"limit": 3,
"tags": f"order:random {rating} {event.args}".strip().replace(" ", " ")}
2020-05-16 17:52:29 -04:00
async with ldr.aioclient.get(SAN_URL, params=params) as response:
if response.status == 200:
response = await response.json()
else:
return None
if not response:
return None
valid_urls = []
for post in response:
if 'file_url' in post.keys():
2020-06-15 13:04:35 -04:00
valid_urls.append([post['file_url'], f"[sauce]({SAN_SAUCE_URL}{post['id']})"])
2020-05-16 17:52:29 -04:00
if not valid_urls:
return None
2020-05-21 13:53:11 -04:00
return valid_urls[:3]