d24e26fb32
* In library rework + Monitored/Unmonitored statuses * address comments + format
63 lines
1.7 KiB
Python
63 lines
1.7 KiB
Python
from infrastructure.msgspec_fastapi import AppStruct
|
|
|
|
|
|
class ExternalLink(AppStruct):
|
|
type: str
|
|
url: str
|
|
label: str | list[str]
|
|
category: str = "other"
|
|
|
|
def __post_init__(self) -> None:
|
|
if isinstance(self.label, list):
|
|
object.__setattr__(self, "label", self.label[0] if self.label else self.type)
|
|
|
|
|
|
class LifeSpan(AppStruct):
|
|
begin: str | None = None
|
|
end: str | None = None
|
|
ended: str | None = None
|
|
|
|
|
|
class ReleaseItem(AppStruct):
|
|
id: str | None = None
|
|
title: str | None = None
|
|
type: str | None = None
|
|
first_release_date: str | None = None
|
|
year: int | None = None
|
|
in_library: bool = False
|
|
requested: bool = False
|
|
monitored: bool = False
|
|
|
|
|
|
class ArtistInfo(AppStruct):
|
|
name: str
|
|
musicbrainz_id: str
|
|
disambiguation: str | None = None
|
|
type: str | None = None
|
|
country: str | None = None
|
|
life_span: LifeSpan | None = None
|
|
description: str | None = None
|
|
image: str | None = None
|
|
fanart_url: str | None = None
|
|
banner_url: str | None = None
|
|
thumb_url: str | None = None
|
|
fanart_url_2: str | None = None
|
|
fanart_url_3: str | None = None
|
|
fanart_url_4: str | None = None
|
|
wide_thumb_url: str | None = None
|
|
logo_url: str | None = None
|
|
clearart_url: str | None = None
|
|
cutout_url: str | None = None
|
|
tags: list[str] = []
|
|
aliases: list[str] = []
|
|
external_links: list[ExternalLink] = []
|
|
in_library: bool = False
|
|
in_lidarr: bool = False
|
|
monitored: bool = False
|
|
auto_download: bool = False
|
|
albums: list[ReleaseItem] = []
|
|
singles: list[ReleaseItem] = []
|
|
eps: list[ReleaseItem] = []
|
|
release_group_count: int = 0
|
|
service_status: dict[str, str] | None = None
|