Source code for mi.wrapper.models.note

from datetime import datetime
from typing import Any, Dict, List, Optional

from mi.types.note import NotePayload, ReactionPayload, RenotePayload
from mi.utils import upper_to_lower
from mi.wrapper.models.drive import RawFile
from mi.wrapper.models.emoji import RawEmoji
from mi.wrapper.models.poll import RawPoll
from mi.wrapper.models.user import RawUser


[docs]class RawRenote: """ Attributes ---------- id : str created_at : datetime user_id :str user : RawUser content: Optional[str], default=None cw : Optional[str], default=None visibility : str renote_count : int replies_count : int reactions emojis file_ids : List[str] files reply_id renote_id uri poll Optional[RawPoll] """ __slots__ = ('id', 'created_at', 'user_id', 'user', 'content', 'cw', 'visibility', 'renote_count', 'replies_count', 'replies_count', 'reactions', 'emojis', 'file_ids', 'files', 'reply_id', 'renote_id', 'uri', 'poll') def __init__(self, data: RenotePayload): self.id: str = data["id"] self.created_at: datetime = datetime.strptime(data["created_at"], '%Y-%m-%dT%H:%M:%S.%fZ') self.user_id: str = data["user_id"] self.user: RawUser = RawUser(data['user']) self.content: Optional[str] = data.get("text", None) self.cw: Optional[str] = data["cw"] self.visibility: str = data["visibility"] self.renote_count: int = data["renote_count"] self.replies_count: int = data["replies_count"] self.reactions = data["reactions"] # TODO:型探す self.emojis = data["emojis"] # TODO:型探す self.file_ids: List[str] = data["file_ids"] self.files = data["files"] self.reply_id = data["reply_id"] self.files = data["files"] self.reply_id = data["reply_id"] self.renote_id = data["renote_id"] self.uri = data.get("uri") self.poll: Optional[RawPoll] = RawPoll(data["poll"]) if data.get("poll") else None
class RawReaction: """ Attributes ---------- id : Optional[str], default=None created_at : Optional[datetime], default=None type : Optional[str], default=None is_read : bool user : Optional[RawUser], default=None note : Optional[RawNote], default=None reaction : str """ __slots__ = ('id', 'created_at', 'type', 'is_read', 'user', 'note', 'reaction') def __init__(self, data: ReactionPayload): self.id: Optional[str] = data.get('id') self.created_at: Optional[str] = datetime.strptime(data["created_at"], '%Y-%m-%dT%H:%M:%S.%fZ') if data.get( 'created_at') else None self.type: Optional[str] = data.get('type') self.is_read: bool = bool(data.get('is_read')) self.user: Optional[RawUser] = RawUser(data['user']) if data.get('user') else None self.note: Optional[RawNote] = RawNote(data['note']) if data.get('note') else None self.reaction: str = data['reaction']
[docs]class RawNote: """ Attributes ---------- id : str created_at : datetime user_id : str author : RawUser content : Optional[str] cw : Optional[str] renote : Optional[RawRenote] visibility : Optional[str] renote_count : Optional[int] replies_count : Optional[int] reactions : Optional[Dict[str, Any]] emojis : List[RawEmoji] file_ids : Optional[List[str]] files : List[RawFile] reply_id : Optional[str] renote_id : Optional[str] poll : Optional[RawPoll] visible_user_ids : Optional[List[str]] via_mobile : bool local_only : bool extract_mentions : bool extract_hashtags : bool extract_emojis : bool preview : bool media_ids : Optional[List[str]] field : Optional[dict] tags : Optional[List[str]] channel_id : Optional[str] """ __slots__ = ( 'id', 'created_at', 'user_id', 'author', 'content', 'cw', 'renote', 'visibility', 'renote_count', 'replies_count', 'reactions', 'emojis', 'file_ids', 'files', 'reply_id', 'renote_id', 'uri', 'poll', 'visible_user_ids', 'via_mobile', 'local_only', 'extract_mentions', 'extract_hashtags', 'extract_emojis', 'preview', 'media_ids', 'field', 'tags', 'channel_id') def __init__(self, data: NotePayload): self.id: str = data["id"] self.created_at: datetime = datetime.strptime(data["created_at"], '%Y-%m-%dT%H:%M:%S.%fZ') self.user_id: str = data["user_id"] self.author: RawUser = RawUser(data['user']) self.content: Optional[str] = data.get("text") self.cw: Optional[str] = data.get("cw") self.renote: Optional[RawRenote] = RawRenote(data['renote']) if data.get('renote') else None self.visibility: Optional[str] = data.get("visibility") # This may be an optional self.renote_count: Optional[int] = data.get("renote_count") # TODO: Optionalかどうか self.replies_count: Optional[int] = data.get("replies_count") # TODO: Optionalかどうか self.reactions: Dict[str, Any] = data["reactions"] self.emojis: List[RawEmoji] = [RawEmoji(i) for i in data["emojis"]] self.file_ids: Optional[List[str]] = data["file_ids"] self.files: List[RawFile] = [RawFile(upper_to_lower(i)) for i in data["files"]] self.reply_id: Optional[str] = data["reply_id"] self.renote_id: Optional[str] = data["renote_id"] self.poll: Optional[RawPoll] = RawPoll(data["poll"]) if data.get("poll") else None self.visible_user_ids: Optional[List[str]] = data.get("visible_user_ids", []) self.via_mobile: bool = bool(data.get("via_mobile", False)) self.local_only: bool = bool(data.get("local_only", False)) self.extract_mentions: bool = bool(data.get("extract_mentions")) self.extract_hashtags: bool = bool(data.get("extract_hashtags")) self.extract_emojis: bool = bool(data.get("extract_emojis")) self.preview: bool = bool(data.get("preview")) self.media_ids: Optional[List[str]] = data.get("media_ids") self.field: Optional[dict] = {} self.tags: Optional[List[str]] = data.get("tags", []) self.channel_id: Optional[str] = data.get("channel_id")