social media crossposting tool. 3rd time's the charm
mastodon misskey crossposting bluesky
at master 1.5 kB view raw
1import cross 2from util.media import MediaInfo 3 4 5class MastodonPost(cross.Post): 6 def __init__( 7 self, 8 status: dict, 9 tokens: list[cross.Token], 10 media_attachments: list[MediaInfo], 11 ) -> None: 12 super().__init__() 13 self.id = status["id"] 14 self.parent_id = status.get("in_reply_to_id") 15 self.tokens = tokens 16 self.content_type = status.get("content_type", "text/plain") 17 self.timestamp = status["created_at"] 18 self.media_attachments = media_attachments 19 self.spoiler = status.get("spoiler_text") 20 self.language = [status["language"]] if status.get("language") else [] 21 self.sensitive = status.get("sensitive", False) 22 self.url = status.get("url") 23 24 def get_id(self) -> str: 25 return self.id 26 27 def get_parent_id(self) -> str | None: 28 return self.parent_id 29 30 def get_tokens(self) -> list[cross.Token]: 31 return self.tokens 32 33 def get_text_type(self) -> str: 34 return self.content_type 35 36 def get_timestamp(self) -> str: 37 return self.timestamp 38 39 def get_attachments(self) -> list[MediaInfo]: 40 return self.media_attachments 41 42 def get_spoiler(self) -> str | None: 43 return self.spoiler 44 45 def get_languages(self) -> list[str]: 46 return self.language 47 48 def is_sensitive(self) -> bool: 49 return self.sensitive or (self.spoiler is not None and self.spoiler != "") 50 51 def get_post_url(self) -> str | None: 52 return self.url