social media crossposting tool. 3rd time's the charm
mastodon misskey crossposting bluesky

fixes??? add new stuff to readme

zenfyr.dev 13fa92cb 619099ff

verified
Changed files
+33 -3
+31 -1
README.md
···
## Inputs
### Mastodon WebSocket `mastodon-wss`
listens to the user's home timeline for new posts, crossposts only the public/unlisted ones by the user.
···
## Outputs
### Bluesky
-
in the bluesky block, you can configure who is allowed to reply to and quote the new posts.
```json5
{
···
## Inputs
+
### Bluesky PDS WebSocket
+
+
**this is meant for self-hosted PDSs that don't emmit a billion events per second.** a jetstream version will be available soon.
+
+
listens to repo operation events emmited by the PDS. handle becomes optional if you specify a DID.
+
+
```json5
+
{
+
"type": "bluesky-pds-wss",
+
"handle": "env:BLUESKY_HANDLE",
+
"did": "env:BLUESKY_DID",
+
"pds": "end:BLUESKY_PDS"
+
}
+
```
+
### Mastodon WebSocket `mastodon-wss`
listens to the user's home timeline for new posts, crossposts only the public/unlisted ones by the user.
···
## Outputs
+
### Mastodon API
+
+
no remarks.
+
+
```json5
+
{
+
"type": "mastodon",
+
"token": "env:MASTODON_TOKEN",
+
"instance": "env:MASTODON_INSTNACE",
+
"options": {
+
"visibility": "public"
+
}
+
}
+
```
+
### Bluesky
+
in the bluesky block, you can configure who is allowed to reply to and quote the new posts. handle becomes optional if you specify a DID.
```json5
{
+1 -1
bluesky.py
···
def __init__(self, settings: dict, db: DataBaseWorker) -> None:
self.options = settings.get('options', {})
did, pds = resolve_identity(
-
handle=util.as_envvar(settings.get('hanlde')),
did=util.as_envvar(settings.get('did')),
pds=util.as_envvar(settings.get('pds'))
)
···
def __init__(self, settings: dict, db: DataBaseWorker) -> None:
self.options = settings.get('options', {})
did, pds = resolve_identity(
+
handle=util.as_envvar(settings.get('handle')),
did=util.as_envvar(settings.get('did')),
pds=util.as_envvar(settings.get('pds'))
)
+1 -1
mastodon.py
···
'status': status,
'media_ids': media or [],
'spoiler_text': post.get_cw(),
-
'visibility': 'unlisted',
'content_type': self.text_format,
'language': lang
}
···
'status': status,
'media_ids': media or [],
'spoiler_text': post.get_cw(),
+
'visibility': self.options.get('visibility', 'public'),
'content_type': self.text_format,
'language': lang
}