Files
jellyplist/lidarr/classes.py
2024-12-03 23:11:05 +00:00

174 lines
4.0 KiB
Python

from dataclasses import dataclass, field
from typing import List, Optional
@dataclass
class Image:
url: str
coverType: str
extension: str
remoteUrl: str
@dataclass
class Link:
url: str
name: str
@dataclass
class Ratings:
votes: int
value: float
@dataclass
class AddOptions:
monitor: str
albumsToMonitor: List[str]
monitored: bool
searchForMissingAlbums: bool
@dataclass
class Statistics:
albumCount: int
trackFileCount: int
trackCount: int
totalTrackCount: int
sizeOnDisk: int
percentOfTracks: float
@dataclass
class Member:
name: str
instrument: str
images: List[Image]
@dataclass
class Artist:
mbId: Optional[str] = None
tadbId: Optional[int] = None
discogsId: Optional[int] = None
allMusicId: Optional[str] = None
overview: str = ""
artistType: str = ""
disambiguation: str = ""
links: List[Link] = field(default_factory=list)
nextAlbum: str = ""
lastAlbum: str = ""
images: List[Image] = field(default_factory=list)
members: List[Member] = field(default_factory=list)
remotePoster: str = ""
path: str = ""
qualityProfileId: int = 0
metadataProfileId: int = 0
monitored: bool = False
monitorNewItems: str = ""
rootFolderPath: Optional[str] = None
folder: str = ""
genres: List[str] = field(default_factory=list)
cleanName: str = ""
sortName: str = ""
tags: List[int] = field(default_factory=list)
added: str = ""
addOptions: Optional[AddOptions] = None
ratings: Optional[Ratings] = None
statistics: Optional[Statistics] = None
status : str = ""
ended : bool = False
artistName : str = ""
foreignArtistId : str = ""
id : int = 0
@dataclass
class Media:
mediumNumber: int
mediumName: str
mediumFormat: str
@dataclass
class Release:
id: int
albumId: int
foreignReleaseId: str
title: str
status: str
duration: int
trackCount: int
media: List[Media]
mediumCount: int
disambiguation: str
country: List[str]
label: List[str]
format: str
monitored: bool
@dataclass
class Album:
id: int = 0
title: str = ""
disambiguation: str = ""
overview: str = ""
artistId: int = 0
foreignAlbumId: str = ""
monitored: bool = False
anyReleaseOk: bool = False
profileId: int = 0
duration: int = 0
albumType: str = ""
secondaryTypes: List[str] = field(default_factory=list)
mediumCount: int = 0
ratings: Ratings = None
releaseDate: str = ""
releases: List[Release] = field(default_factory=list)
genres: List[str] = field(default_factory=list)
media: List[Media] = field(default_factory=list)
artist: Artist = field(default_factory=Artist)
images: List[Image] = field(default_factory=list)
links: List[Link] = field(default_factory=list)
lastSearchTime: str = ""
statistics: Statistics = None
addOptions: Optional[dict] = field(default_factory=dict)
remoteCover: str = ""
@dataclass
class RootFolder:
id: int = 0
name: str = ""
path: str = ""
defaultMetadataProfileId: int = 0
defaultQualityProfileId: int = 0
defaultMonitorOption: str = ""
defaultNewItemMonitorOption: str = ""
defaultTags: List[int] = field(default_factory=list)
accessible: bool = False
freeSpace: int = 0
totalSpace: int = 0
@dataclass
class Quality:
id: int = 0
name: str = ""
@dataclass
class Item:
id: int = 0
name: str = ""
quality: Quality = field(default_factory=Quality)
items: List[str] = field(default_factory=list)
allowed: bool = False
@dataclass
class FormatItem:
id: int = 0
format: int = 0
name: str = ""
score: int = 0
@dataclass
class QualityProfile:
id: int = 0
name: str = ""
upgradeAllowed: bool = False
cutoff: int = 0
items: List[Item] = field(default_factory=list)
minFormatScore: int = 0
cutoffFormatScore: int = 0
formatItems: List[FormatItem] = field(default_factory=list)