frappe/env/lib/python3.12/site-packages/pyyoutube/models/member.py

97 lines
2.9 KiB
Python

"""
These are member related models.
"""
from dataclasses import dataclass, field
from typing import List, Optional
from .base import BaseModel
from .common import BaseApiResponse
from .mixins import DatetimeTimeMixin
@dataclass
class MemberSnippetMemberDetails(BaseModel):
"""
A class representing the member snippet member detail.
Refer: https://developers.google.com/youtube/v3/docs/members#snippet.memberDetails
"""
channelId: Optional[str] = field(default=None)
channelUrl: Optional[str] = field(default=None, repr=False)
displayName: Optional[str] = field(default=None, repr=False)
profileImageUrl: Optional[str] = field(default=None, repr=False)
@dataclass
class MemberSnippetMembershipsDuration(BaseModel, DatetimeTimeMixin):
memberSince: Optional[str] = field(default=None)
memberTotalDurationMonths: Optional[int] = field(default=None, repr=False)
@dataclass
class MemberSnippetMembershipsDurationAtLevel(BaseModel):
level: Optional[str] = field(default=None)
memberSince: Optional[str] = field(default=None, repr=False)
memberTotalDurationMonths: Optional[int] = field(default=None, repr=False)
@dataclass
class MemberSnippetMembershipsDetails(BaseModel):
"""
A class representing the member snippet membership detail.
Refer: https://developers.google.com/youtube/v3/docs/members#snippet.membershipsDetails
"""
highestAccessibleLevel: Optional[str] = field(default=None)
highestAccessibleLevelDisplayName: Optional[str] = field(default=None)
accessibleLevels: Optional[List[str]] = field(default=None, repr=False)
membershipsDuration: Optional[MemberSnippetMembershipsDuration] = field(
default=None, repr=False
)
membershipsDurationAtLevel: Optional[
List[MemberSnippetMembershipsDurationAtLevel]
] = field(default=None, repr=False)
@dataclass
class MemberSnippet(BaseModel):
"""
A class representing the member snippet info.
Refer: https://developers.google.com/youtube/v3/docs/members#snippet
"""
creatorChannelId: Optional[str] = field(default=None)
memberDetails: Optional[MemberSnippetMemberDetails] = field(
default=None, repr=False
)
membershipsDetails: Optional[MemberSnippetMembershipsDetails] = field(
default=None, repr=False
)
@dataclass
class Member(BaseModel):
"""
A class representing the member info.
Refer: https://developers.google.com/youtube/v3/docs/members
"""
kind: Optional[str] = field(default=None)
etag: Optional[str] = field(default=None, repr=False)
snippet: Optional[MemberSnippet] = field(default=None, repr=False)
@dataclass
class MemberListResponse(BaseApiResponse):
"""
A class representing the member's retrieve response info.
Refer: https://developers.google.com/youtube/v3/docs/members/list#response
"""
items: Optional[List[Member]] = field(default=None, repr=False)