Spaces:
Running
Running
| from datetime import timedelta | |
| from enum import Enum | |
| from typing import Any, Optional | |
| from hibiapi.utils.cache import cache_config | |
| from hibiapi.utils.config import APIConfig | |
| from hibiapi.utils.decorators import enum_auto_doc | |
| from hibiapi.utils.net import catch_network_error | |
| from hibiapi.utils.routing import BaseEndpoint, dont_route | |
| Config = APIConfig("wallpaper") | |
| class WallpaperCategoryType(str, Enum): | |
| """壁纸分类""" | |
| girl = "girl" | |
| """女生""" | |
| animal = "animal" | |
| """动物""" | |
| landscape = "landscape" | |
| """自然""" | |
| anime = "anime" | |
| """二次元""" | |
| drawn = "drawn" | |
| """手绘""" | |
| mechanics = "mechanics" | |
| """机械""" | |
| boy = "boy" | |
| """男生""" | |
| game = "game" | |
| """游戏""" | |
| text = "text" | |
| """文字""" | |
| CATEGORY: dict[WallpaperCategoryType, str] = { | |
| WallpaperCategoryType.girl: "4e4d610cdf714d2966000000", | |
| WallpaperCategoryType.animal: "4e4d610cdf714d2966000001", | |
| WallpaperCategoryType.landscape: "4e4d610cdf714d2966000002", | |
| WallpaperCategoryType.anime: "4e4d610cdf714d2966000003", | |
| WallpaperCategoryType.drawn: "4e4d610cdf714d2966000004", | |
| WallpaperCategoryType.mechanics: "4e4d610cdf714d2966000005", | |
| WallpaperCategoryType.boy: "4e4d610cdf714d2966000006", | |
| WallpaperCategoryType.game: "4e4d610cdf714d2966000007", | |
| WallpaperCategoryType.text: "5109e04e48d5b9364ae9ac45", | |
| } | |
| class WallpaperOrderType(str, Enum): | |
| """壁纸排序方式""" | |
| hot = "hot" | |
| """热门""" | |
| new = "new" | |
| """最新""" | |
| class WallpaperEndpoint(BaseEndpoint): | |
| base = "http://service.aibizhi.adesk.com" | |
| async def request( | |
| self, endpoint: str, *, params: Optional[dict[str, Any]] = None | |
| ) -> dict[str, Any]: | |
| response = await self.client.get( | |
| self._join( | |
| base=WallpaperEndpoint.base, | |
| endpoint=endpoint, | |
| params=params or {}, | |
| ) | |
| ) | |
| return response.json() | |
| # 壁纸有防盗链token, 不建议长时间缓存 | |
| async def wallpaper( | |
| self, | |
| *, | |
| category: WallpaperCategoryType, | |
| limit: int = 20, | |
| skip: int = 0, | |
| adult: bool = True, | |
| order: WallpaperOrderType = WallpaperOrderType.hot, | |
| ): | |
| return await self.request( | |
| "v1/wallpaper/category/{category}/wallpaper", | |
| params={ | |
| "limit": limit, | |
| "skip": skip, | |
| "adult": adult, | |
| "order": order, | |
| "first": 0, | |
| "category": CATEGORY[category], | |
| }, | |
| ) | |
| # 壁纸有防盗链token, 不建议长时间缓存 | |
| async def vertical( | |
| self, | |
| *, | |
| category: WallpaperCategoryType, | |
| limit: int = 20, | |
| skip: int = 0, | |
| adult: bool = True, | |
| order: WallpaperOrderType = WallpaperOrderType.hot, | |
| ): | |
| return await self.request( | |
| "v1/vertical/category/{category}/vertical", | |
| params={ | |
| "limit": limit, | |
| "skip": skip, | |
| "adult": adult, | |
| "order": order, | |
| "first": 0, | |
| "category": CATEGORY[category], | |
| }, | |
| ) | |