a69a26852e
* Cut down unnecessary logging * fix format etc * fix checks * fix tests
62 lines
2.3 KiB
Python
62 lines
2.3 KiB
Python
from typing import Any
|
|
from models.common import ServiceStatus
|
|
from models.request import QueueItem
|
|
from infrastructure.cache.cache_keys import LIDARR_PREFIX
|
|
from .base import LidarrBase
|
|
|
|
LIDARR_QUEUE_KEY = f"{LIDARR_PREFIX}queue"
|
|
LIDARR_QUEUE_TTL = 30
|
|
|
|
|
|
class LidarrConfigRepository(LidarrBase):
|
|
async def get_status(self) -> ServiceStatus:
|
|
try:
|
|
data = await self._get("/api/v1/system/status")
|
|
return ServiceStatus(status="ok", version=data.get("version"))
|
|
except Exception as e: # noqa: BLE001
|
|
return ServiceStatus(status="error", message=str(e))
|
|
|
|
async def get_queue(self) -> list[QueueItem]:
|
|
cached = await self._cache.get(LIDARR_QUEUE_KEY)
|
|
if cached is not None:
|
|
return cached
|
|
|
|
data = await self._get("/api/v1/queue")
|
|
items = data.get("records", []) if isinstance(data, dict) else data
|
|
|
|
queue_items = []
|
|
for item in items:
|
|
album_data = item.get("album", {})
|
|
artist_data = album_data.get("artist", {})
|
|
|
|
queue_items.append(
|
|
QueueItem(
|
|
artist=artist_data.get("artistName", "Unknown"),
|
|
album=album_data.get("title", "Unknown"),
|
|
status=item.get("status", "unknown"),
|
|
progress=None,
|
|
eta=None,
|
|
musicbrainz_id=album_data.get("foreignAlbumId"),
|
|
)
|
|
)
|
|
|
|
await self._cache.set(LIDARR_QUEUE_KEY, queue_items, ttl_seconds=LIDARR_QUEUE_TTL)
|
|
return queue_items
|
|
|
|
async def get_quality_profiles(self) -> list[dict[str, Any]]:
|
|
return await self._get("/api/v1/qualityprofile")
|
|
|
|
async def get_metadata_profiles(self) -> list[dict[str, Any]]:
|
|
return await self._get("/api/v1/metadataprofile")
|
|
|
|
async def get_metadata_profile(self, profile_id: int) -> dict[str, Any]:
|
|
return await self._get(f"/api/v1/metadataprofile/{profile_id}")
|
|
|
|
async def update_metadata_profile(
|
|
self, profile_id: int, profile_data: dict[str, Any]
|
|
) -> dict[str, Any]:
|
|
return await self._put(f"/api/v1/metadataprofile/{profile_id}", profile_data)
|
|
|
|
async def get_root_folders(self) -> list[dict[str, Any]]:
|
|
return await self._get("/api/v1/rootfolder")
|