Улучшение обработки фильтров и полей в запросах к VNDB API

This commit is contained in:
2026-05-01 16:54:10 +03:00
parent b9ffe18504
commit a3c484b20b
2 changed files with 19 additions and 37 deletions

View File

@@ -51,7 +51,7 @@ class VndbClient:
def _safe_filters(self, filters: Optional[List[Any]]) -> List[Any]:
if not filters:
return ["id", ">", 0]
return []
return filters
async def _request(
@@ -135,27 +135,10 @@ class VndbClient:
compact_filters: bool = False,
normalized_filters: bool = False,
) -> Dict[str, Any]:
"""
Query visual novels
Args:
filters: Filter conditions
fields: Fields to retrieve
sort: Sort field (id, title, released, rating, votecount, searchrank)
reverse: Sort in descending order
results: Number of results per page (max 100)
page: Page number starting from 1
count: Include total count
user: User ID for user-specific filters
compact_filters: Include compact filter representation
normalized_filters: Include normalized filter representation
Returns:
Query results
"""
data = {
"filters": filters or [],
"fields": ",".join(fields) if fields else "id",
"fields": ",".join(fields) if fields else "id,title,image.url",
"sort": sort,
"reverse": reverse,
"results": results,
@@ -164,9 +147,10 @@ class VndbClient:
"compact_filters": compact_filters,
"normalized_filters": normalized_filters,
}
if user:
data["user"] = user
return await self._request(VndbEndpoint.VN.value, "POST", data)
async def query_release(
@@ -185,7 +169,7 @@ class VndbClient:
"""Query releases"""
data = {
"filters": filters or [],
"fields": ",".join(fields) if fields else "id",
"fields": ",".join(fields) if fields else "id,title",
"sort": sort,
"reverse": reverse,
"results": results,
@@ -213,8 +197,8 @@ class VndbClient:
) -> Dict[str, Any]:
data = {
"filters": self._safe_filters(filters),
"fields": ",".join(fields) if fields else "id,name",
"filters": filters or [],
"fields": ",".join(fields) if fields else "id,name,original,image.url",
"sort": sort,
"reverse": reverse,
"results": results,