from dataclasses import dataclass from typing import List, Optional from marshmallow import EXCLUDE @dataclass class ExternalIds: isrc: str class Meta: unknown = EXCLUDE @dataclass class AssetImage: height: int width: int url: str class Meta: unknown = EXCLUDE @dataclass class TrackArtist: name: str class Meta: unknown = EXCLUDE @dataclass class AlbumTrack: id: str name: str class Meta: unknown = EXCLUDE @dataclass class AlbumTracksInfo: items: List[AlbumTrack] total: int class Meta: unknown = EXCLUDE @dataclass class Album: id: str name: str images: List[AssetImage] artists: List[TrackArtist] tracks: Optional[AlbumTracksInfo] class Meta: unknown = EXCLUDE @dataclass class Track: id: str name: str external_ids: ExternalIds album: Album class Meta: unknown = EXCLUDE @dataclass class TracksSearchResponse: items: List[Track] class Meta: unknown = EXCLUDE @dataclass class AlbumsSearchResponse: items: List[Album] class Meta: unknown = EXCLUDE @dataclass class ApolloSearchResponse: tracks: Optional[TracksSearchResponse] albums: Optional[AlbumsSearchResponse] class Meta: unknown = EXCLUDE @dataclass class ApolloSpotifyPlaylistOwner: id: str display_name: Optional[str] class Meta: unknown = EXCLUDE @dataclass class PlaylistImageModel: url: str width: Optional[int] height: Optional[int] class Meta: unknown = EXCLUDE @dataclass class ApolloSpotifyPlaylist: id: str name: Optional[str] owner: Optional[ApolloSpotifyPlaylistOwner] images: List[PlaylistImageModel] class Meta: unknown = EXCLUDE @dataclass class ApolloSpotifyPlaylistsItems: items: List[ApolloSpotifyPlaylist] class Meta: unknown = EXCLUDE @dataclass class ApolloSpotifyPlaylistsResponse: playlists: ApolloSpotifyPlaylistsItems class Meta: unknown = EXCLUDE @dataclass class ApolloApplePlaylistAttributes: name: str curatorName: Optional[str] artwork: Optional[PlaylistImageModel] class Meta: unknown = EXCLUDE @dataclass class ApolloApplePlaylist: id: str attributes: Optional[ApolloApplePlaylistAttributes] class Meta: unknown = EXCLUDE @dataclass class ApolloApplePlaylistsData: data: List[ApolloApplePlaylist] class Meta: unknown = EXCLUDE @dataclass class ApolloApplePlaylistsResults: playlists: Optional[ApolloApplePlaylistsData] class Meta: unknown = EXCLUDE @dataclass class ApolloApplePlaylistsResponse: results: ApolloApplePlaylistsResults class Meta: unknown = EXCLUDE