···
media_attachments: list[cross.MediaAttachment] = []
82
-
for attachment in status['media_attachments']:
82
+
for attachment in status.get('media_attachments', []):
media_attachments.append(MastodonAttachment(attachment))
self.media_attachments = media_attachments
87
-
self.tokens = util.tokenize_html(status['content'])
87
+
self.tokens = util.tokenize_html(status.get('content', ''))
def get_tokens(self) -> list[cross.Token]:
92
-
def get_parent_id(self) -> str:
93
-
return self.status['in_reply_to_id']
92
+
def get_parent_id(self) -> str | None:
93
+
return self.status.get('in_reply_to_id')
return util.safe_get(self.status, 'spoiler_text', '')
···
101
+
def get_languages(self) -> list[str]:
102
+
if self.status.get('language'):
103
+
return [self.status['language']]
def is_sensitive(self) -> bool:
102
-
return self.status['sensitive']
107
+
return self.status.get('sensitive', False)
def get_attachments(self) -> list[cross.MediaAttachment]:
return self.media_attachments
···
async def listen(self, outputs: list[cross.Output], submit: Callable[[Callable[[], Any]], Any]):
uri = f"{self.streaming}/api/v1/streaming?stream=user&access_token={self.token}"
243
-
async with websockets.connect(uri, extra_headers={
244
-
"User-Agent": "XPost/0.0.2"
247
-
message = await ws.recv()
248
-
event: dict = json.loads(message)
249
-
submit(lambda: self._on_post(outputs, str(event.get('event')), str(event.get('payload'))))
249
+
async for ws in websockets.connect(uri, extra_headers={"User-Agent": "XPost/0.0.2"}):
252
+
message = await ws.recv()
253
+
event: dict = json.loads(message)
254
+
submit(lambda: self._on_post(outputs, str(event.get('event')), str(event.get('payload'))))
255
+
except websockets.ConnectionClosedError as e:
256
+
LOGGER.error(e, stack_info=True, exc_info=True)
257
+
LOGGER.info("Reconnecting to %s...", self.streaming)