Files
ayako/vndb.py

52 lines
1.4 KiB
Python

import httpx
class VNDBClient:
def __init__(self, base_url):
self.base = base_url.rstrip("/")
self.client = httpx.AsyncClient(timeout=10)
async def _post(self, endpoint, payload):
try:
r = await self.client.post(f"{self.base}/{endpoint}", json=payload)
if r.status_code != 200:
return None
data = r.json()
return data.get("results", [])
except Exception:
return None
async def search_vn(self, query):
query = query.strip()
return await self._post("vn", {
"filters": ["search", query],
"fields": "id,title,original,released,rating,votecount",
"results": 5
})
async def get_vn(self, vid):
res = await self._post("vn", {
"filters": ["id", "=", vid],
"fields": "id,title,original,released,rating,votecount",
"results": 1
})
return res[0] if res else None
async def get_char(self, cid):
res = await self._post("character", {
"filters": ["id", "=", cid],
"fields": "id,name,original",
"results": 1
})
return res[0] if res else None
async def get_release(self, rid):
res = await self._post("release", {
"filters": ["id", "=", rid],
"fields": "id,title,released",
"results": 1
})
return res[0] if res else None