social media crossposting tool. 3rd time's the charm
mastodon
misskey
crossposting
bluesky
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