summaryrefslogtreecommitdiff
path: root/ATRI/plugins/setu/data_source.py
diff options
context:
space:
mode:
Diffstat (limited to 'ATRI/plugins/setu/data_source.py')
-rw-r--r--ATRI/plugins/setu/data_source.py90
1 files changed, 90 insertions, 0 deletions
diff --git a/ATRI/plugins/setu/data_source.py b/ATRI/plugins/setu/data_source.py
new file mode 100644
index 0000000..4070fd5
--- /dev/null
+++ b/ATRI/plugins/setu/data_source.py
@@ -0,0 +1,90 @@
+from random import choice
+from nonebot.adapters.cqhttp import MessageSegment
+
+from ATRI.service import Service
+from ATRI.rule import is_in_service
+from ATRI.utils import request
+
+
+LOLICON_URL = "https://api.lolicon.app/setu/v2"
+SETU_TEMP_FORMAT = "https://pixiv.cat/{p_id}.{ext}" # 为何要这样组,因为 i.pixiv.cat 不稳定!
+SCHEDULER_FORMAT = """
+是{tag}哦~❤
+{setu}
+"""
+
+
+class Setu(Service):
+
+ def __init__(self):
+ Service.__init__(self, "涩图", "hso!", rule=is_in_service("涩图"))
+
+ @staticmethod
+ async def random_setu() -> tuple:
+ """
+ 随机涩图.
+ """
+ res = await request.get(LOLICON_URL)
+ data: dict = await res.json()
+ temp_data: dict = data.get("data", list())[0]
+
+ title = temp_data.get("title", "木陰のねこ")
+ p_id = temp_data.get("pid", 88124144)
+ ext = temp_data.get("ext", "jpg")
+ url = SETU_TEMP_FORMAT.format(
+ p_id=p_id,
+ ext=ext
+ )
+ setu = MessageSegment.image(url)
+ return setu, title, p_id
+
+ @staticmethod
+ async def tag_setu(tag: str) -> tuple:
+ """
+ 指定tag涩图.
+ """
+ url = LOLICON_URL + f"?tag={tag}"
+ res = await request.get(url)
+ data: dict = await res.json()
+
+ temp_data: dict = data.get("data", list())[0]
+ if not temp_data:
+ is_ok = False
+ is_ok = True
+
+ title = temp_data.get("title", "木陰のねこ")
+ p_id = temp_data.get("pid", 88124144)
+ ext = temp_data.get("ext", "jpg")
+ url = SETU_TEMP_FORMAT.format(
+ p_id=p_id,
+ ext=ext
+ )
+ setu = MessageSegment.image(url)
+ return setu, title, p_id, is_ok
+
+ @staticmethod
+ async def scheduler() -> str:
+ """
+ 每隔指定时间随机抽取一个群发送涩图.
+ 格式:
+ 是{tag}哦~❤
+ {setu}
+ """
+ res = await request.get(LOLICON_URL)
+ data: dict = await res.json()
+ temp_data: dict = data.get("data", list())[0]
+
+ p_id = temp_data.get("pid", 88124144)
+ tag = choice(temp_data.get("tags", ["女孩子"]))
+ ext = temp_data.get("ext", "jpg")
+
+ url = SETU_TEMP_FORMAT.format(
+ p_id=p_id,
+ ext=ext
+ )
+ setu = MessageSegment.image(url)
+ repo = SCHEDULER_FORMAT.format(
+ tag=tag,
+ setu=setu
+ )
+ return repo