import json import random from typing import Type, Optional from mautrix.util.config import BaseProxyConfig, ConfigUpdateHelper from maubot import Plugin, MessageEvent from maubot.handlers import command from urllib.parse import urlparse, parse_qs class R34Bot(Plugin): @command.new("r34") @command.argument("pattern", pass_raw=True, required=True) async def r34(self, evt: MessageEvent, pattern: Optional[str]) -> None: if (pattern): tags=pattern.replace(' ','+') api_url='https://api.rule34.xxx/index.php?page=dapi&s=post&q=index&tags='+tags+"&limit=100&json=1" async with self.http.get(api_url) as resp: response_json = await resp.json() self.log.debug(str(response_json)) results = [] for item in response_json: results.append(item['id']) self.log.debug(str(results)) random_result = random.choice(results) url = 'https://rule34.xxx/index.php?page=post&s=view&id='+str(random_result) await evt.respond(url) else: api_url='https://rule34.xxx/index.php?page=post&s=random' async with self.http.get(api_url) as resp: self.log.debug(str(resp)) parsed = urlparse(str(resp.url)) await evt.respond('https://rule34.xxx/index.php?'+str(parsed.query))