74 lines
2.2 KiB
Python
74 lines
2.2 KiB
Python
"""
|
|
These are playlist related models.
|
|
"""
|
|
from dataclasses import dataclass, field
|
|
from typing import Optional, List
|
|
|
|
from .base import BaseModel
|
|
from .common import BaseApiResponse, BaseResource, Localized, Player, Thumbnails
|
|
from .mixins import DatetimeTimeMixin
|
|
|
|
|
|
@dataclass
|
|
class PlaylistContentDetails(BaseModel):
|
|
"""
|
|
A class representing playlist's content details info.
|
|
|
|
Refer: https://developers.google.com/youtube/v3/docs/playlists#contentDetails
|
|
"""
|
|
|
|
itemCount: Optional[int] = field(default=None)
|
|
|
|
|
|
@dataclass
|
|
class PlaylistSnippet(BaseModel, DatetimeTimeMixin):
|
|
"""
|
|
A class representing the playlist snippet info.
|
|
|
|
Refer: https://developers.google.com/youtube/v3/docs/playlists#snippet
|
|
"""
|
|
|
|
publishedAt: Optional[str] = field(default=None, repr=False)
|
|
channelId: Optional[str] = field(default=None, repr=False)
|
|
title: Optional[str] = field(default=None)
|
|
description: Optional[str] = field(default=None)
|
|
thumbnails: Optional[Thumbnails] = field(default=None, repr=False)
|
|
channelTitle: Optional[str] = field(default=None, repr=False)
|
|
defaultLanguage: Optional[str] = field(default=None, repr=False)
|
|
localized: Optional[Localized] = field(default=None, repr=False)
|
|
|
|
|
|
@dataclass
|
|
class PlaylistStatus(BaseModel):
|
|
"""
|
|
A class representing the playlist status info.
|
|
|
|
Refer: https://developers.google.com/youtube/v3/docs/playlists#status
|
|
"""
|
|
|
|
privacyStatus: Optional[str] = field(default=None)
|
|
|
|
|
|
@dataclass
|
|
class Playlist(BaseResource):
|
|
"""
|
|
A class representing the playlist info.
|
|
|
|
Refer: https://developers.google.com/youtube/v3/docs/playlists
|
|
"""
|
|
|
|
snippet: Optional[PlaylistSnippet] = field(default=None, repr=False)
|
|
status: Optional[PlaylistStatus] = field(default=None, repr=False)
|
|
contentDetails: Optional[PlaylistContentDetails] = field(default=None, repr=False)
|
|
player: Optional[Player] = field(default=None, repr=False)
|
|
|
|
|
|
@dataclass
|
|
class PlaylistListResponse(BaseApiResponse):
|
|
"""
|
|
A class representing the playlist's retrieve response info.
|
|
|
|
Refer: https://developers.google.com/youtube/v3/docs/playlists/list#response_1
|
|
"""
|
|
|
|
items: Optional[List[Playlist]] = field(default=None, repr=False)
|