import cross from util.media import MediaInfo class MisskeyPost(cross.Post): def __init__( self, instance_url: str, note: dict, tokens: list[cross.Token], files: list[MediaInfo], ) -> None: super().__init__() self.note = note self.id = note["id"] self.parent_id = note.get("replyId") self.tokens = tokens self.timestamp = note["createdAt"] self.media_attachments = files self.spoiler = note.get("cw") self.sensitive = any( [a.get("isSensitive", False) for a in note.get("files", [])] ) self.url = instance_url + "/notes/" + note["id"] 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 "text/x.misskeymarkdown" 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 [] 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