41 lines
1.5 KiB
Python
41 lines
1.5 KiB
Python
import json
|
|
import random
|
|
import os
|
|
|
|
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
|
|
|
|
api_key = os.environ.get('R34_API_KEY')
|
|
api_user = os.environ.get('R34_UID')
|
|
|
|
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&api_key='+api_key+'&user_id='+api_user+'&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))
|