Files
musicseerr/backend/repositories/lidarr/config.py
T
Harvey a69a26852e Cut down unnecessary logging (#48)
* Cut down unnecessary logging

* fix format etc

* fix checks

* fix tests
2026-04-14 00:02:38 +01:00

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")