import cross from util.media import MediaInfo class MastodonPost(cross.Post): def __init__( self, status: dict, tokens: list[cross.Token], media_attachments: list[MediaInfo], ) -> None: super().__init__() self.id = status["id"] self.parent_id = status.get("in_reply_to_id") self.tokens = tokens self.content_type = status.get("content_type", "text/plain") self.timestamp = status["created_at"] self.media_attachments = media_attachments self.spoiler = status.get("spoiler_text") self.language = [status["language"]] if status.get("language") else [] self.sensitive = status.get("sensitive", False) self.url = status.get("url") def get_id(self) -> str: return self.id def get_parent_id(self) -> str | None: return self.parent_id def get_tokens(self) -> list[cross.Token]: return self.tokens def get_text_type(self) -> str: return self.content_type def get_timestamp(self) -> str: return self.timestamp def get_attachments(self) -> list[MediaInfo]: return self.media_attachments def get_spoiler(self) -> str | None: return self.spoiler def get_languages(self) -> list[str]: return self.language def is_sensitive(self) -> bool: return self.sensitive or (self.spoiler is not None and self.spoiler != "") def get_post_url(self) -> str | None: return self.url