2026-03-12 01:18:20 -04:00
|
|
|
from dataclasses import dataclass
|
|
|
|
|
from datetime import datetime
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
|
|
|
class Track:
|
|
|
|
|
id: int
|
|
|
|
|
title: str
|
|
|
|
|
artist: str
|
|
|
|
|
permalink_url: str
|
|
|
|
|
artwork_url: str | None
|
|
|
|
|
duration_ms: int
|
|
|
|
|
license: str
|
|
|
|
|
liked_at: datetime
|
|
|
|
|
raw_json: str
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
|
|
|
class Show:
|
|
|
|
|
id: int
|
|
|
|
|
week_start: datetime
|
|
|
|
|
week_end: datetime
|
|
|
|
|
created_at: datetime
|
2026-03-12 02:09:15 -04:00
|
|
|
episode_number: int | None = None
|
2026-03-12 01:18:20 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
|
|
|
class ShowTrack:
|
|
|
|
|
show_id: int
|
|
|
|
|
track_id: int
|
|
|
|
|
position: int
|